0Pricing
Ansible Academy · レッスン

Jinja2 の変数と式

テンプレートに値を埋め込みます。

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

テンプレート内の変数

playで利用できるすべての変数は、テンプレートでも利用できます。名前を{{ }}で囲むだけで、その値を出力できます。🌟

server_name {{ domain }};
worker_processes {{ cpu_count }};

辞書のキーにアクセスする

辞書型の変数では、ドット記法またはブラケット記法でキーにアクセスします。db.hostとdb['host']は、どちらも同じ値を返します。

host = {{ db.host }}
port = {{ db['port'] }}

リストをインデックスで参照する

位置を指定してリストから項目を1つ選びます。位置は0から数えます。{{ servers[0] }}で最初の項目を取得できます。

primary = {{ servers[0] }}
backup = {{ servers[1] }}

Ansibleのfactsを使う

収集したfactsも単なる変数なので、テンプレートから読み取れます。ansible_hostnameを使うと、ホスト自身の名前をファイルに出力できます。

# This host is {{ ansible_hostname }}
bind {{ ansible_default_ipv4.address }}

式の中で計算する

Jinja2では、波括弧の中で算術演算を行えます。値をハードコードする代わりに、worker数を2倍にするなどの計算ができます。

max_workers {{ cpu_count * 2 }}

文字列を連結する

~演算子で文字列を連結します。数値用のplusとは異なり、型に関係なく複数の要素をつなげられます。

url = http://{{ host ~ ':' ~ port }}

比較式

式を使って条件をテストすることもできます。cpu_count > 4のような比較は、後でロジックに使えるtrueまたはfalseを返します。

{{ http_port == 443 }}
{{ replicas >= 3 }}

テンプレート内のコメント

自分用のメモは{# ... #}で囲みます。Jinja2がこれらを完全に削除するため、レンダリングされたファイルには現れません。

{# This file is managed by Ansible #}
listen {{ http_port }};

未定義の変数は失敗する

デフォルトでは、存在しない変数を参照するとundefined variableエラーが発生し、playが停止します。Jinja2が意図的に厳密な動作をするためです。

文字列は注意して引用する

式の中でリテラル文字列を使う場合は、引用符が必要です。引用符がないと、Jinja2はprodを文字列prodではなく変数名として扱います。

{{ 'production' if env == 'prod' else 'staging' }}

3種類の波括弧

3種類を覚えておきましょう。{{ }}は値を出力し、{% %}はロジックを実行し、{# #}はコメントを保持します。それぞれ役割が異なります。

クイックチェック

変数に格納された値をテンプレートから出力したいとします。どの区切り文字を使えば出力できますか。

まとめ

テンプレート内で変数、facts、辞書のキー、リストの項目を読み取り、計算や文字列の連結、コメントの追加ができるようになりました。式によって設定ファイルを動的に生成できます。✨

よくある質問

「Jinja2 の変数と式」レッスンは無料ですか?

はい。「Jinja2 の変数と式」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。

「Jinja2 の変数と式」で何を学びますか?

テンプレートに値を埋め込みます。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Jinja2 の変数と式」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. template Module と .j2 ファイル
  2. Jinja2 の変数と式
  3. テンプレート内のループと if ブロック
  4. フィルター:default、join、upper
← Ansible Academyに戻る