概要
Ansibleのwait_for_connection
を利用してターゲットノードのOSを再起動の完了を待ってみようと思います。
playbook例
shell
でサーバの再起動を実施しています。async
とpoll
を指定することで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)
- 作者: 北山晋吾,塚本正隆,畠中幸司
- 出版社/メーカー: インプレス
- 発売日: 2018/03/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る