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>
他のフィルターも試しましたが、期待した結果が得られませんでした。
これにはどのフィルターを使用すればよいですか? (適切なものが見つかりませんでした)
ansible_ip_addresses
はリストなので、ネストされたリスト(IPアドレス付き)を持つ(ホストの)リストがあります。
unique
とjoin
を適用する前に、フラット化することをお勧めします。
{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | sum(start=[]) | unique | join(',') }}
これにより、一意のアイテムを取得してカンマで結合するよりも、要素として単一のIPアドレスを持つフラットリストが作成されます。