状態と出力
適用が成功するたびに、Takosumi は状態を 1 地点として保存します。これが StateVersion です。そこから公開用に取り出した値が Output です。
StateVersion は積み重なります
StateVersion は上書きされません。戻す操作をしても履歴は巻き戻りません。 戻した結果が新しい StateVersion として積まれます。そのため「戻したあとに、戻す前の 状態へ戻す」ことができ、その操作自体も記録に残ります。
保存されるのは Takosumi が管理している状態です。module が作った実物の中身 (データベースのレコード、保管されたファイル) は含まれません。
戻すときも通常の計画と適用を通ります。StateVersion を選んだ時点では何も起きません。
curl -s "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/capsules/cap_example/state-versions" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/state-versions/sv_example/rollback-plan" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"作られた Run を確認し、適用して初めて戻ります。Workspace 内の全 Capsule の現在地点は /api/v1/workspaces/{workspaceId}/current-state-versions でまとめて読めます。
戻す前に確認すべきことが 2 つあります。作り直しでデータが失われる種類のリソースが 計画に含まれていないか、そして戻す先が指す commit がリポジトリにまだあるかです。 後者が無ければ計画は失敗します。認証情報は StateVersion に含まれないため、戻しても 現在の Connection が使われます。
Output は明示的に公開した値だけです
Output は Capsule が外に見せる値です。公開されるのは明示的に対応付けた非 secret の 値だけです。
OpenTofu で sensitive = true を付けた output は、OpenTofu としては正しくても 公開 Output になりません。秘密を運ぶ経路として使えないようにしてあります。
curl -s "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/capsules/cap_db/outputs" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"秘密と state
次の公開面には秘密の値を保存しません。
spec
status
Output
Interface
ログ
監査記録一方、provider が管理する OpenTofu state には、接続文字列などの secret が含まれる ことがあります。Takosumi は state 全体を暗号化して保存し、権限のある Run にだけ 復号します。state を公開 Output や一般の export と同じものとして扱わないでください。
値を別の Capsule に渡す
同じ Workspace 内なら依存関係で表します。Takosumi が順序を理解し、依存先の Output を 参照できるようになります。
curl -s "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/capsules/cap_app/dependencies" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"
curl -X DELETE "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/dependencies/dep_example" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"Workspace 全体のつながりは /api/v1/workspaces/{workspaceId}/graph で読めます。
Workspace をまたぐ場合は OutputShare を使います。渡す側が作り、受け取る側が承認 するまで有効になりません。 失効させると以降の参照は止まり、すでに実行された Run の 記録は残ります。
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/output-shares/share_example/approve" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"どちらの経路でも渡せるのは公開 Output だけです。秘密を渡したい場合は Output では なく、Connection を両方の Capsule に割り当てます。
実物とずれたとき
保存されている状態と実物が食い違うことがあります。人が直接クラウドの画面で変更した 場合などです。
差分確認はこのずれを読み取り専用で報告します。自動では直しません。 現在の版と endpoint を固定したまま報告するので、直すかどうかは人が決めます。
refresh は歴史的な ResourceOperation marker としてのみ残っており、現在の RunType では ありません。差分確認は読み取り専用のままで、外部の実物を自動では変更しません。Output は Run ではなく、/api/v1/capsules/{capsuleId}/outputs から読む現在の公開 projection です。
書き出しとの違い
Takosumi は制御情報 (Capsule の構成、Source の設定、Run と StateVersion の履歴) を 書き出せます。アプリのデータそのものと、Connection に保存した秘密は対象外です。
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/workspaces/ws_example/backups" \
-H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"直前の適用を取り消したいだけなら、書き出しではなく StateVersion から戻します。 書き出しが要るのは、Workspace ごと別の環境へ移す場合や、制御情報を Takosumi の外に 保管したい場合です。秘密は含まれないため、復元後に Connection を作り直す作業が 必ず発生します。
