![](/img/trans.png)
[英]Anyone succeed with enabling VM diagnostics using azurerm_virtual_machine_extension?
[英]pass to azurerm_virtual_machine_extension multiple files
我想使用 terraform azurerm_virtual_machine_extension作为模块,并以某种方式将多个文件作为设置参数传递。
这是一个例子:
module "ad_settings" {
source = "./modules/cse"
vm_id = azurerm_virtual_machine.addc_vm.id
files = [
"${azurerm_storage_container.scripts_ct.id}/1.ps1",
"${azurerm_storage_container.scripts_ct.id}/2.ps1",
"${azurerm_storage_container.scripts_ct.id}/22.ldif",
"${azurerm_storage_container.scripts_ct.id}/3.zip",
"${azurerm_storage_container.scripts_ct.id}/5.zip"]
cse_protected_settings = "powershell -ExecutionPolicy Unrestricted -File 1.ps1 ${var.vm_admin_name} ${var.vm_admin_pass} ${var.ad_domain_name} true"
}
cse_resources.tf
resource "azurerm_virtual_machine_extension" "template" {
name = "CustomScriptExtension"
virtual_machine_id = var.vm_id
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.9"
settings = <<SETTINGS
{
"fileUris": [
${var.files}
]
}
SETTINGS
protected_settings = <<PROTECTED_SETTINGS
{
"commandToExecute": "${var.cse_protected_settings}"
}
PROTECTED_SETTINGS
tags = {
environment = var.farm_environment_tag_value
}
}
错误:
Error: Invalid template interpolation value
│
│ on modules\cse\cse_resources.tf line 11, in resource "azurerm_virtual_machine_extension" "template":
│ 8: settings = <<SETTINGS
│ 9: {
│ 10: "fileUris": [
│ 11: ${var.files}
│ 12: ]
│ 13: }
│ 14: SETTINGS
│ ├────────────────
│ │ var.files is list of string with 5 elements
│
│ Cannot include the given value in a string template: string required.
有什么建议么? 我也可以在 tf 中与locals
一起生成文件列表
fileUris 设置要求值采用字符串格式。 Terraform 的字符串格式要求所有内容都在一行中。 由于您有多个要提取的文件,因此 terraform 会将逗号视为需要换行的参数。 解决方案是使用terraform 的 heredoc style 。
为此,我创建了一个使用 Heredoc 的局部变量,然后我稍后在我的扩展设置中调用该变量。
locals {
fileUris = <<EOT
[
"${azurerm_storage_container.scripts_ct.id}/1.ps1",
"${azurerm_storage_container.scripts_ct.id}/2.ps1",
"${azurerm_storage_container.scripts_ct.id}/22.ldif",
"${azurerm_storage_container.scripts_ct.id}/3.zip",
"${azurerm_storage_container.scripts_ct.id}/5.zip"
]
EOT
}
settings = <<SETTINGS
{
"fileUris": ${local.fileUris},
"commandToExecute": "${var.cse_protected_settings}"
}
SETTINGS
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.