Terraform - проблема подключения Winrm к виртуальной машине Azure Windows - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу создать виртуальную машину Windows Azure, скопировать какой-нибудь файл и выполнить на ней простую команду, используя скрипт terraform. Проблема в том, что я могу создать виртуальную машину, но не могу подключиться через winrm.

provider "azurerm" {

  subscription_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  tenant_id       = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}    
resource "azurerm_virtual_network" "vnet" {
  name                = "cmTFVnet"
  address_space       = ["10.0.0.0/16"]
  location            = "South India"
  resource_group_name = "cservice"
}    
resource "azurerm_subnet" "subnet" {
  name                 = "cmTFSubnet"
  resource_group_name  = "cservice"
    virtual_network_name = "${azurerm_virtual_network.vnet.name}"
  address_prefix       = "10.0.2.0/24"
}    
resource "azurerm_public_ip" "publicip" {

    name                         = "cmTFPublicIP"
    location                     = "South India"
    resource_group_name          = "cservice"
    public_ip_address_allocation = "dynamic"
 }    
resource "azurerm_network_security_group" "nsg" {
    name                = "cmTFNSG"
    location            = "South India"
    resource_group_name = "cservice"

    security_rule {
        name                       = "SSH"
        priority                   = 340
        direction                  = "Inbound"
        access                     = "Allow"
        protocol                   = "Tcp"
        source_port_range          = "*"
        destination_port_range     = "22"
        source_address_prefix      = "*"
        destination_address_prefix = "*"
    }
    security_rule {  
    name                       = "winrm"  
    priority                   = 1010  
    direction                  = "Inbound"  
    access                     = "Allow"  
    protocol                   = "Tcp"  
    source_port_range          = "*"  
    destination_port_range     = "5985"  
    source_address_prefix      = "*"  
    destination_address_prefix = "*"  
  }  
  security_rule {   
    name                       = "winrm-out"  
    priority                   = 100  
    direction                  = "Outbound"  
    access                     = "Allow"  
    protocol                   = "*"  
    source_port_range          = "*"  
    destination_port_range     = "5985"  
    source_address_prefix      = "*"  
    destination_address_prefix = "*"  
  }         
}    
resource "azurerm_network_interface" "nic" {
  name                = "cmNIC"
  location            = "South India"
  resource_group_name = "cservice"
 network_security_group_id = "${azurerm_network_security_group.nsg.id}"
  ip_configuration {
    name                          = "compilerNICConfg"
    subnet_id                     = "${azurerm_subnet.subnet.id}"
    private_ip_address_allocation = "dynamic"
   public_ip_address_id          = "${azurerm_public_ip.publicip.id}"
  }
}
 resource "azurerm_virtual_machine" "vm" {
  name                  = "cmTFVM"
  location              = "South India"
  resource_group_name   = "cservice"
 network_interface_ids = ["${azurerm_network_interface.nic.id}"]
 vm_size            = "Standard_D2s_v3"

   storage_image_reference 
  {
    id =  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }
    storage_os_disk {
    name          = "cmOsDisk"
    managed_disk_type = "Premium_LRS"
    create_option = "FromImage"

  }

  os_profile {
    computer_name  = "hostname"
    admin_username = "test"
    admin_password = "test@123"
  }
   os_profile_windows_config {
        enable_automatic_upgrades = "true"
        provision_vm_agent ="true"
        winrm = {  
                  protocol = "http"  
        }
   }
    provisioner "remote-exec" {
     connection   = {
     type        = "winrm"
     user        = "test"
     password    = "test@123"
     agent       = "false"
     https    = false
     insecure = true
    } 
    inline = [
      "cd..",
      "cd..",
      "cd docker",
      "mkdir test"
    ]
  }
 }

ВМ создана успешно, но не может подключиться через WINRM но я получаю следующую ошибку в "remote-exec":

azurerm_virtual_machine.vm: время ожидания - последняя ошибка: неизвестная ошибка Сообщение http://:5985/wsman: наберите tcp: 5985: connectex: попытка подключения не удалось, потому что подключенная сторона не ответила должным образом после период времени или не удалось установить соединение, потому что подключен хост не ответил. или http ответ: 401 - недопустимый тип содержимого

1 Ответ

0 голосов
/ 17 апреля 2019

При создании виртуальной машины Windows Azure WINRM не настраивается по умолчанию. Поэтому, если вы хотите подключить виртуальную машину через WINRM, вы должны настроить WINRM после времени создания виртуальной машины или во время создания.

Вы можете выполнить действия, описанные в Настройка WinRM после создания виртуальной машины . И вы также можете настроить его во время создания. Вот пример показывает, что через шаблон Azure. Это также окажет небольшую помощь. См. Развертывание виртуальной машины Windows и настройка прослушивателя WinRM Https .

...