Как удалить или исключить элемент из списка шаблонов 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 ответ:
Есть
difference
фильтр для этого:- debug: var=item with_items: "{{ groups['my_group'] | difference([inventory_hostname]) }}"
Это даст вам все элементы хостов из
my_group
Без текущего хоста.