Как мне получить IP-адрес vsphere_virtual_machine для запуска ansible -playbook? - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь вызвать IP (ipv4_address) для выполнения Ansible. Когда я запускаю plan / apply, я получаю сообщение об ошибке: «Недопустимый индекс: данный ключ не идентифицирует элемент в этом значении коллекции».

Моя конфигурация:

resource "vsphere_virtual_machine" "vm" {
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id = data.vsphere_datastore.datastore.id
  network_interface { network_id = data.vsphere_network.network.id } 

  name= "terraform-test"
  num_cpus = 2
  memory   = 4096
  guest_id = "centos8_64Guest"
  memory_hot_add_enabled = true
  cpu_hot_add_enabled = true
  cpu_hot_remove_enabled = true

  disk {
    label = "disk0"
    size  = 20
  }

  clone {
    template_uuid = data.vsphere_virtual_machine.template.id

    customize {
      linux_options {
        host_name = "terraform-test"
        domain    = "local"
        time_zone = "Europe/Madrid"
      }

      network_interface {
        ipv4_address = "10.20.30.25
        ipv4_netmask = 22
        dns_server_list = ["8.8.8.8"]
      }

      ipv4_gateway = "10.20.30.1"
    }
  }

  provisioner "local-exec" {
    command = "sleep 60; ansible-playbook configure.yml -i '${self.clone[4]}',"
  }
}

Моя цель - запустить Playbook на только что созданном сервере с IP-адресом 10.20.30.25.

Как мне получить IP-адрес vsphere_virtual_machine для запуска ansible -playbook?

1 Ответ

1 голос
/ 21 июня 2020

Объединение рекомендаций @Helder Sapulveda из комментариев к вопросу в ответ для использования в будущем:

provisioner "local-exec" {
  command = "sleep 60; ansible-playbook configure.yml -i '${self.default_ip_address}',"
}

Вы можете использовать атрибут default_ip_address для vsphere_virtual_machine , чтобы получить IP-адрес для команды ansible -playbook.

...