ansible でネストされた item に対してループを回す
動作環境
- ansible 2.1
with_subelements でネストされたループを回す
with_items のかわりに with_subelements を利用することで、ネストされた item に対してループを回すことが出来ます。
例
vars/main.yml
users: - sam: email: - sam@example.com - sam@example.jp - mary: email: - mary@example.com - mike: email: - mike@example.com - mike@example.net
tasks/main.yml
- name: print email addresses debug: msg="{{ item[1] }}" with_subelements: - "{{ users }}" - email
実行結果
ok: [localhost] => (item=({u'sam': None}, u'sam@example.com')) => { "item": [ { "sam": null }, "sam@example.com" ], "msg": "sam@example.com" } ok: [localhost] => (item=({u'sam': None}, u'sam@example.jp')) => { "item": [ { "sam": null }, "sam@example.jp" ], "msg": "sam@example.jp" } ok: [localhost] => (item=({u'mary': None}, u'mary@example.com')) => { "item": [ { "mary": null }, "mary@example.com" ], "msg": "mary@example.com" } ok: [localhost] => (item=({u'mike': None}, u'mike@example.com')) => { "item": [ { "mike": null }, "mike@example.com" ], "msg": "mike@example.com" } ok: [localhost] => (item=({u'mike': None}, u'mike@example.net')) => { "item": [ { "mike": null }, "mike@example.net" ], "msg": "mike@example.net" }