Open3

Ansible Tips

Naoyuki YamadaNaoyuki Yamada

条件によって途中でplaybookを止めたいとき

metaモジュールが使える。
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/meta_module.html

end_play: すべてのホストで以後のタスクを終了

実行中のいずれかのホストで条件がマッチしたら全てのホストに影響する。

    - name: end if check
      ansible.builtin.meta: end_play
      when: some_var == "foo"

end_host: 条件にマッチしたホストで以後のタスクを終了

    - name: end if check
      ansible.builtin.meta: end_host
      when: some_var == "foo"
Naoyuki YamadaNaoyuki Yamada

templateの実行後、ファイルに変更があったらsystemdを再起動する

https://stackoverflow.com/questions/57571765/restart-service-when-service-file-changes-when-using-ansible

---
- name: nginx template
  ansible.builtin.template:
    src: nginx_conf.j2
    dest: /etc/nginx/nginx.conf
  register: nginx_conf

- name: restart service
  ansible.builtin.systemd:
    name: nginx
    state: restarted
  when: nginx_conf.changed

register のインデント位置に注意。