Ansible Academy · レッスン

Smoke Test、ロールバック、通知

デプロイを検証し、復旧して結果を報告します。

レッスン 4/413 ステップ

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

リロードしてもデプロイは完了ではありません

完成したプレイが、動作するアプリとは限りません。スモークテスト、ロールバックの手順、通知も必要です。最後まで確実に完了させましょう。🔁

エンドポイントをスモークテスト

uriモジュールで実際のルートにアクセスし、ステータスコードが200であることをアサートします。アプリが正しく応答しなければ、デプロイを明確に失敗させるべきです。

- name: Smoke test
  ansible.builtin.uri:
    url: https://app.example.com/health
    status_code: 200
    return_content: true

正しいバージョンをアサート

さらに、レスポンスを読み取り、assertを使って稼働中のバージョンが、直前にデプロイしたものと一致することを確認します。

- ansible.builtin.assert:
    that:
      - "app_version in smoke.content"
    fail_msg: "Wrong version live"

デプロイをblockでまとめる

デプロイとテストをblockの中にまとめると、1つの失敗から共通の復旧処理を実行できます。

- block:
    - import_role:
        name: deploy
    - import_tasks: smoke.yml

rescueでロールバック

元に戻す処理をrescueに記述します。以前のバージョンを再デプロイすることで、リリースに失敗してもユーザーが壊れたコードを使い続ける事態を防げます。

  rescue:
    - name: Roll back
      ansible.builtin.git:
        repo: "{{ app_repo }}"
        version: "{{ previous_version }}"
        dest: /srv/app

常にトラフィックを再有効化

デプロイが成功した場合でもロールバックした場合でも、alwaysを使ってノードをロードバランサーの配下に戻します。ホストを孤立させてはいけません。

  always:
    - community.general.haproxy:
        state: enabled
        host: "{{ inventory_hostname }}"
      delegate_to: lb1

迅速かつ明確に失敗させる

問題が発生したら、failモジュールを使って役立つメッセージとともに処理を停止し、ログから何が壊れたのか正確に分かるようにします。

- ansible.builtin.fail:
    msg: "Health check failed on {{ inventory_hostname }}"

チームに通知

結果を報告します。community.general.slackタスクで成功または失敗を投稿すれば、デプロイが完了したことを人が把握できます。

- community.general.slack:
    token: "{{ slack_token }}"
    msg: "Deployed {{ app_version }} ✅"

メールでもチャットでも自由に

メールのほうがよいでしょうか。mailモジュールで概要を送信できます。どのチャネルでも構いません。重要なのは、デプロイの状態を明確かつ自動的に伝えることです。

- community.general.mail:
    to: ops@example.com
    subject: "Deploy {{ app_version }} complete"

最後に正常なバージョンを保持

ロールバックは、追跡している場合にのみ機能します。デプロイ前にprevious_versionを記録しておけば、rescueで何を復元すべきか分かります。

vars:
  previous_version: "2.4.0"
  app_version: "2.4.1"

信頼できるデプロイ

テストを実行し、失敗したらロールバックし、常にトラフィックを復旧して、チームに知らせます。これが最初から最後まで一貫したproduction-gradeのデプロイです。🎉

クイックチェック

トラフィックが復旧されることを保証するセクションはどれですか。

まとめ

スモークテスト、rescueでのロールバック、alwaysでの再有効化、チームへの通知によって、最後まで確実に完了させました。総仕上げの課題は完了です。🏆

無料で開始

AI チューターと学ぶ YAML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Smoke Test、ロールバック、通知」レッスンは無料ですか?

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

「Smoke Test、ロールバック、通知」で何を学びますか?

デプロイを検証し、復旧して結果を報告します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Smoke Test、ロールバック、通知」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. プロジェクトを設計する:Role と Inventory
  2. ホストのプロビジョニング・堅牢化・初期設定
  3. Load Balancer 配下でのローリングデプロイ
  4. Smoke Test、ロールバック、通知
← Ansible Academyに戻る