Module で Check Mode をサポートする
カスタムコードをドライランに対応させます。
「Module で Check Mode をサポートする」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
チェックモードとは
check mode では、ユーザーは --check を使ってプレイブックを実行し、変更内容を事前に確認できます。ホスト上では実際の変更は行われません。
ansible-playbook site.yml --checkモジュール側で明示的に対応する
チェックモードは自動的には有効になりません。このモードでは変更を一切行わないことをモジュールが保証すると宣言し、Ansible に対応を知らせます。
AnsibleModule で宣言する
モジュールを構築するときに supports_check_mode=True を設定します。このフラグによって、コードがドライランの要求に対応することを Ansible に伝えます。
module = AnsibleModule(
argument_spec=spec,
supports_check_mode=True)module.check_mode を読み取る
実行時には module.check_mode を確認します。ユーザーが --check を指定すると True になり、その値に応じて処理を分岐します。
if module.check_mode:
module.exit_json(changed=True)適用せずに計算する
チェックモードでも、変更が必要かどうかは計算します。ただし、システムに何も書き込まずに処理を止めます。
変更予定の内容を報告する
正しい changed の値を設定して早期に終了し、何も変更していなくてもドライランのプレビューが正確になるようにします。
if module.check_mode:
module.exit_json(changed=needs_change)読み取りは常に安全
現在の状態を取得しても何も変更されないため、チェックモードで実行して問題ありません。スキップする必要があるのは write の手順だけです。
忘れると危険です
チェックモードへの対応を省略すると、ドライラン中でもモジュールがホストを変更してしまう可能性があります。これはユーザーの期待を裏切ることになります。
通常実行のロジックを再現する
チェックモードでの変更検出は、通常実行時と完全に一致させる必要があります。誤ったプレビューは、プレビューがないよりも悪い結果を招きます。
両方の経路をテストする
--check を付けた場合と付けない場合の両方でモジュールを実行します。ドライランが同じ changed の結果を報告し、システムを変更しないことを確認してください。
チェックモードが信頼を築く
check mode に対応したモジュールなら、適用前にチームで安全にプレビューできます。この丁寧な作りこそが、おもちゃのモジュールと本番用モジュールの違いです。
クイックチェック
モジュールがチェックモードに対応するために必要な 2 つのことを思い出してください。
まとめ
supports_check_mode=True を渡し、module.check_mode に応じて分岐し、変更内容は計算するものの書き込みはスキップし、changed を正直に報告します。これでモジュールは安全なドライランに対応できました。🔍
よくある質問
「Module で Check Mode をサポートする」レッスンは無料ですか?
はい。「Module で Check Mode をサポートする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Module で Check Mode をサポートする」で何を学びますか?
カスタムコードをドライランに対応させます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Module で Check Mode をサポートする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- カスタム Module を作成するタイミング
- AnsibleModule と Argument Spec
- JSON を返し changed を遵守する
- Module で Check Mode をサポートする