Невозможно выполнить удаленное выполнение c в AzureVM с помощью Terraform - PullRequest
0 голосов
/ 29 мая 2020

Я хочу скопировать файл и запустить несколько команд оболочки после создания виртуальной машины в Azure. Я использую provisioner 'file' и provisioner 'remote-exec' и создал виртуальную машину с помощью ключей s sh. Все работает нормально до файла Provisoner, и я получаю следующую ошибку:

Error: timeout - last error: dial tcp :22: connect: connection refused

Когда я делаю ssh -i id_rsa <username>@<ip_address>, он работает нормально. Я получаю этот IP-адрес с портала Azure.

Вот мой tf-файл:

resource "azurerm_resource_group" "myterraformgroup" {
    name     = "terrafromresources"
    location = "eastus"
}

resource "azurerm_virtual_network" "myterraformnetwork" {
    name                = "terraformvnet"
    address_space       = ["10.0.0.0/16"]
    location            = "eastus"
    resource_group_name = "${azurerm_resource_group.myterraformgroup.name}"
}

resource "azurerm_network_security_group" "myterraformnsg" {
    name                = "terraformNetworkSecurityGroup"
    location            = "eastus"
    resource_group_name = "${azurerm_resource_group.myterraformgroup.name}"

    security_rule {
        name                       = "SSH"
        priority                   = 100
        direction                  = "Inbound"
        access                     = "Allow"
        protocol                   = "Tcp"
        source_port_range          = "*"
        destination_port_range     = "22"
        source_address_prefix      = "*"
        destination_address_prefix = "*"
    }
}

resource "azurerm_public_ip" "myterraformpublicip" {
    name                         = "myPublicIP"
    location                     = "eastus"
    resource_group_name          = "${azurerm_resource_group.myterraformgroup.name}"
    allocation_method            = "Dynamic"
}

resource "azurerm_linux_virtual_machine" "myterraformvm" {
    name                  = "terraformVM"
    location              = "eastus"
    resource_group_name   = "${azurerm_resource_group.myterraformgroup.name}"
    network_interface_ids = ["${azurerm_network_interface.myterraformnic.id}"]
    size                  = "Standard_DS1_v2"

    computer_name  = "terrafromvm"
    admin_username = "azureuser"
    disable_password_authentication = true

    admin_ssh_key {
        username       = "azureuser"
        public_key     = "${file("id_rsa.pub")}"
    }

    connection {
        type = "ssh"
        user = "azureuser"
        host = "${azurerm_public_ip.myterraformpublicip.fqdn}"
        private_key = "${file("id_rsa")}"
        timeout = "5m"
    }

    provisioner "file" {
        source = "example_file.txt"
        destination = "/tmp/example_file.yml"
    }

    provisioner "remote-exec" {
        inline = [
          "sudo apt-get update",
        ]
    }
}

id_rsa и id_rsa.pub находятся в той же папке, что и файл .tf.

Также пробовал более высокие таймауты с 10 м и 15 м.

Спасибо

1 Ответ

1 голос
/ 29 мая 2020

Эта проблема github решает ту же проблему, что и ваша, и для этой проблемы дано правильное объяснение.

Исправление этой проблемы заключается в обновлении метода allocation_method на «Stati c».

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...