如何删除或排除 Ansible 模板列表中的项目?
How to remove or exclude an item in an Ansible template list?
我正在编写一个 Ansible 模板,它需要在主机组中生成一个 IP 列表,排除 当前主机 IP .我在网上和文档中四处搜索,但找不到任何允许您删除列表中项目的过滤器。我在下面创建了 (hacky) for 循环来执行此操作,但想知道是否有人知道 "best practice" 这样的过滤方式。
{% 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.
有difference
filter:
- debug: var=item
with_items: "{{ groups['my_group'] | difference([inventory_hostname]) }}"
这将为您提供 my_group
中没有当前主机的所有项目主机。
我正在编写一个 Ansible 模板,它需要在主机组中生成一个 IP 列表,排除 当前主机 IP .我在网上和文档中四处搜索,但找不到任何允许您删除列表中项目的过滤器。我在下面创建了 (hacky) for 循环来执行此操作,但想知道是否有人知道 "best practice" 这样的过滤方式。
{% 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.
有difference
filter:
- debug: var=item
with_items: "{{ groups['my_group'] | difference([inventory_hostname]) }}"
这将为您提供 my_group
中没有当前主机的所有项目主机。