向 azurerm vm 提供文件期间连接超时

Connection timeout during file provision to azurerm vm

我在尝试将文件提供给 azure RM VM 时收到超时消息。

unknown error Post http://terraform.eastus.cloudapp.azure.com:3389/wsman: read tcp 192.168.0.4:59745->52.224.162.240:3389: wsarecv: An existing connection was forcibly closed by the remote host.

我正在尝试提供文件,而 VM 已经存在,无需创建它。我只需要使用以下配置将文本文件复制到现有 VM。

provider "azurerm"
{
}
resource "null_resource" "test"
{

provisioner "file" 
{
        connection 
        {
            type = "winrm"
            user = ""
            password = ""
            host="terraform.eastus.cloudapp.azure.com"
            port="3389"
            timeout = "20m"
        }
    source = "D:\jaish\output.txt"
    destination = "D:\output.txt"

}
}

我以前没有尝试过这种方法,但引起我注意的第一件事是您使用的是一种端口为 3389 的 winrm。3389 用于 RDP,默认 winrm 端口为 5985 (HTTP)和 5986 (HTTPS)。

你可以在这个link.

中查看官方文档(Provisioner Connections)

Additional arguments only supported by the winrm connection type:

https - Set to true to connect using HTTPS instead of HTTP.

现在,您使用的连接类型是winrm,因此您需要在VM 的防火墙和Azure NSG 上打开端口5986。您还需要创建一个 self-signed 证书。您可以检查此 blog 来执行此操作。


另一个解决方案,您可以使用 Azure Custom Script 来执行此操作。您可以创建脚本以从 Azure 存储帐户或 github.

下载文件

使用 terraform 执行此操作,您可以查看此