テンプレート内のループと if ブロック
繰り返しの設定セクションを生成します。
「テンプレート内のループと if ブロック」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
ロジックは{% %}の中に記述する
値を出力するだけでなく、Jinja2では{% %}タグの中で制御ロジックを実行できます。これにより、1つのテンプレートから多数の行を生成できます。🔁
基本的なforループ
forループを使うと、リストの各項目に対して行を繰り返し生成できます。項目ごとに、レンダリングされるテキストのブロックが1つ追加されます。
{% for host in backends %}
server {{ host }};
{% endfor %}ブロックは必ず閉じる
開始タグには必ず終了タグが必要です。endifが条件を終了するように、endforはループを終了します。閉じ忘れるとレンダリングに失敗します。
辞書をループする
.items()を使って辞書のキーと値のペアを順に処理し、それぞれを取得して構造化された設定を生成できます。
{% for key, val in settings.items() %}
{{ key }} = {{ val }}
{% endfor %}loop変数
ループ内では、Jinja2が現在の回数を示すloop.indexを提供します。また、loop.firstやloop.lastを便利なブール値として利用できます。
{% for s in servers %}
server{{ loop.index }} {{ s }};
{% endfor %}単純なifブロック
ifブロックは、条件が真の場合にのみ本体をレンダリングします。そのため、必要な場合だけオプション設定を出力できます。
{% if enable_ssl %}
ssl on;
{% endif %}if、elif、else
elifと最後のelseを使って選択肢を連結します。Pythonと同じように、1つの分岐だけがレンダリングされます。
{% if env == 'prod' %}
level = warn
{% else %}
level = debug
{% endif %}ループ内の条件
forの中にifを入れ子にすると、条件に一致する項目だけをレンダリングできます。たとえば、プール内の無効なサーバーをスキップできます。
{% for h in hosts %}
{% if h.enabled %}
server {{ h.ip }};
{% endif %}
{% endfor %}空白を制御する
ループによって空行が残ることがあります。{%- -%}のようにダッシュを付けると、前後の空白を削除して出力を整えられます。
{%- for h in hosts -%}
{{ h }}
{%- endfor -%}forループのelse
forにはelseを付けられます。これはリストが空の場合にのみ実行されるため、適切な代替行を出力するのに便利です。
{% for h in backends %}
server {{ h }};
{% else %}
# no backends defined
{% endfor %}出力タグとロジックタグ
違いを明確にしておきましょう。{{ }}は値を出力し、{% %}は処理の流れを制御しますが、それ自体は何も出力しません。
クイックチェック
リスト内の各ホストに対して設定行を繰り返し出力したいとします。そのループを開始するタグはどれですか。
まとめ
forでループし、ifで分岐し、loop.indexを読み取り、ブロックを入れ子にして空白を削除できるようになりました。これで、1つのテンプレートから動的な設定を生成できます。✨
よくある質問
「テンプレート内のループと if ブロック」レッスンは無料ですか?
はい。「テンプレート内のループと if ブロック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「テンプレート内のループと if ブロック」で何を学びますか?
繰り返しの設定セクションを生成します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「テンプレート内のループと if ブロック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- template Module と .j2 ファイル
- Jinja2 の変数と式
- テンプレート内のループと if ブロック
- フィルター:default、join、upper