ansible模板:如果条件为

ansible模板:如果条件为,ansible,Ansible,我正在创建一个角色,我在两台机器上运行这个剧本,我有一个使用这个变量的模板 --cluster.peers {{ cluster_peers_addr }} 当我运行playbook主机时,配置应该在这里获得主机B的ip地址,主机B应该获得主机A的ip地址 如果情况像这样,我可以做 {% if inventory_hostname == "hosta" %} --cluster.peers 1.1.1.1 else --cluster.peers 2.2.2.2 {% endif %} 但

我正在创建一个角色,我在两台机器上运行这个剧本,我有一个使用这个变量的模板

--cluster.peers {{ cluster_peers_addr }} 
当我运行playbook主机时,配置应该在这里获得主机B的ip地址,主机B应该获得主机A的ip地址

如果情况像这样,我可以做

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

但是我不喜欢这个解决方案,请建议更好的方法

如果hostA和hostB在一个组中,您可以这样做

(groups["my-group"] | diff(inventory_hostname))[0].ansible_default_ipv4.address
当您的组中有两个以上的主机时,这将是一个错误,但是您可以循环使用该主机,或者执行其他聪明的操作。YMMV