web-dev-qa-db-ja.com

Ansibleテンプレートリストのアイテムを削除または除外する方法

ホストグループ内のIPのリストを生成する必要があるAnsibleテンプレートを作成していますexclude現在のホストIP 。オンラインでドキュメントを検索しましたが、リストからアイテムを削除するためのフィルターが見つかりませんでした。これを行うために以下の(ハッキー)forループを作成しましたが、このようなフィルタリングの「ベストプラクティス」の方法を誰かが知っているかどうか疑問に思っていました。

{% 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のみが印刷されます。

11
ScoSol

differencefilter があります:

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

これにより、my_group現在のホストなし。

20