コンテンツにスキップ

template

目的: レシピの隣に置かれたテンプレートファイルをレンダリングし、 結果をターゲットの path に公開する。

- id: app_conf
type: template
with:
path: /etc/myapp/config.ini
source: templates/config.ini
mode: "0640"
vars:
listen_port: 8080
templates/config.ini
[server]
listen = {{ template.listen_port }}
hostname = {{ facts.hostname }}
パラメータ 必須 型 デフォルト 説明
path はい string(絶対パス) — ターゲット上の配置先。
source はい string — コントローラ側テンプレート。レシピファイルからの相対パスで解決。
state いいえ string present present または absent。
vars いいえ map — テンプレートローカルな値。template.<name> として参照可能。
owner いいえ string — 所有者名。
group いいえ string — グループ名。
mode いいえ string — 引用符付きの 4 桁 8 進数。
  • テンプレートはコントローラ上でレンダリングされ、 file と同様にアトミックに 公開されます。
  • テンプレート式は vars.*、facts.*、registers.*、template.* を 読み取れます。template.* の名前が他の名前空間をシャドウすることは ありません。
  • content はサポートされません — template リソースは常に source を使います。
  • レンダリングされるのは {{ 式 }} だけです。{{ をそのまま書くには \{{、 {% をそのまま書くには {{ "{%" }} と書きます。Jinja の文タグ ({% ... %})とコメントタグ({# ... #})はサポートされず、黙って そのまま書き出されることはなく、エラーになります(下記)。タグとみなすのは、 対応する閉じ記号({% には %}、{# には #})が後ろにある開始記号だけです。 閉じ記号のない開始記号と、$ の直後の {#(シェルの ${#var})は通常の 文字列で、そのまま書き出されます。
  • テンプレートの出力が systemd マネージャの入力(ユニットファイル、drop-in、 alias/mask/.wants/.requires リンク、system.conf)を実際に変更すると、 それを必要とする次のサービスまたはハンドラの前、および成功した apply の 最後に、Sinter が systemctl daemon-reload を自動的に実行します。 serviceを参照して ください。

完全に冪等です — レンダリング結果に変更がなければ変更もハンドラ通知も 発生しません。

  • source ファイルの欠落やテンプレート評価エラー(未定義変数など)は validate/apply 時に説明的なエラーで失敗します。メッセージから sensitive な値はマスクされます。
  • Jinja のタグ({% if ... %}、{% for ... %}、{# ... #})は validate で エラー(終了コード 2)になり、リソース、source ファイル、タグの行と列が 表示されます。そのようなファイルを変更せずに配置するには、 file リソースの source を使います。
  • file と同じファイルシステム安全ルール(信頼境界、シンボリック リンクの拒否、アトミックな公開)。

プラットフォームに関する補足

Section titled “プラットフォームに関する補足”

すべての対応ターゲットに適用されます。

file · レシピ — 式