0Pricing
Ansible Academy · レッスン

実行時の include_role と import_role

Play の途中で Role を動的に呼び出します。

「実行時の include_role と import_role」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。

roles リストの先へ

トップレベルの roles リストでは、タスクが実行される前にロールが適用されます。ロールを play の途中で、タスクと同じ位置に実行したい場合もあります。

ロールをタスクとして呼び出す

include_role と import_role はどちらも、tasks セクションの中から他の手順と同じ流れでロールを呼び出せます。

tasks:
  - import_role:
      name: nginx

import_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チューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「実行時の include_role と import_role」で何を学びますか?

Play の途中で Role を動的に呼び出します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ansible Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「実行時の include_role と import_role」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAnsible Academyレッスンでコードを書いて実行できますか?

はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. meta/main.yml における Role の依存関係
  2. defaults と vars:上書き順序
  3. 実行時の include_role と import_role
  4. allow_duplicates と Role の冪等性
← Ansible Academyに戻る