如何让主机在该角色中运行某个角色

时间:2017-08-14 10:23:01

标签: ansible ansible-role

我正在尝试设置Zookeeper群集,并且为了设置指向ZK节点的url,我想知道哪些是运行当前角色的主机的ip地址。

我知道从剧本中我可以通过变量传递主机,但在角色中查看这个很好。

2 个答案:

答案 0 :(得分:1)

如果您对IP当前正在执行该角色的主机感兴趣,只需使用内置的可靠事实,例如: :

- debug:
    var={{ "ansible_default_ipv4['address'] }}"

答案 1 :(得分:1)

我不认为Ansible提供了一个变量来访问正在应用角色的主机。如果您想在当前播放中获取活动主持人,请使用ansible_play_hosts(如果您的ansible版本<2.2,则使用play_hosts

但是,我认为更好的解决方案是将您的zookeeper节点组合在一起。

[zookeeper_nodes]
node1
node2
node3

从那里,您可以使用groupshostvars

访问这些主机中的变量
{% for host in groups['zookeeper_nodes'] %}
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}

有关详细信息,请参阅Ansible's docs on magic variables