使用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 }
我有一个大致如下所示的主机文件:
[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 }