我正在编写一个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。
答案 0 :(得分:19)
有difference
filter:
- debug: var=item
with_items: "{{ groups['my_group'] | difference([inventory_hostname]) }}"
这将为您提供my_group
没有当前主持人的所有项目主机。