かべぎわブログ

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

Ansibleのwait_for_connectionをつかってOSの再起動を待つ

概要

Ansibleのwait_for_connectionを利用してターゲットノードのOSを再起動の完了を待ってみようと思います。

playbook例

shellでサーバの再起動を実施しています。asyncpollを指定することでsshコネクションが切断されても処理をそのまま続けることができます。 wait_for_conenctionを利用してssh:22ポートがオープンするまで待機する設定をいれています。

実行してみる

サーバが再起動されてもplaybookがそのまま動いていることがわかります!

PLAY [target] ************************************************************************************************************************************************

TASK [connect check] *****************************************************************************************************************************************
ok: [target] => {"changed": false, "ping": "pong"}

TASK [restart machine] ***************************************************************************************************************************************
changed: [target] => {"ansible_job_id": "205786277660.3357", "changed": true, "finished": 0, "results_file": "/root/.ansible_async/205786277660.3357", "started": 1}

TASK [wait for reboot] ***************************************************************************************************************************************
ok: [target] => {"changed": false, "elapsed": 48}

TASK [connect check] *****************************************************************************************************************************************
ok: [target] => {"changed": false, "ping": "pong"}

PLAY RECAP ***************************************************************************************************************************************************
target                     : ok=4    changed=1    unreachable=0    failed=0   

おわりに

途中で再起動が行われてもplaybookをそのまま続けることができました。
これを利用することでインストール後に再起動が必要なものの実行確認まですることが可能そうです。


Ansible実践ガイド 第2版 (impress top gear)

Ansible実践ガイド 第2版 (impress top gear)