Сбой Terraform remote-exec на ресурсе виртуальной машины и IP-адресе dhcp assinged

#terraform #vsphere

#terraform #vsphere

Вопрос:

Я пытаюсь запустить средство обеспечения удаленного исполнителя на ресурсе виртуальной машины vsphere, в котором IP-адрес назначается через DHCP, а не через статическую настройку IP-адреса на сетевом адаптере (из-за проблем с TF в Ubuntu 18.04).

Я обнаружил, что при попытке запустить средство предоставления «remote-exec» происходит сбой, поскольку он не может найти IP-адрес. Я пробовал несколько вещей и в настоящее время пытаюсь установить для свойства «host» объекта подключения значение «self.default_ip_address» в надежде, что он будет использовать IP-адрес, который автоматически назначается виртуальной машине через DHCP, как только она подключится к моей сети … К сожалению, мне все еще не удается заставить это работать.

Ниже приведен пример моего объявления ресурса, есть ли лучший способ запуска remote-exec при использовании DHCP, о котором я просто не знаю, отсутствует? Кажется, я даже не могу правильно вывести IP-адрес после того, как все построено, даже если я не запускаю provisioner. Спасибо за помощь!

 resource "vsphere_virtual_machine" "vm-nginx-2" {
  resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
  name             = "vm-nginx-2"
  datastore_id     = "${data.vsphere_datastore.datastore.id}"
  folder           = "${var.vsphere_vm_folder}"

  enable_disk_uuid           = true
  wait_for_guest_net_timeout = 0

  num_cpus  = 2
  memory    = 2048
  guest_id  = "${data.vsphere_virtual_machine.template.guest_id}"
  scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"

  #scsi_type = "${data.vsphere_virtual_machine.template.scsi_type}"
  network_interface {
    network_id = "${data.vsphere_network.network.id}"
  }

  disk {
    label = "vm-nginx-2-disk"
    size  = "${data.vsphere_virtual_machine.template.disks.0.size}"
  }

  clone {
    template_uuid = "${data.vsphere_virtual_machine.template.id}"

    customize {
      timeout = 0

      linux_options {
        host_name = "vm-nginx-2"
        domain    = "adc-corp.com"
      }

      network_interface {}

      ipv4_gateway = "192.168.0.1"
    }
  }
  provisioner "remote-exec" {
    inline = [
      "sudo apt-get update -y",
      "sudo apt-get install -y nginx"
    ]

    connection {
      host = "${self.default_ip_address}"
      type = "ssh"
      user = "ubuntu"
      private_key = "${file("files/adc-prod.pem")}"
    }
  }  
}



#This also fails to print out an IP
output "vm-nginx-1-ip" {
  value = "${vsphere_virtual_machine.vm-nginx-1.default_ip_address}"
}
  

Комментарии:

1. Согласно документу: «Если VMware tools не запущена на виртуальной машине или если виртуальная машина выключена, это значение будет пустым».

2. Я видел это в документах и убедился, что у меня установлены инструменты на виртуальной машине. Я все еще сталкиваюсь с той же проблемой.

3. Можете ли вы подключиться к виртуальной машине по SSH из командной строки?

4. Итак, я немного покопался и разобрался в этом. Я опубликую свой ответ, поскольку чувствую, что другие обязательно столкнутся с этим.