import & include による Playbook の分割
静的なタスク取り込みと動的なタスク取り込みを学びます。
「import & include による Playbook の分割」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
巨大な1ファイルは負担になります
500行のplaybookは読みにくく、再利用も困難です。Ansibleでは処理を分割し、必要な場所で組み込むことができます。✂️
2つの系統: import と include
Ansibleには、静的に取り込むimport_*と、動的に取り込むinclude_*という2つの再利用方法があります。違いは実行されるタイミングです。
静的なimport_tasks
import_tasksは、タスクが1つも実行される前の、playbookの解析時に前処理されます。固定的で予測しやすい方法です。
- import_tasks: setup.yml動的なinclude_tasks
include_tasksは実行時に順番どおり処理されるため、playの前半で決まった変数や結果に応じて動作できます。
- include_tasks: "{{ os_family }}.yml"タイミングが重要な理由
importは静的であるため、ファイル名に実行時の変数を使用できません。その場合は、代わりに動的なinclude_tasksが必要です。
ループにはincludeが必要
ファイル全体を繰り返し実行したい場合、対応しているのはinclude_tasksだけです。対象ファイルの集合がplayの実行中に決まるためです。
- include_tasks: user.yml
loop: "{{ users }}"タグの動作の違い
import_tasksに付けたタグはインポートされたすべてのタスクに適用されますが、include_tasksに付けたタグはinclude文自体にだけ適用されます。
Playbook全体をインポートする
トップレベルではimport_playbookを使って、playbook全体を組み合わせます。site.ymlがプロジェクトを組み立てる方法もまさにこれです。
- import_playbook: webservers.yml
- import_playbook: dbservers.yml複数のPlayで再利用する
共通のブートストラップ処理のような共有タスクファイルは、多くのplaybookにインポートできます。つまり、ロジックを一度だけ書いてどこでも再利用できます。
妥当なデフォルト
予測可能で常に実行する手順にはimportを優先してください。ループや変数を使ったファイル名など、実行時の判断が本当に必要な場合だけincludeを使用します。
分割を実際に使う
ここでは、playで静的なセットアップファイルをインポートし、その後にOS固有のファイルを条件付きでインクルードしています。2つのツールを、それぞれ別の目的で使っています。🎯
tasks:
- import_tasks: base.yml
- include_tasks: "{{ ansible_os_family }}.yml"クイックチェック
実行時の変数からファイル名を組み立てる必要があります。どのディレクティブが使えるでしょうか。
まとめ
import_*は静的で最初に解析される一方、include_*は動的でその場で実行され、ループや変数を使ったファイル名に対応できることを学びました。✅
よくある質問
「import & include による Playbook の分割」レッスンは無料ですか?
はい。「import & include による Playbook の分割」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「import & include による Playbook の分割」で何を学びますか?
静的なタスク取り込みと動的なタスク取り込みを学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「import & include による Playbook の分割」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 推奨ディレクトリ構成
- group_vars & host_vars ディレクトリ
- import & include による Playbook の分割
- 規模に対応できる命名・コメント・スタイル