0Pricing
DevOps Bootcamp · レッスン

rescue と always による Try / Catch

失敗から適切に復旧します。

「rescue と always による Try / Catch」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

block に安全網を追加する

block を rescue や always と組み合わせると、タスクに try、catch、finally の仕組みを持たせられます。失敗から回復できるようになります。🛟

rescue セクション

block 内のいずれかのタスクが失敗すると、Ansible は rescue に移り、catch 句のようにそこに記述したタスクを実行します。

- block:
    - ansible.builtin.command: /opt/risky-step
  rescue:
    - ansible.builtin.debug:
        msg: "Step failed, recovering"

always は何があっても実行される

always セクションは、block が成功しても失敗しても実行されます。一時ファイルの削除などのクリーンアップに最適です。

- block:
    - ansible.builtin.command: /opt/deploy
  always:
    - ansible.builtin.file:
        path: /tmp/lock
        state: absent

3つを組み合わせる

block、rescue、always を1つの構造として使います。処理を試し、失敗を捕捉し、最後に必ず適切に終了します。

- block:
    - ansible.builtin.command: /opt/deploy
  rescue:
    - ansible.builtin.debug:
        msg: "Rolling back"
  always:
    - ansible.builtin.debug:
        msg: "Done either way"

rescue は失敗状態をリセットする

rescue が正常に完了すると、ホストは失敗状態ではなくなります。block が成功した場合と同じように、play の実行が続きます。

実行順序

まず block 内のタスクが実行されます。失敗すると、block の残りはスキップされて rescue が始まります。always はどの場合でも最後に実行されます。

rescue 自体が失敗した場合

rescue 内のタスクも失敗すると、ホストは失敗状態になります。ただし、そのホストで play が停止する前に always は実行されます。

エラーを確認する

rescue 内では ansible_failed_task と ansible_failed_result を読み取り、どのタスクが失敗したのか、その理由は何かを確認できます。

- rescue:
    - ansible.builtin.debug:
        msg: "Failed task was {{ ansible_failed_task.name }}"

実例:ロールバック

典型的なパターンは、block でデプロイし、rescue で変更を元に戻し、always で再起動やロック解除を行う方法です。毎回、きれいに復旧できます。

単にエラーを隠すだけではない

rescue はエラーを黙らせるためではなく、適切に復旧するために使います。失敗を記録して状態を修正し、何も問題がなかったかのように扱わないでください。⚠️

rescue がなければ即座に停止する

rescue セクションがない場合、失敗した block は通常の失敗したタスクと同じように動作し、そのホストでの play の実行が直ちに停止します。

クイックチェック

always の動作を確認しましょう。

まとめ

rescue は block の失敗を捕捉してホストを復旧し、always はクリーンアップのために毎回実行されます。Ansible における try、catch、finally です。✅

よくある質問

「rescue と always による Try / Catch」レッスンは無料ですか?

はい。「rescue と always による Try / Catch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「rescue と always による Try / Catch」で何を学びますか?

失敗から適切に復旧します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

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

「rescue と always による Try / Catch」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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