首页 文章

使用Terraform将本地文件复制到Windows Azure VM上

提问于
浏览
0

我正在尝试使用配置文件“文件”将本地文件复制到Windows Azure VM上,然后使用Terraform创建它 .

我使用以下命令启用了自定义脚本扩展:

resource "azurerm_virtual_machine_extension" "VM" {
  name                 = "WinRM"
  location             = "${azurerm_resource_group.VM.location}"
  resource_group_name  = "${azurerm_resource_group.VM.name}"
  virtual_machine_name = "${azurerm_virtual_machine.VM01.name}"
  publisher            = "Microsoft.Compute"
  type                 = "CustomScriptExtension"
  type_handler_version = "1.8"

我在我的NSG中打开了5985端口:

security_rule {
  name            = "AllowWinRM"
  priority          = 300
  direction         = "Inbound"
  access            = "Allow"
  protocol          = "Tcp"
  source_port_range           = "*"
  destination_port_range      = "5985"
  source_address_prefix       = "*"
  destination_address_prefix  = "*"
  }

我的操作系统配置设置为:

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

最后我尝试复制文件:

resource "null_resource" "VM" {
  provisioner "file" {
    source      = "output.txt"
    destination = "c:\\temp\\output.txt"

    connection {
      type     = "winrm"
      user     = "${var.adminusername}"
      password = "${var.adminpassword}"
      host     = "${azurerm_public_ip.VM1_pip.ip_address}"
      port     = "5985"
      timeout  = "20m"
    }
  }
}

每当我尝试“应用”它时,它会达到20分钟超时并因以下错误而失败(公共IP被删除):

azurerm_virtual_machine_extension.VM:compute.VirtualMachineExtensionsClient#CreateOrUpdate:发送请求失败:StatusCode = 200 - 原始错误:Code =“”Message =“”* null_resource.buildagent:timeout - 上一个错误:未知错误发布http:// PublicIP: 5985 / wsman:拨tcp PublicIP:5985:connectex:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而 Build 连接失败 .

首先,我这样做是否正确?似乎所有东西都设置正确,但最后一步仍然失败 .

1 回答

  • 0

    默认情况下,标准映像上未启用WinRM . 如果您将脚本预先上载到可公开访问的URL(如Azure存储Blob),则 CustomScriptExtension 可以正常工作 .

    我使用我的TFS CI管道(参见图片)执行此操作,该管道在每次提交时触发:收集文件并将其上载到Azure Blob .

    CI steps

    Terraform azurerm_virtual_machine_extension 有类似的代码

    settings = <<SETTINGS
        {
          "fileUris": [
            "${var.vm_customscript_baseurl}/UpgradePowershell.vbs",
            "${var.vm_customscript_baseurl}/Win8.1AndW2K12R2-KB3191564-x64.msu"
            ],
          "commandToExecute": "cmd /c cscript UpgradePowershell.vbs"
        }
    SETTINGS
    

    或者,在DSC扩展的情况下

    settings = <<SETTINGS
        {
          "configuration": {
            "url": "${var.vm_dsc_package_url}",
            "script": "VotingWebConfiguration.ps1",
            "function": "VotingWebRoleConfiguration"
          }
        }
    SETTINGS
    

相关问题