获得一个特定的主机名与ansible的IP

时间:2017-06-06 12:10:58

标签: 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

但我得到的变量没有定义。任何人都可以提供帮助吗?

编辑: 如果我做

debug: var=hostvars[LOG1]['esnode']['ansible_default_ipv4']['address']
register: node_1 

我得到了

{"hostvars[LOG1]['ansible_default_ipv4']['address']": "VARIABLE IS NOT DEFINED!"}

2 个答案:

答案 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 }