0Pricing
Ansible Academy · レッスン

失敗を制御する:failed_when と ignore_errors

何を失敗とみなすかを定義します。

「失敗を制御する:failed_when と ignore_errors」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全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 > 1

register と組み合わせる

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: false

ignore と 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チューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「失敗を制御する:failed_when と ignore_errors」で何を学びますか?

何を失敗とみなすかを定義します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「失敗を制御する:failed_when と ignore_errors」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAnsible Academyレッスンでコードを書いて実行できますか?

はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. block でタスクをグループ化する
  2. rescue と always による Try / Catch
  3. 失敗を制御する:failed_when と ignore_errors
  4. fail Module によるカスタム Assertion
← Ansible Academyに戻る