如何获取 vsphere_virtual_machine 到 运行 ansible-playbook 的 IP?
How do I get the IP of a vsphere_virtual_machine to run ansible-playbook?
我正在尝试调用 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]}',"
}
}
我的 objective 是 运行 您刚刚使用 IP 10.20.30.25 创建的服务器上的 Playbook。
如何获取 vsphere_virtual_machine 到 运行 ansible-playbook 的 IP?
将@Helder Sapulveda 从对问题的评论到答案的指导整合起来以供将来参考:
provisioner "local-exec" {
command = "sleep 60; ansible-playbook configure.yml -i '${self.default_ip_address}',"
}
您可以使用 default_ip_address attribute of vsphere_virtual_machine 获取 ansible-playbook 命令的 IP 地址。
我正在尝试调用 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]}',"
}
}
我的 objective 是 运行 您刚刚使用 IP 10.20.30.25 创建的服务器上的 Playbook。
如何获取 vsphere_virtual_machine 到 运行 ansible-playbook 的 IP?
将@Helder Sapulveda 从对问题的评论到答案的指导整合起来以供将来参考:
provisioner "local-exec" {
command = "sleep 60; ansible-playbook configure.yml -i '${self.default_ip_address}',"
}
您可以使用 default_ip_address attribute of vsphere_virtual_machine 获取 ansible-playbook 命令的 IP 地址。