https://groups.google.com/forum/#!topic/ansible-project/rBcWzXjt-Xc
ここから拝借
tasks:
- name: set fact
set_fact:
marker: marker
- name: group by marker
group_by: key=marker
changed_when: no
- name: target task
debug:
msg: "Performing task on {{ inventory_hostname }}, item is {{ item }}"
with_items: "{{ groups['marker'] }}"
when: "hostvars[item].inventory_hostname == inventory_hostname"
markerという変数を各ホストで設定して、その変数でgroup_byすることによって、
タスクが実行されるホストをグルーピングできる模様。
なので、group_byまでいくと以下のような配列が出来る
#host1, host2の2ホストで実行した場合
groups['marker'] = ['host1', 'host2']
あとは、上記変数を with_items
で食わせてあげて、
when
でhostvarsを順番に回してあげ、現在実行対象のinventory_hostname
を比較することで、
上記配列の1ホストごとに順番にタスクが回っていく仕組み(っぽい)