0Pricing
DevOps Bootcamp · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

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

  1. カスタム Module を作成するタイミング
  2. AnsibleModule と Argument Spec
  3. JSON を返し changed を遵守する
  4. Module で Check Mode をサポートする
← DevOps Bootcampに戻る