获取特定的主机名';带ansible的s ip
我有一个大致如下的主机文件:获取特定的主机名';带ansible的s ip,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我有一个大致如下的主机文件: [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 但我得到的变
[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\u default\u ipv4']['address']:“未定义变量!”}
hostvars
是一个字典,其中的键以资源清册中的主机命名
因此,您可能需要尝试:
hostvars['esnode']['ansible_default_ipv4']['address']
要获取
esnode
主机的ip地址。可以使用预加载的ansible变量获取ipv4、ipv6和主机名的值
IPV4 --> {{ ansible_eth0.ipv4.address }}
IPV6 --> {{ ansible_eth0.ipv6.address }}
Hostname --> {{ ansible_hostname }
好的,我收回它-它不工作-hostvars[LOG1]['ansible\u default\u ipv4']['address']:“未定义变量!“这里的
LOG1
是什么?LOG1是一台机器,但关键是在我注册该变量的那一刻——我在配置文件中得到了一个ugli长文本,而不仅仅是IP。确保定义了LOG1
,并且在您尝试从hostvars获取IP地址的时间点之前收集了该主机的事实。