Ansible jinja2过滤ipaddress

时间:2017-01-20 17:55:50

标签: ansible jinja2

我有3台服务器A,B,C。当我在j2模板中运行以下内容时,它会拉出所有3台服务器。

如何忽略运行模板的服务器?

例如,如果服务器A运行,它应该只获取服务器B&下进行。

"retry_join": ["
                {% for host in groups['servers']%}
                  {{ hostvars[host]['ansible_ssh_host'] }}
                  {% if not loop.last %}, {% endif %}
                {% endfor %}
              "]

2 个答案:

答案 0 :(得分:2)

从服务器列表中排除inventory_hostname

{% for host in groups['servers'] | difference([inventory_hostname]) %}

答案 1 :(得分:0)

您可以尝试像这样的检查来验证您的循环变量不是当前主机:

{% if host != inventory_hostname %}
  {{ hostvars[host]['ansible_ssh_host'] }}
{% endif %}