我正在尝试设置一个 Zookeeper 集群,为了设置指向 ZK 节点的 url,我想知道哪些是运行当前角色的主机的 ip 地址。
我知道从剧本中我可以通过一个变量传递主机,但是在角色中检查这个会很好。
我正在尝试设置一个 Zookeeper 集群,为了设置指向 ZK 节点的 url,我想知道哪些是运行当前角色的主机的 ip 地址。
我知道从剧本中我可以通过一个变量传递主机,但是在角色中检查这个会很好。
如果您对当前执行角色的主机的 IP 感兴趣,只需使用内置的 ansible fact 即可,例如:
- debug:
var={{ "ansible_default_ipv4['address'] }}"
我不认为 Ansible 提供了一个变量来访问应用角色的主机。如果您想在当前播放中获取活动主机,请使用ansible_play_hosts
(或者play_hosts
如果您的 ansible 版本 < 2.2)。
但是,我认为更好的解决方案是将您的 zookeeper 节点组合在您的库存中。
[zookeeper_nodes]
node1
node2
node3
从那里您可以使用groups
和访问这些主机的变量hostvars
{% for host in groups['zookeeper_nodes'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
有关更多信息,请参阅Ansible 关于魔法变量的文档。