かべぎわブログ

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

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

概要

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

alwaysの説明

alwaysblock内で指定できるディレクティブで、その名の通りいつでも実行される処理です。
タスクが成功しても失敗しても実行されるため、エラーハンドリングなどに利用することができます。

確認してみる

shell./sonzaisinaiという存在しないコマンドを実行するように設定し、failedになってもalwaysがちゃんと実行されるかどうか確認してみます。

playbook

実行結果

alwaysがちゃんと実行されていることがわかります!

$  ansible-playbook block_always.yml

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

TASK [command] ************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": "./sonzaisinai", "delta": "0:00:00.002666", "end": "2018-04-12 22:22:17.968083", "msg": "non-zero return code", "rc": 127, "start": "2018-04-12 22:22:17.965417", "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": "always実行"
}
    to retry, use: --limit @/home/ec2-user/block_always.retry

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

おわりに

alwaysもべんり


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

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