コンテンツにスキップ

リソース

リソースは目的の状態の単位です。v1.3.0 では 9 つのタイプが実装されて います: file、directory、link、template、command、package、 service、そしてローカル Linux アカウントを扱う group と user です。

すべてのリソースが受け付けるフィールド:

フィールド 用途
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 | このリソースの値と派生値をすべての出力でマスクする。 |

リソースは depends_on の制約のもとで宣言順に実行されます。失敗または indeterminate になったリソースがあると実行は停止し、残りのリソースは blocked として報告されます(fail-fast)。

when: false は失敗した依存関係とは異なります: そのリソースは スキップされ、依存先は依存関係ルールのもとでブロックされます。

notify は、正常に終了した apply の最後に 1 回だけ実行されるハンドラを 指名します。通知元のリソースが実際に変更された場合に限られます。 通知は重複排除されます。複数の変更されたリソースが同じハンドラを 1 回だけ起動することがあります。

パラメータ、内容、結果にシークレットが含まれ得る場合は、リソースに sensitive: true を指定します。Sinter はエラーメッセージを含むすべての 出力チャネルで値をマスクし、内容のハッシュとサイズも隠します。 sensitive 変数から派生した値は自動的に sensitive として扱われます。暗号化された シークレットを持つリソース(content: { secret: … } や password_hash: { secret: … })は、宣言に関わらず常に sensitive です。

ステートフルなリソースは apply の中で 2 回観測されます: plan のための 1 回と、変更の直前の 1 回です。観測の失敗は失敗または indeterminate として報告され、変更として報告されることはありません。