Mar*_*obo 4 azure azure-virtual-machine terraform
在使用 Terraform 部署 Azure VM 后,我尝试在 Azure VM 上运行 bash 脚本。我尝试过不同的方法,但没有一个有效。对于“custom_data”,我假设该文件将被上传并执行,但是我什至没有在虚拟机内看到该文件。
我还查看了“azurerm_virtual_machine_extension”,但这并没有给我上传文件的选项,只能执行命令或从远程位置下载(由于要求无法使用 fileUris):
resource "azurerm_virtual_machine_extension" "test" {
  name                 = "hostname"
  location             = "${azurerm_resource_group.test.location}"
  resource_group_name  = "${azurerm_resource_group.test.name}"
  virtual_machine_name = "${azurerm_virtual_machine.test.name}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"
  settings = <<SETTINGS
    {
        "commandToExecute": "sh my_script.sh"
    }
SETTINGS
  tags = {
    environment = "Production"
  }
}
resource "azurerm_virtual_machine" "middleware_vm" {
    name                  = "${var.middleware_vm}"
    location              = "${var.location}"
    resource_group_name   = "${azurerm_resource_group.middleware.name}"
    network_interface_ids = ["${azurerm_network_interface.middleware.id}"]
    vm_size               = "Standard_DS4_v2"        
    storage_os_disk {
        name              = "centos_os_disk"
        caching           = "ReadWrite"
        create_option     = "FromImage"
        managed_disk_type = "Premium_LRS"
    }
    storage_data_disk {
        name                 = "managed_backup_disk"
        create_option        = "Empty"
        caching              = "ReadWrite"
        disk_size_gb         = "256"  
        managed_disk_type    = "Premium_LRS"
        lun                  = 0
    }
    storage_image_reference {
        publisher = "OpenLogic"
        offer     = "CentOS"
        sku       = "7.5"
        version   = "latest"
    }
    os_profile {
        computer_name  = "${var.middleware_vm}"
        admin_username = "middlewareadmin"
        custom_data    = "${file("scripts/middleware_disk.sh")}"
  }
在 azurerm_virtual_machine_extension 中,您可以使用:
protected_settings = <<PROTECTED_SETTINGS
{
    "script": "${base64encode(file(var.scfile))}"
}
PROTECTED_SETTINGS
请参考我的回答