Terraform-创建虚拟机时,custom_data无法运行

时间:2018-07-25 14:43:07

标签: azure terraform azure-virtual-machine winrm

我正在尝试使用Terraform创建Windows虚拟机期间配置WinRM。

我的os_profile和os_profile_windows_config是:

os_profile {
    computer_name  = "server-name"
    admin_username = "${var.vm_username}"
    admin_password = "${var.vm_password}"
    custom_data = <<EOF
    <powershell>
    winrm quickconfig -q
    winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="300"}'
    winrm set winrm/config '@{MaxTimeoutms="1800000"}'
    winrm set winrm/config/service '@{AllowUnencrypted="true"}'
    winrm set winrm/config/service/auth '@{Basic="true"}'

    netsh advfirewall firewall add rule name="WinRM 5985" protocol=TCP dir=in localport=5985 action=allow
    netsh advfirewall firewall add rule name="WinRM 5986" protocol=TCP dir=in localport=5986 action=allow

    net stop winrm
    sc.exe config winrm start=auto
    net start winrm
    </powershell>
    EOF
  }  



os_profile_windows_config {
    provision_vm_agent = true
    winrm {
       protocol="http"
     }
  }

当我读到VM时,可以在CustomData.bin中看到一个C:\AzureData文件,但是它没有执行任何Powershell。我是否以为应该执行此命令是对的,还是我需要采取其他步骤执行此操作?

2 个答案:

答案 0 :(得分:0)

不,不应该。它只是一个base64(据我所知,它是base64编码的,可能是错误的),将编码的字符串转储到文件中。您需要使用其他方式对其进行解码\执行

答案 1 :(得分:0)

要在Windows计算机上执行脚本,您需要使用azurerm_virtual_machine_extension资源执行自定义脚本扩展。在这里,您可以引用CustomData.bin文件并执行它。

请选中此link,它详细说明了如何引导Linux和Windows VM