如何获取 vsphere_virtual_machine 的 IP 来运行 ansible-playbook?
Posted
技术标签:
【中文标题】如何获取 vsphere_virtual_machine 的 IP 来运行 ansible-playbook?【英文标题】:How do I get the IP of a vsphere_virtual_machine to run ansible-playbook? 【发布时间】:2020-10-11 09:07:02 【问题描述】:我正在尝试调用 IP (ipv4_address) 来执行 Ansible。当我运行计划/应用时,我收到错误:“无效索引:给定键未标识此集合值中的元素。”
我的配置:
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]',"
我的目标是在您刚刚使用 IP 10.20.30.25 创建的服务器上运行 Playbook。
【问题讨论】:
看起来错误出现在self.clone[4]
上,您确定这是正确的吗?
看文档default_ip_address
应该是你需要的:terraform.io/docs/providers/vsphere/r/…
@HelderSepulveda 感谢您的评论!我通过将'$self.clone[4]'
更改为'$self.default_ip_address'
解决了这个问题。
【参考方案1】:
将@Helder Sapulveda 从 cmets 对问题的指导合并为将来参考的答案:
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 地址。
【讨论】:
以上是关于如何获取 vsphere_virtual_machine 的 IP 来运行 ansible-playbook?的主要内容,如果未能解决你的问题,请参考以下文章