Ansibleでリトライ処理をする
例えばAnsibleでTomcatを起動したとき、確認のためにhttpでアクセスして確認したいとします。 curlでローカルにアクセス、失敗したら数秒後に再度アクセスして確認という処理をしたかったのですが、 Ansibleでそんなのないよなーって思って探してみたらありましたよ。
Do-Until Loops
http://docs.ansible.com/playbooks_loops.html#do-until-loops
until
がloopから抜ける条件
retries
がリトライ回数
delay
がスリープの秒数
ですね
サンプル
さっきの仕様を実現するとしたら以下ですね。
- shell: curl -o /dev/null -w %{http_code} http://localhost:8080/ 2> /dev/null register: result until: result.stdout.find('200') != -1 retries: 6 delay: 20
ステータスコードが200以外だったら20秒後に再度リトライします。 6回繰り返して全て失敗したらエラーです。
意外と利用シーンは多めかもですね。活用したいと思います。