Jinja2 の変数と式
テンプレートに値を埋め込みます。
「Jinja2 の変数と式」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全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チューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Jinja2 の変数と式」で何を学びますか?
テンプレートに値を埋め込みます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Jinja2 の変数と式」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。