LoginSignup
2

More than 5 years have passed since last update.

Ansibleでタスクをサーバごとに順番で実行する

Posted at

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ホストごとに順番にタスクが回っていく仕組み(っぽい)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2