Как удалить или исключить элемент из списка шаблонов Ansible?


Я пишу шаблон Ansible, который должен создать список ip-адресов в группе хостов, исключая текущий IP хостов. Я искал в интернете и в документации, но не смог найти ни одного фильтра, который позволил бы удалить элемент из списка. Я создал (hacky) для цикла ниже, чтобы сделать это, но мне было интересно, знает ли кто-нибудь "лучший способ" фильтрации, как это.

{% set filtered_list = [] %}

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

Допустим, что groups ['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 5

1 ответ:

Есть difference фильтр для этого:

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

Это даст вам все элементы хостов из my_group Без текущего хоста.