selectフィルターを使ってリストから指定の文字列だけ出力する方法。
jinja2やansibleのドキュメントだと調べるのが大変に感じたので備忘録として残しておきます。
test01.yml
- name: practice filter
hosts: localhost
gather_facts: False
vars:
test_servers:
- server1
- server2
- server3
- server4
tasks:
- name: extract only server1
vars:
v: "{{ test_servers|select('equalto', 'server1')|list }}"
debug: var=v
出力結果
ok: [localhost] => {
"v": [
"server1"
]
}
selectフィルターは'equalto'などの変数 + listとセットで使ってあげないと、ジェネレーターを返してきてしまいます。
セットで使ってないPlaybook
``` test01.yml-
name: practice filter
hosts: localhost
gather_facts: Falsevars:
test_servers:
- server1
- server2
- server3
- server4tasks:
- name: extract only server1
vars:
v: "{{ test_servers|select('server1') }}"
debug: var=v
- name: extract only server1
出力結果
ok: [localhost] => {
"v": ""
}
後日リスト全体をマッチさせたい場合の書き方について編集予定。
coming soon.