Smoke Test、ロールバック、通知
デプロイを検証し、復旧して結果を報告します。
「Smoke Test、ロールバック、通知」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全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.ymlrescueでロールバック
元に戻す処理を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での再有効化、チームへの通知によって、最後まで確実に完了させました。総仕上げの課題は完了です。🏆
よくある質問
「Smoke Test、ロールバック、通知」レッスンは無料ですか?
はい。「Smoke Test、ロールバック、通知」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Smoke Test、ロールバック、通知」で何を学びますか?
デプロイを検証し、復旧して結果を報告します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Smoke Test、ロールバック、通知」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロジェクトを設計する:Role と Inventory
- ホストのプロビジョニング・堅牢化・初期設定
- Load Balancer 配下でのローリングデプロイ
- Smoke Test、ロールバック、通知