2 つのグループに属するホストの IP アドレスを抽出し、それらを .xml 構成ファイルで使用しようとしています。
ここで直面している問題は、jinja テンプレートで使用される式によって生成される出力です。 のような出力を実現したいのです10.3.5.1,10.3.5.2,10.3.5.2
が、代わりに次のようなものが得られます[u'10.3.5.1],[u'10.3.5.2],[u'10.3.5.2]
。
これは、jinja テンプレート内で使用される式です。
<member1>{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | unique | join(',') }}</member1>
他のフィルターもいくつか試してみましたが、期待した結果が得られませんでした。
これにはどのようなフィルターを使用すればよいですか? (適切なフィルターが見つかりませんでした)
答え1
ansible_ip_addresses
リストなので、ネストされたリスト (IP アドレスを含む) を持つリスト (ホスト) が存在します。
適用する前に平坦化しておくと良いでしょうunique
。join
{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | sum(start=[]) | unique | join(',') }}
これにより、単一の IP アドレスを要素として持つフラットなリストが作成され、一意の項目が取得されてコンマで結合されます。