2017-01-20 7 views
1

私は3つのサーバーA、B、Cを持っています。私はj2のテンプレートで以下を実行すると、3つのサーバーをすべて取得します。可能なjinja2フィルタのipaddress

テンプレートを実行するサーバーを無視するにはどうすればよいですか?サーバーAが実行されている場合の元のために

は、それはあなたのサーバーのリストからのみ、サーバーB & C.

"retry_join": [" 
       {% for host in groups['servers']%} 
        {{ hostvars[host]['ansible_ssh_host'] }} 
        {% if not loop.last %}, {% endif %} 
       {% endfor %} 
       "] 

答えて

2

除外​​を取得する必要があります

{% for host in groups['servers'] | difference([inventory_hostname]) %} 
+0

ありがとうございます!これは非常にきれいな解決策です! –

+0

動的インベントリスクリプトを使用してサーバリストを取得しています。 difference([inventory_hostname])を使用すると、リストに変更がありませんでした。 "retry_join":["A、B、C"] – John

+0

現在のホストが実際にサーバグループに入っているかどうかを調べるには、debug {groups '' '} 'と' inventory_hostname' –

0

あなたはこのようなチェックをしてみてくださいループ変数が現在のホストではないことを確認してください:

+0

yep :)コメントを削除します。 –

関連する問題