Playbook を故意に止めたい
Ansible Playbook を作成していると、スクリプトの途中で強制的に止めたいときが、ままあります。
そんなときは、 fail という故意にスクリプトを失敗させることができるモジュールがありますので、これを使うとよいでしょう。
パラメーターは msg
のみ。
この msg
で失敗時に出力するメッセージを設定できます。
指定しない場合のデフォルトメッセージは
Failed as requested from task
「タスクからの要求に応じて失敗しました」といったところでしょうか。
使い方としては、
roles/foobar-server/tasks/main.yml
- name: planned failure
fail:
msg: デバッグ中:故意に失敗させています。
上記のように書いておくと、以下のように Fatal に失敗してくれます。
TASK [foobar-server : planned failure] *********************************************
fatal: [foobar-server]: FAILED! => {"changed": false, "msg": "デバッグ中:故意に失敗させています。"}
なお --check オプションを付けたときでも素直に失敗してくれます。
指定した条件のときに失敗させる
when ステートメントと組み合わせれば、所定の条件のときに後続の処理をすべて辞めることができます。
以下は必要なファイルがなかったときにスクリプトを止めるサンプルです。
tasks/main.yml
- name: foobar file exists
stat: path=/etc/foobar.txt
register: foobar_file
- name: planned failure
fail:
msg: FooBarファイルが存在しないため処理を中断します
when: not foobar_file.stat.exists
みなさんも fail モジュールを使って Ansible Playbook をガンガン止めてみてください。