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"
}