如何删除或排除Ansible模板列表中的项目?

时间:2016-11-19 17:56:34

标签: ansible jinja2 ansible-template

我正在编写一个Ansible模板,需要在主机组中生成一个ip列表, 排除 当前主机IP。我已经在网上和文档中搜索过但我找不到任何允许您删除列表中项目的过滤器。我在下面创建了(hacky)for循环来做这个但是想知道是否有人知道"最佳实践"像这样过滤的方式。

{% set filtered_list = [] %}

{% for host in groups['my_group'] if host != ansible_host %}
    {{ filtered_list.append(host)}}
{% endfor %}

假设群组[' my_group']有3个ip(192.168.1.1,192.168.1.2和192.168.1.3)。为192.168.1.1生成模板时,它应该只打印ip的192.168.1.2和192.168.1.3。

1 个答案:

答案 0 :(得分:19)

difference filter

- debug: var=item
  with_items: "{{ groups['my_group'] | difference([inventory_hostname]) }}"

这将为您提供my_group没有当前主持人的所有项目主机。

相关问题