【问题标题】:Azure Virtual Machine Extension fileUris path with Terraform带有 Terraform 的 Azure 虚拟机扩展 fileUris 路径
【发布时间】:2021-07-11 08:45:15
【问题描述】:

需要使用 Terraform 和 Azure DevOps 实现 VM 扩展。我正在尝试从 .tfvars 传递 fileUris 值或从存储帐户详细信息动态创建 ["https://${var.Storageaccountname}.blob.core.windows .net/${var.containername}/test.sh"],这两种情况都不起作用。

resource "azurerm_virtual_machine_extension" "main" {
  name                 = "${var.vm_name}"
  location           ="${azurerm_resource_group.resource_group.location}"
  resource_group_name  = "${azurerm_resource_group.resource_group.name}"
  virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"

  settings = <<SETTINGS
  {
    "fileUris" :"${var.fileUris}",
    "commandToExecute": "sh <name of file> --ExecutionPolicy Unrestricted\""
  }
  SETTINGS
}

关于解决此问题的任何提示?也许其他一些解决方案可以在 main.tf/variable.tf 中实现零硬编码?

【问题讨论】:

  • 错误信息是什么?它是 Linux 还是 Windows 虚拟机?

标签: azure azure-storage terraform-provider-azure


【解决方案1】:

您可以参考此工作示例在 Linux VM 上部署扩展。该脚本文件存储了一个存储帐户。

resource "azurerm_virtual_machine_extension" "test" {
  name                       = "test-LinuxExtension"
  virtual_machine_id         =  "/subscriptions/xxx/virtualMachines/www"
  publisher                  = "Microsoft.Azure.Extensions"
  type                       = "CustomScript"
  type_handler_version       = "2.1"
  auto_upgrade_minor_version = true


  protected_settings = <<PROTECTED_SETTINGS
    {
            "commandToExecute": "sh aptupdate.sh",
            "storageAccountName": "xxxxx",
            "storageAccountKey": "xxxxx",
            "fileUris": [
                "${var.fileUris}"
            ]
    }
  PROTECTED_SETTINGS
}

【讨论】:

  • 谢谢你的回复。让我试试这个@Nancy Xiong
【解决方案2】:

如果我们将脚本存储在 Azure blob 存储中,我们需要提供存储密钥,然后扩展才能获得访问脚本的权限。更多详情请参考here。请在您的脚本中添加以下设置

...
protected_settings = <<PROTECTED_SETTINGS
    {
      
      "storageAccountName": "mystorageaccountname",
      "storageAccountKey": "myStorageAccountKey"
    }
  PROTECTED_SETTINGS
...

【讨论】:

  • 是资源 "azurerm_virtual_machine_extension" "VmExtension_nat" { name = "CustomScriptExt2" virtual_machine_id = "${azurerm_virtual_machine.NatVM.id}" publisher = "Microsoft.Azure.Extensions" type = "CustomScript" type_handler_version = "2.0" protected_settings = ], "commandToExecute": " sh ./test.sh" } PROTECTED_SETTINGS }
  • @RoopaK 对不起,我听不懂。能详细描述一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-24
  • 2022-08-18
  • 2022-12-10
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多