[解決済み] Ansibleのタスクが失敗する可能性がある場合、どのように再試行するのですか?
2022-03-12 01:35:09
質問
Ansibleのプレイで、データベースを再起動し、それに対していくつかの操作を行おうとしています。Restartコマンドは、再起動が開始されるとすぐに返され、データベースが稼働しているときには返されません。次のコマンドは、データベースへの接続を試行します。このコマンドは、データベースが起動していないときには失敗します。
2番目のコマンドを数回リトライしたい。最後の再試行が失敗した場合、私は私のプレーを失敗させたいと思います。
以下のようにリトライをすると
retries: 3
delay: 5
そうすると、最初のコマンド実行がすべて失敗してしまうので、リトライはまったく実行されません。そこで
ignore_errors: yes
しかし、この方法では、すべてのリトライが失敗しても、プレイはパスされます。成功するまで失敗を再試行し、最後の再試行から成功しない場合は失敗する簡単な方法はありますか?
解決方法は?
というあなたの主張が理解できません。 最初のコマンドの実行に失敗した "。Ansibleがこのように動作するとしたら、それは意味がありません。
次のようなタスクです。
- command: /usr/bin/false
retries: 3
delay: 3
register: result
until: result.rc == 0
を生成します。
TASK [command] ******************************************************************************************
FAILED - RETRYING: command (3 retries left).
FAILED - RETRYING: command (2 retries left).
FAILED - RETRYING: command (1 retries left).
fatal: [localhost]: FAILED! => {"attempts": 3, "changed": true, "cmd": ["/usr/bin/false"], "delta": "0:00:00.003883", "end": "2017-05-23 21:39:51.669623", "failed": true, "rc": 1, "start": "2017-05-23 21:39:51.665740", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
ということで、まさにお望み通りのようです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン