获取特定的主机名';带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地址的时间点之前收集了该主机的事实。