使用ansible获取特定主机名的ip

get a particular host name's ip with ansible

我有一个大致如下所示的主机文件:

[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!"}

hostvars magic variable 是一个字典,其中的键以您清单中的主机命名。

所以你可能想试试:

hostvars['esnode']['ansible_default_ipv4']['address']

获取 esnode 主机的 IP 地址。

您可以使用预加载的 ansible 变量来获取 ipv4、ipv6 和主机名的值

IPV4 --> {{ ansible_eth0.ipv4.address }}

IPV6 --> {{ ansible_eth0.ipv6.address }}

Hostname --> {{ ansible_hostname }