かべぎわブログ

技術的なことについてかけたらいいな…

Ansibleのblock内のrescueの動きを確認してみる

概要

Ansibleのblock のなかでrescureディレクティブを指定してみて動きを確認してみます。

そもそものrescueの説明

rescueblock内で定義したタスクのどれかがエラーになったときに実行する処理を記載することができるディレクティブです。
タスクが失敗したときの後処理として利用することができます。

rescueが実行されるパターンを確認してみる

以下のplaybookを利用してrescueを確認してみます。
shell./sonzaisinaiという存在しないコマンドが実行され、エラーとなるようにしています。

実行結果

./sonzaisinaiなんてものは存在しないのでエラーになり、resucueが実行されていることがわかります。

$  ansible-playbook block_rescue.yml

PLAY [localhost] **********************************************************************************************************************************************

TASK [command] ************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": "./sonzaisinai", "delta": "0:00:00.002727", "end": "2018-04-12 22:00:29.890869", "msg": "non-zero return code", "rc": 127, "start": "2018-04-12 22:00:29.888142", "stderr": "/bin/sh: ./sonzaisinai: No such file or directory", "stderr_lines": ["/bin/sh: ./sonzaisinai: No such file or directory"], "stdout": "", "stdout_lines": []}

TASK [debug] **************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "rescue実行"
}

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

rescueが実行されないパターンを確認してみる

shelllsコマンドを実行するようにしてみます。
lsはなんの問題もなく実行されるはずなのでエラーにはならない想定です。

実行結果

lsがなんの滞りもなく完了し、rescueが実行されていないことがわかります。

$  ansible-playbook block_rescue_ok.yml


PLAY [localhost] **********************************************************************************************************************************************

TASK [command] ************************************************************************************************************************************************
changed: [localhost]

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

おわりに

rescueはべんり


Ansible実践ガイド第2版 impress top gearシリーズ

Ansible実践ガイド第2版 impress top gearシリーズ