-1

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

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

4

2 回答 2

1

如果您对当前执行角色的主机的 IP 感兴趣,只需使用内置的 ansible fact 即可,例如:

- debug:
    var={{ "ansible_default_ipv4['address'] }}"
于 2017-08-14T12:19:16.613 回答
1

我不认为 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 关于魔法变量的文档

于 2017-08-14T13:47:28.440 回答