失敗を制御する:failed_when と ignore_errors
何を失敗とみなすかを定義します。
「失敗を制御する:failed_when と ignore_errors」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
失敗の意味は自分で決める
Ansible はゼロ以外の戻りコードでタスクを失敗としますが、これを上書きできます。失敗を定義し直すキーワードが2つあります。🎛️
ignore_errors で処理を続行
ignore_errors を true に設定すると、失敗したタスクはログに記録されますが、play は停止しません。ホストは play の対象に残ります。
- name: Try optional cleanup
ansible.builtin.command: /opt/maybe-missing
ignore_errors: true失敗として表示されることに変わりはない
ignore_errors は失敗を隠しません。出力には引き続き FAILED と表示されます。失敗によって後続のタスクが停止するのを防ぐだけです。
failed_when で失敗を再定義する
failed_when を使うと、独自の失敗条件を設定できます。タスクは、指定した式が true の場合にのみ失敗します。
- name: Check status
ansible.builtin.command: /opt/healthcheck
register: result
failed_when: result.rc > 1register と組み合わせる
failed_when では通常、登録した結果の rc、stdout、stderr を調べます。まず出力を取得してから判定します。
- ansible.builtin.command: grep ERROR app.log
register: out
failed_when: "'CRITICAL' in out.stdout"このタスクを決して失敗させない
failed_when を false に設定すると、戻りコードがゼロ以外でもタスクは決して失敗しません。ノイズが多いことが分かっているコマンドには、ignore_errors よりも適しています。
- ansible.builtin.command: pkill myapp
failed_when: false複数の条件を組み合わせる
failed_when には、and で結合した条件のリストや、or を使った複合式を指定して、より柔軟なルールを定義できます。
failed_when:
- result.rc != 0
- "'skipped' not in result.stdout"changed_when は関連するキーワード
関連する changed_when は、失敗ではなく changed ステータスを制御します。command タスクを常に未変更として扱う場合などに便利です。
- ansible.builtin.command: /opt/report
changed_when: falseignore と failed_when の違い
成功条件を正確に記述できる場合は failed_when を使い、本当に任意で最善を尽くすだけの手順には ignore_errors を使います。
rescue と相性がよい
エラーを無視する代わりに、実際の失敗で rescue ブロックを実行させます。何もせずスキップするのではなく、復旧処理を行えます。🤝
どちらもタスク単位
failed_when と ignore_errors はどちらも、play 全体ではなく1つのタスクに設定します。各タスクが自分の失敗時の動作を決めます。
クイックチェック
2つのキーワードを比較してみましょう。
まとめ
failed_when はタスクが失敗する条件を正確に定義し、ignore_errors は失敗しても play を続行させます。ルールは自分で決められます。✅
よくある質問
「失敗を制御する:failed_when と ignore_errors」レッスンは無料ですか?
はい。「失敗を制御する:failed_when と ignore_errors」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「失敗を制御する:failed_when と ignore_errors」で何を学びますか?
何を失敗とみなすかを定義します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「失敗を制御する:failed_when と ignore_errors」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- block でタスクをグループ化する
- rescue と always による Try / Catch
- 失敗を制御する:failed_when と ignore_errors
- fail Module によるカスタム Assertion