Подключитесь к компьютеру Azure через публичный ip от terraform

503
GergA

Я успешно сделал виртуальную машину в Azure с Terraform (из образа Packer). После создания виртуальной машины я запускал некоторые команды удаленно на вновь созданной машине.

У машины есть piblic ip, но этот ip динамически подключается к новой группе ресурсов, созданной terrafrom. В этом случае я не знаю puclic ip до запуска terraform.

К сожалению, провайдеру remote-exec необходим ip для подключения и ssh connect. Как я могу решить эту проблему?

2

1 ответ на вопрос

1
Shui Shengbao

У вас есть два способа сделать это.

1.При создании виртуальной машины, используя DNS-имя. Хост есть <dns name>.<location>.cloudapp.azure.com.

В tf файле создайте публичный IP как показано ниже:

# create public IPs resource "azurerm_public_ip" "ip" { name = "tfip" location = "ukwest" resource_group_name = "$" public_ip_address_allocation = "dynamic" domain_name_label = "sometestdn"  tags { environment = "staging" } } 

Создайте соединение, как показано ниже:

 connection { host = "sometestdn.ukwest.cloudapp.azure.com" user = "testuser" type = "ssh" private_key = "$" timeout = "1m" agent = true }  provisioner "remote-exec" { inline = [ "sudo apt-get update", "sudo apt-get install docker.io -y", "git clone https://github.com/somepublicrepo.git", "cd Docker-sample", "sudo docker build -t mywebapp .", "sudo docker run -d -p 5000:5000 mywebapp" ] } 

2. Используйте расширение Azure Custom Script .

Расширение Custom Script Extension загружает и выполняет сценарии на виртуальных машинах Azure. Это расширение полезно для настройки после развертывания, установки программного обеспечения или любой другой задачи настройки / управления.

Вы можете написать свой тф, как показано ниже:

resource "azurerm_virtual_machine_extension" "helloterraformvm" { name = "hostname" location = "West US" resource_group_name = "$" virtual_machine_name = "$" publisher = "Microsoft.OSTCExtensions" type = "CustomScriptForLinux" type_handler_version = "1.2"  settings = <<SETTINGS { "commandToExecute": "apt-get install docker.io -y" } SETTINGS } 

Больше информации, пожалуйста, обратитесь к этому похожему вопросу .

Работает. благодарю вас. Ярлык "Terraform" очень помог бы в superuser.com GergA 6 лет назад 0
Конечно, я делаю это GergA 6 лет назад 0

Похожие вопросы