Skip to content

Git module を始める

Git に置いた module を、Takosumi で plan → apply するところまで動かします。 module も provider もそのまま使えます。書き換える必要はありません。

Source を登録する

まず「どのリポジトリを追うか」を登録します。これを Source と呼びます。必要なのは Workspace、名前、URL の 3 つだけです。

bash
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/sources" \
  -H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN" \
  -H 'content-type: application/json' \
  -d '{
    "workspaceId": "ws_example",
    "name": "example-app",
    "url": "https://github.com/example/example-app.git",
    "defaultRef": "v1.2.0",
    "defaultPath": "deploy/opentofu"
  }'

オプションは 4 つです。たいてい defaultRefdefaultPath を指定します。

オプション省略時役割
defaultRefGit の HEAD追う branch / tag / commit
defaultPath.module があるディレクトリ
authConnectionIdなし非公開リポジトリを読むための認証
autoSyncfalseref の定期確認を有効にする

応答の hookSecretこのときしか見られません。webhook を設定するなら、ここで 控えておいてください。あとから再取得はできません。失くしたら作り直しです。

同期する

defaultRef は「どこを追うか」です。「何を実行したか」は、ref を解決した commit (SourceSnapshot) です。同期して snapshot を作ります。

bash
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/sources/src_example/sync" \
  -H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN" \
  -H 'content-type: application/json' \
  -d '{ "intent": "manual_plan" }'

同期 Run が succeeded になり、snapshot が /api/v1/sources/{sourceId}/snapshots に出てから先へ進みます。古い snapshot を 最新として使い回さないでください。確認した内容と適用する内容が食い違います。

Capsule を作る

Capsule はデプロイされた 1 つのまとまりです。Source が「どこから」なら、Capsule は 「何が動いているか」です。

bash
curl -s "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/workspaces/ws_example/capsules" \
  -H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"

開発用と本番用は、別の Capsule に別の Connection を 割り当てます。同じ module をそのまま使い、接続だけを切り替えられます。

plan して apply する

Run は必ず計画から始まります。まず plan を作り、内容を確認します。

bash
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/capsules/cap_example/plan" \
  -H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"

takosumi status run_example
takosumi logs run_example

問題なければ apply します。承認が必要な設定では、apply の前に /approve を通します。

bash
curl -X POST "$TAKOSUMI_DEPLOY_CONTROL_URL/api/v1/runs/run_example/apply" \
  -H "authorization: Bearer $TAKOSUMI_DEPLOY_CONTROL_TOKEN"

次に読む

AGPL-3.0-only