テンプレート変数とは?解説
テンプレート変数とは、テンプレート内の名前付きプレースホルダーであり、テンプレートエンジンが最終的なテキストを生成するために具体的な値に置き換えます。
テンプレート変数を使うと、埋めるべき空欄のあるファイルを1つ書き、そこから多数の具体的なバージョンを生成できます。テンプレートエンジンはテンプレートを読み込み、各変数を検索して値を置換します。CIはこれに依存して、環境ごとに設定、マニフェスト、レポートをレンダリングします - 1つのテンプレートで、ステージングとプロダクションに異なる値を与えます。
テンプレート変数とは何か
テンプレート変数とは、テンプレート構文で書かれたプレースホルダーであり、多くの場合は名前を二重波かっこで囲んだもので、それ以外は静的なテキストの中に埋め込まれます。エンジンは各プレースホルダーを与えられた値に置き換え、最終的にレンダリングされた出力を生成します。テンプレートは再利用可能なまま保たれ、変わるのは値だけです。
テンプレートエンジン
多くのエンジンが存在します - Jinja、Go templates、Handlebars、そしてHelmのテンプレート化などです。単純な置換を超えて、それらはしばしば条件分岐、ループ、関数をサポートするため、テンプレートは値だけでなく構造も適応させることができます。エンジンが、プレースホルダーの正確な構文と機能を定義します。
テンプレート化と補間の違い
両者は重なりますが、スコープが異なります。シェルまたはCIの補間は、実行時にコマンドへ環境変数を置換します。テンプレート化は、テンプレートと値の集合からファイル全体を生成する意図的なレンダリングステップであり、通常はループや条件分岐といったより豊かなロジックを伴います。
CIにおけるテンプレート変数
パイプラインはテンプレートをレンダリングして環境固有の設定を生成します: 環境ごとのKubernetesマニフェスト、正しいリージョンを持つデプロイ設定、あるいはテンプレートとバージョンからのリリースノートファイルなどです。レンダリングステップが変数を埋め、その後のステップが結果を適用または公開します。
# Render a template with values in a CI step
steps:
- run: |
export VERSION=1.4.0
envsubst < deploy.tpl.yml > deploy.yml
- run: kubectl apply -f deploy.ymlLatchkeyに関する注記
envsubst、Jinja、Helmといったテンプレート化ツールは、ジョブがインストールする普通のCLIであり、Latchkeyではこれらのツールや依存関係のダウンロードがrun間でキャッシュされるため、レンダリングステップは高速なままです。
重要なポイント
- テンプレート変数とは、テンプレートエンジンが具体的な値に置き換える名前付きプレースホルダーです。
- テンプレートエンジンは、単純な置換を超えて、条件分岐やループといったロジックを追加します。
- CIはテンプレートをレンダリングして環境ごとの設定やファイルを生成し、その結果を適用します。