ansibleで2重ループ

ansible2.0から2重ループができるようになってました。
playbookを書いてるとたまに2重ループしたくなる時があって、それのメモ

#loop.yml
- hosts: localhost
  connection: local
  vars: 
     hosts:
       - ip: 192.168.33.99
       - ip: 192.168.33.100
     attributes:
       - web
       - db
  tasks:
    - name: test double loop
      include: ./inner_loop.yml
      with_items: "" 
      loop_control:
        loop_var: outer_item

#inner_loop.yml
- debug: msg="  "
  with_items: "" 

これで、


TASK [debug] *******************************************************************
ok: [localhost] => (item=web) => {
    "item": "web",
    "msg": "192.168.33.99  web"
}
ok: [localhost] => (item=db) => {
    "item": "db",
    "msg": "192.168.33.99  db"
}

TASK [debug] *******************************************************************
ok: [localhost] => (item=web) => {
    "item": "web",
    "msg": "192.168.33.100  web"
}
ok: [localhost] => (item=db) => {
    "item": "db",
    "msg": "192.168.33.100  db"
}

PLAY RECAP *********************************************************************
localhost                  : ok=5    changed=0    unreachable=0    failed=0

こんな結果が取得できるようになる。
2重ループが必要なplaybookは極力ないような方がいいな。

リンク

playbooks_loops - loop-control

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

Jp, Tokyo https://connvoi.com