我正在尝试使用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。我是否以为应该执行此命令是对的,还是我需要采取其他步骤执行此操作?
答案 0 :(得分:0)
不,不应该。它只是一个base64(据我所知,它是base64编码的,可能是错误的),将编码的字符串转储到文件中。您需要使用其他方式对其进行解码\执行
答案 1 :(得分:0)
要在Windows计算机上执行脚本,您需要使用azurerm_virtual_machine_extension
资源执行自定义脚本扩展。在这里,您可以引用CustomData.bin
文件并执行它。
请选中此link,它详细说明了如何引导Linux和Windows VM