使用Terraform部署多个user_data-ps脚本



我已经编写了相当多的Terraform,并在aws实例启动期间部署了一个单用户数据脚本。我只是使用了文件函数来调用powershell脚本的位置。这种方法适用于单用户数据脚本。

resource "aws_instance" "windows" {
...
...
user_data  = file("./user-data/ConfigureWinRM.ps1")

现在,我希望在实例建立时执行两个脚本。我采取了类似的方法,并尝试了以下操作,但这两个脚本似乎没有执行。

user_data = join("n", [file("./user-data/ConfigureWinRM.ps1"), file("./user-data/admin-pass.ps1")])

我尝试了template_file数据源,但这也不起作用。

data "template_file" "script1" {
template = file("./user-data/ConfigureWinRM.ps1")
}
data "template_file" "script2" {
template = file("./user-data/admin-pass.ps1")
}
user_data = join("n", [data.template_file.script1.rendered, data.template_file.script2.rendered]) 

我还尝试了template_cloud_init数据源,但它不起作用。

data "template_cloudinit_config" "user-data" { 
part { 
filename = "ConfigureWinRM.ps1" 
content  = file("./user-data/ConfigureWinRM.ps1") 
} 
part { 
filename = "admin-pass.ps1" 
content  = file("./user-data/admin-pass.ps1") 
} 
} 
user_data = data.template_cloudinit_config.user-data.rendered 

任何建议都会很有帮助。谢谢

我认为您在template_cloudinit_config 的part部分中缺少content_type

样品

data "template_cloudinit_config" "user-data" { 
part { 
content_type = "text/x-shellscript"
content  = file("./user-data/ConfigureWinRM.ps1") 
} 
part { 
content_type = "text/x-shellscript" 
content  = file("./user-data/admin-pass.ps1") 
} 
} 

最新更新