実行時の include_role と import_role
Play の途中で Role を動的に呼び出します。
「実行時の include_role と import_role」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
roles リストの先へ
トップレベルの roles リストでは、タスクが実行される前にロールが適用されます。ロールを play の途中で、タスクと同じ位置に実行したい場合もあります。
ロールをタスクとして呼び出す
include_role と import_role はどちらも、tasks セクションの中から他の手順と同じ流れでロールを呼び出せます。
tasks:
- import_role:
name: nginximport_role は静的に処理される
import_role は実行開始前、playbook の解析時に処理されます。タスクは早い段階でインライン化されるため、実行時のデータに依存できません。
include_role は動的に処理される
include_role は実行中、そのタスクに到達した時点で処理されます。そのため、facts や登録した結果に応じて動作できます。
tasks:
- include_role:
name: backup
when: do_backupロールをループする
include_role は動的に実行されるため、ループに入れて、反復ごとに異なる変数で同じロールを適用できます。
- include_role:
name: deploy_app
loop: "{{ app_list }}"import_role ではループできない
import_role は解析時に解決されるため、loop をサポートしません。ロールを繰り返し実行する必要がある場合は include_role を使います。
when の動作の違い
import_role に when を指定すると、その条件が内部のすべてのタスクにコピーされます。include_role の when は、ロール全体を1つの単位として制御します。
どちらでも変数を渡せる
どちらの形式でも、roles リストと同じように vars を使ってロールをパラメーター化できます。値はそのまま組み込まれたロールに渡されます。
- include_role:
name: web
vars:
http_port: 8080タグと静的処理・動的処理
import_role では、インポートされたタスクのタグが --list-tags に表示されます。include_role では、include 自体にタグを付ける必要があります。
適切なツールを選ぶ
予測可能で常に実行される構造には import_role を使います。条件付きやループ内でロールを実行する必要がある場合は include_role を使います。
同じパターンが2つのレベルにある
Ansible はタスクファイルにも同じ静的・動的の使い分けを提供しています。import_tasks と include_tasks は、これらのロール用キーワードに正確に対応します。
クイックチェック
ループ内でロールを適用できるキーワードを思い出してみましょう。
まとめ
静的な解析時の構造には import_role を使い、ループや条件を伴う動的な実行時の呼び出しには include_role を使います。🔁
よくある質問
「実行時の include_role と import_role」レッスンは無料ですか?
はい。「実行時の include_role と import_role」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「実行時の include_role と import_role」で何を学びますか?
Play の途中で Role を動的に呼び出します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「実行時の include_role と import_role」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- meta/main.yml における Role の依存関係
- defaults と vars:上書き順序
- 実行時の include_role と import_role
- allow_duplicates と Role の冪等性