首页 > 解决方案 > Terraform 配置程序无法在 Azure 上 winrm 到新建的 Windows VM

问题描述

我正在尝试使用 Terraform 在 Azure 上配置 Windows VM 并同时引导它。我能想到的方式是 terraform provisioner。出于测试目的,我这样写了provisioner:

provisioner "remote-exec" {
    inline = [
      "md c:/terraform",
    ]
    connection {
      type     = "winrm"
      host   = "${azurerm_network_interface.vmstamp.private_ip_address}"
      user     = "${var.admin_username}"
      password = "${var.admin_password}"
      https    = false
      insecure = true
      timeout = "1m"
    }
}

模板成功预配了 VM,但在尝试将 VM 与 WinRM 连接时产生错误。

azurerm_virtual_machine.vmstamp: Still creating... (5m50s elapsed)
azurerm_virtual_machine.vmstamp (remote-exec): Connecting to remote host via WinRM...
azurerm_virtual_machine.vmstamp (remote-exec):   Host: 10.237.249.146
azurerm_virtual_machine.vmstamp (remote-exec):   Port: 5985
azurerm_virtual_machine.vmstamp (remote-exec):   User: azadmin
azurerm_virtual_machine.vmstamp (remote-exec):   Password: true
azurerm_virtual_machine.vmstamp (remote-exec):   HTTPS: true
azurerm_virtual_machine.vmstamp (remote-exec):   Insecure: true
azurerm_virtual_machine.vmstamp (remote-exec):   NTLM: false
azurerm_virtual_machine.vmstamp (remote-exec):   CACert: false
azurerm_virtual_machine.vmstamp: Still creating... (6m0s elapsed)

Error: Error applying plan:

1 error(s) occurred:

* azurerm_virtual_machine.vmstamp: timeout - last error: unknown error Post https://10.237.249.146:5985/wsman: dial tcp 10.237.249.146:5985: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

我尝试过的几件事:

1)正在考虑防火墙问题。但是 packer 可以使用以下代码启动连接到同一台笔记本电脑上新建的 windows VM:

"communicator": "winrm",
"winrm_use_ssl": "true",
"winrm_insecure": "true",
"winrm_timeout": "3m",
"winrm_username": "packer",

2) 试过https=truehttps=false,都失败了。

3) 试过use_ntlm=trueuse_ntlm=false,都失败了。

4) 试过port=5985port=5986,都失败了。5986 实际上没有从市场映像中侦听新的 Windows VM。

terraform provisioner 的正确配置是什么?

标签: azureterraformazure-virtual-machinewinrm

解决方案


对于你的问题,我做了测试。您可以通过 Packer 查看 windows 图像的结果:

在此处输入图像描述

可以看到winrm也有超时。另一个 Terraform 测试我也得到了 winrm 的超时。因此,我建议您可以使用 vm 扩展启用 winrm,确保端口 5985 已打开,然后使用配置程序执行您想要的操作。

更新

也许有什么遗漏了,所以我没有像你一样成功。但是有一个过程要注意Packer设置证书的URL。此处的文档还显示了如果要使用它,如何使用证书的 URL 启用 winrm。所以我认为 Packer 只是自己做,但 Terraform 不会为你做。


推荐阅读