![](/img/trans.png)
[英]How can I run a powershell script on a target VM using Terraform's aws_ssm_document
[英]Using terraform, unable to add SSM document to aws_cloudwatch_event_target
我對 Terraform 非常陌生,我正在嘗試使用它來復制我通過 AWS 控制台成功創建的內容。
我正在嘗試將“SSM 運行命令”指定為 Cloudwatch 規則的目標,並且可以獲取使用 aws_cloudwatch_event_target 資源定義的所有內容,但“文檔”字段除外。 規則目標和所有其他相關的點點滴滴都已成功創建,但是當我從控制台編輯規則時,文檔部分沒有填寫(下面的屏幕截圖)。 因此,規則未能觸發。
查看 aws_cloudwatch_event_target 的 Terraform 文檔,我看不到要為文檔指定的任何參數,所以我想知道這是否可能? 鑒於似乎涵蓋了所有其他參數,這會很奇怪。
下面是我用來創建目標的代碼 - 那里有硬編碼的東西,但我只是想讓它在這一點上工作。
resource "aws_cloudwatch_event_target" "autogrow" {
rule = "autogrow"
arn = "arn:aws:ssm:eu-west-1:999999999999:document/AWS-RunShellScript"
role_arn = "arn:aws:iam::999999999999:role/ec2-cloudwatch"
run_command_targets {
key = "tag:InstanceIds"
values = ["i-99999999999"]
}
input = <<INPUT
{
"commands": "/data/ssmscript.sh",
"workingDirectory" : "/data",
"executionTimeout" : "300"
}
INPUT
}
是否可以通過 Terraform 做我想做的事情? 它確實通過控制台工作,但我想知道該功能是否還沒有在 Terraform 中? 我希望能夠指定“文檔”參數,但您只能為目標指定“arn”。
任何幫助將不勝感激!
我認為您需要做的是創建其中之一:https ://www.terraform.io/docs/providers/aws/r/ssm_document.html
這將在 AWS 中為您創建一個 SSM 文檔,然后一旦您有了該文檔,您就需要將該文檔與您的實例相關聯,並使用 ssm_document_association。
https://www.terraform.io/docs/providers/aws/r/ssm_association.html
一旦您擁有與您的實例相關聯的文檔,該事件應該能夠通過 cloudwatch 觸發。
您可以創建自己的 SSM 文檔,也可以使用 AWS 制作的文檔。
要獲取 AWS 擁有的文檔內容:
data "aws_ssm_document" "aws_doc" {
name = "AWS-RunShellScript"
document_format = "JSON"
}
output "content" {
value = "${data.aws_ssm_document.aws_doc.content}"
}
參考:https ://www.terraform.io/docs/providers/aws/d/ssm_document.html
通過 cloudformation 創建時,我遇到了文檔沒有被正確選擇的同樣問題。
我做錯了什么?
當我修復 AWS-RunShellScript 的 ARN 時,它在 cloudformation 創建資源后開始顯示在控制台中
arn:aws:ssm:ap-southeast-2::document/AWS-RunShellScript
我查閱的大多數文檔在 ARN 中都有一個帳戶 ID。 刪除帳戶 ID 解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.