ansible模板:如果条件

时间:2019-03-19 14:37:03

标签: ansible

我正在创建角色,并且正在两台计算机上运行此剧本,并且有一个模板,我正在使用此变量

--cluster.peers {{ cluster_peers_addr }} 

当我运行剧本时,主机A的配置应在此处获取主机B的IP地址,而主机B则应获取主机A的IP地址。

如果这样的情况我可以做

{% if inventory_hostname == "hosta" %}
--cluster.peers 1.1.1.1
else
--cluster.peers 2.2.2.2
{% endif %}

但是我不喜欢这种解决方案,请提出更好的方法

1 个答案:

答案 0 :(得分:1)

如果hostA和hostB在一个组中,则可以执行类似的操作

(groups["my-group"] | diff(inventory_hostname))[0].ansible_default_ipv4.address

当组中有两个以上的主机时,这将是错误的,但是您可以循环访问,也可以做其他聪明的事情。 YMMV。