我有一个大致如下的主机文件:
[kibanamaster]
efk host_ip host user passwd
[elasticnode]
esnode host_ip user passwd
我正在尝试
的风格- name: get ip address node1
debug: var=hostvars[inventory_host]['esnode']['ansible_default_ipv4']['address']
register: es_node1
但我得到的变量没有定义。任何人都可以提供帮助吗?
编辑: 如果我做
debug: var=hostvars[LOG1]['esnode']['ansible_default_ipv4']['address']
register: node_1
我得到了
{"hostvars[LOG1]['ansible_default_ipv4']['address']": "VARIABLE IS NOT DEFINED!"}
答案 0 :(得分:3)
hostvars
magic variable是一个字典,其中的密钥以清单中的主机命名。
所以你可能想尝试:
hostvars['esnode']['ansible_default_ipv4']['address']
获取esnode
主机的IP地址。
答案 1 :(得分:1)
您可以使用预加载的ansible变量来获取ipv4,ipv6和主机名的值
IPV4 --> {{ ansible_eth0.ipv4.address }}
IPV6 --> {{ ansible_eth0.ipv6.address }}
Hostname --> {{ ansible_hostname }