レシピ
レシピは 1 つのターゲットに対する目的の状態を宣言します。YAML と TOML は単一の意味モデルに対するフロントエンドであり、どちらの形式で書かれた 等価なレシピも等価な動作を生みます。
トップレベルフィールド
Section titled “トップレベルフィールド”| フィールド | 型 | 用途 |
|---|---|---|
version |
integer(必須) | レシピフォーマットのバージョン。現在は 1。 |
vars |
map | 省略可能な sensitive フラグを持つ名前付きリテラル値。 |
include |
list | このレシピにマージされる他のレシピファイル。 |
resources |
list | 目的の状態を表すリソース。順番に評価される。 |
handlers |
list | 遅延実行される restart/reload サービスアクション。 |
これ以外のトップレベルフィールドは許可されません。
vars: app_user: value: deploy sensitive: false db_password: value: s3cret sensitive: true変数はリテラルのみです。他の変数を参照することはできません。
文字列フィールドやテンプレート内では {{ vars.app_user }} で参照します。
sensitive: true の値は、派生した値を含め、通常の出力、verbose モード、
diff、register された結果、診断情報、JSON 出力のいずれにも現れません。
sensitive な内容についてはハッシュとサイズも隠されます。
インクルード
Section titled “インクルード”include は他のレシピファイルをモデルに展開します。相対パスは、インクルード
元のレシピファイルのディレクトリから解決され、絶対パスはそのまま使われます。
同じファイルが 2 回展開されることはありません。重複するインクルードや
インクルードの循環は拒否されます。
resources: - id: unique_name # 必須、一意な識別子 type: file # リソースタイプのいずれか sensitive: false # このリソースの値を出力でマスクする when: "facts.os.family == 'debian'" depends_on: [other_id] notify: [handler_id] with: # タイプ固有のパラメータ path: /etc/example共通フィールド: id、type、with、when、loop、depends_on、
notify、sensitive。意味についてはリソースを、
タイプ別パラメータについてはリソースリファレンスを参照してください。
handlers: - id: restart_app service: app.service # ターゲット上の systemd ユニット名 action: restart # restart または reloadservice はターゲット上の systemd ユニット名です。Sinter のリソース id
から解決されることはありません。ハンドラは apply の最後に 1 回だけ実行され
ます。実際に変更があったリソースから通知された場合に限られます。同じ
ハンドラへの複数の通知は重複排除されます。systemd ユニットの入力が変更された
場合、またはユニットが NeedDaemonReload=yes を報告している場合、Sinter は
ハンドラの実行前にシステムマネージャを reload します(systemctl daemon-reload)。
reload は restart ではありません。
serviceを参照して
ください。
when と changed_when では意図的に小さな式言語が使われます:
- 名前空間:
vars.<name>、facts.hostname、facts.os.name、facts.os.family、facts.os.version、facts.arch、registers.<name>.<field>、item(loop 内)、result.<field>(changed_when内)。名前空間なしの裸の名前は許可されません。 - 演算子:
==、!=、<、<=、>、>=、&&、||、!、括弧。 when/changed_whenは boolean に評価される必要があります。 truthiness による型変換はありません。