allow_duplicates と Role の冪等性
Role の繰り返し実行を制御します。
「allow_duplicates と Role の冪等性」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
ロールはデフォルトで1回だけ実行される
2つのロールが同じ common ロールに依存している場合、Ansible は効率よく処理し、1つの play の中で common を2回ではなく1回だけ実行します。
重複排除がある理由
この重複排除により、共有のセットアップロールが高コストな処理を繰り返すのを防げます。たとえば、アプリロールごとにベースの堅牢化ロールを再実行せずに済みます。
同じロール、同じパラメーター
スキップされるのは、ロールが同じパラメーターで要求された場合だけです。同一の呼び出しは、すでに完了したものとして扱われます。
異なるパラメーターなら再実行される
同じロールを異なる変数で呼び出すと、Ansible は再度実行します。2つの設定を持つ vhost ロールなら、意図どおり2回適用されます。
roles:
- role: vhost
vars: { name: site_a }
- role: vhost
vars: { name: site_b }allow_duplicates を確認する
meta/main.yml の allow_duplicates 設定で、この動作を制御できます。true に設定すると、1つの play の中でロールを繰り返し実行できます。
# meta/main.yml
allow_duplicates: true重複を許可するタイミング
複数回の適用を想定したロールで有効にします。たとえば、呼び出しごとに新しい処理を行う複数ユーザーや仮想ホストの作成などです。
デフォルトは false
デフォルトでは allow_duplicates は false なので、同じパラメーターのロールは1回だけ実行されます。1度だけ行うセットアップロールでは無効のままにします。
重複排除は冪等性ではない
重複した呼び出しをスキップするのは、実行時の利便性にすぎません。本当の冪等性とは、実行回数に関係なく各タスクが状態を収束させることです。
冪等なタスクを作る
ロール内では、生の command よりも状態ベースのモジュールを優先します。真に冪等なロールなら、問題なく2回適用できます。
include_role は常に再実行される
注意が必要です。include_role は重複排除のロジックを同じようには適用しません。動的に組み込まれたロールは、到達するたびに実行されます。
組み合わせやすく安全にする
重複排除、allow_duplicates、冪等なタスクを組み合わせると、きれいに構成でき、再実行しても安全なロール階層を構築できます。
クイックチェック
ロールをプレイ内で複数回実行できるようにする設定を思い出してください。
まとめ
Ansible は同一のロール呼び出しを重複排除します。1つを繰り返すには allow_duplicates を true に設定し、安全に再実行できるようタスクは冪等に保ってください。♻️
よくある質問
「allow_duplicates と Role の冪等性」レッスンは無料ですか?
はい。「allow_duplicates と Role の冪等性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「allow_duplicates と Role の冪等性」で何を学びますか?
Role の繰り返し実行を制御します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「allow_duplicates と Role の冪等性」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- meta/main.yml における Role の依存関係
- defaults と vars:上書き順序
- 実行時の include_role と import_role
- allow_duplicates と Role の冪等性