リソース
リソースは目的の状態の単位です。v1.3.0 では 9 つのタイプが実装されて
います: file、directory、link、template、command、package、
service、そしてローカル Linux アカウントを扱う
group と
user です。
共通フィールド
Section titled “共通フィールド”すべてのリソースが受け付けるフィールド:
| フィールド | 用途 |
|---|---|
id |
一意な識別子(必須)。 |
type |
リソースタイプ(必須)。 |
with |
タイプ固有のパラメータ。 |
when |
boolean 式。false の場合、そのリソースと依存先はブロックされる。 |
loop |
アイテムごとにリソースを展開する({{ item }})。 |
depends_on |
先に成功していなければならないリソース id のリスト。 |
loop を持つリソースはアイテムごとに 1 回展開され、フィールド内では
{{ item }} が使えます:
resources: - id: tool type: package with: name: "{{ item }}" state: present loop: [jq, curl]各展開にはインスタンス id(tool[0]、tool[1]、…)が割り当てられ、
他のリソースが depends_on で参照するときはこの形を使います
(例: depends_on: [tool[0]])。展開前のループ id(tool)や、ループ外から
ループ宣言自体への依存は検証エラーになります。register をループ内で使う
こともできません。
| notify | リソースが変更されたときに起動されるハンドラ id。 |
| sensitive | このリソースの値と派生値をすべての出力でマスクする。 |
順序と依存関係
Section titled “順序と依存関係”リソースは depends_on の制約のもとで宣言順に実行されます。失敗または
indeterminate になったリソースがあると実行は停止し、残りのリソースは
blocked として報告されます(fail-fast)。
when: false は失敗した依存関係とは異なります: そのリソースは
スキップされ、依存先は依存関係ルールのもとでブロックされます。
notify は、正常に終了した apply の最後に 1 回だけ実行されるハンドラを
指名します。通知元のリソースが実際に変更された場合に限られます。
通知は重複排除されます。複数の変更されたリソースが同じハンドラを
1 回だけ起動することがあります。
sensitive リソース
Section titled “sensitive リソース”パラメータ、内容、結果にシークレットが含まれ得る場合は、リソースに
sensitive: true を指定します。Sinter はエラーメッセージを含むすべての
出力チャネルで値をマスクし、内容のハッシュとサイズも隠します。
sensitive 変数から派生した値は自動的に sensitive として扱われます。暗号化された
シークレットを持つリソース(content: { secret: … } や password_hash: { secret: … })は、宣言に関わらず常に sensitive です。
ステートフルなリソースは apply の中で 2 回観測されます: plan のための 1 回と、変更の直前の 1 回です。観測の失敗は失敗または indeterminate として報告され、変更として報告されることはありません。