azurerm_virtual_machine_extension - 在 azurerm_windows_virtual_machine 上,计数不起作用

azurerm_virtual_machine_extension - on azurerm_windows_virtual_machine with count not working

我有一个 azurerm_virtual_machine_extension 部分看起来像这样

resource "azurerm_virtual_machine_extension" "InstallCts" {
  name                 = "Install_Cts"
  virtual_machine_id   = "${element(azurerm_windows_virtual_machine.myserver.*.id, count.index )}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"

settings = <<SETTINGS
    {   
    "fileUris": [ "https://someurl_server.ps1}" ],
    "commandToExecute": "powershell someurl_server.ps1"
    }
SETTINGS


}

我不断收到以下错误消息

The "count" object can only be used in "module", "resource", and "data"
blocks, and only when the "count" argument is set.

azurerm_virtual_machine_extensionazurerm_windows_virtual_machinecount 兼容还是不兼容?如有任何帮助,我们将不胜感激

我在 github 上发现了类似的 kidda 问题。它已关闭,但我认为它也涵盖了您的问题。看看这个:

https://github.com/terraform-providers/terraform-provider-azurerm/issues/5675

作为错误显示,您应该在资源azurerm_virtual_machine_extension部分定义count。请注意,扩展名 Microsoft.Azure.Extensions.CustomScript 用于 Linux VMs extension,您可以像下面那样更改它以使用 Windows 个虚拟机。

 resource "azurerm_virtual_machine_extension" "InstallCts" {
  count                = length(var.vm_names)              # specify here
  name                 = "Install_Cts"
  virtual_machine_id   = "${element(azurerm_windows_virtual_machine.rg.*.id, count.index )}"
 # publisher            = "Microsoft.Azure.Extensions"
 # type                 = "CustomScript"
 # type_handler_version = "2.0"

   publisher            = "Microsoft.Compute"
   type                 = "CustomScriptExtension"
   type_handler_version = "1.8"

settings = <<SETTINGS
    {   
    "fileUris": [ "https://someurl_server.ps1}" ],
    "commandToExecute": "powershell someurl_server.ps1"
    }
SETTINGS

}

例如,下面的命令适用于我在每个 VM 中添加一个 Web 服务器。