
Pulumi で Filesystem Backend を使ってステートをローカル環境で管理している構成から Google Cloud Storage (GCS) Backend でステートを管理する構成に移行する流れを試してみた❗️基本的な流れは公式ドキュメントの Migrating Between State Backends というセクションにまとまっていて参考になる.
準備
まずは pulumi new gcp-typescript --dir sandbox-pulumi-state-migration コマンドを実行して Pulumi プロジェクトを作る.そして index.ts を以下のように修正しておく.Cloud Storage バケット1つと Pub/Sub トピック1つでシンプル👌
import * as pulumi from "@pulumi/pulumi"; import * as gcp from "@pulumi/gcp"; new gcp.storage.Bucket("sandbox-pulumi-state-migration", { name: "sandbox-pulumi-state-migration", location: "asia-northeast1", }); new gcp.pubsub.Topic("sandbox-pulumi-state-migration", { name: "sandbox-pulumi-state-migration", });
Filesystem Backend でログイン
次に pulumi login コマンドを実行して Filesystem Backend でログインする.
$ pulumi login file://./
pulumi up コマンドを実行してデプロイすると .pulumi ディレクトリの下にステート .pulumi/stacks/sandbox-pulumi-state-migration/dev.json ができていた.
$ tree .pulumi/stacks/sandbox-pulumi-state-migration .pulumi/stacks/sandbox-pulumi-state-migration ├── dev.json ├── dev.json.attrs ├── dev.json.bak └── dev.json.bak.attrs 1 directory, 4 files
Google Cloud Storage (GCS)
今度は Google Cloud Storage (GCS) Backend として使う Cloud Storage バケットを gcloud storage buckets create コマンドでデプロイする.バージョニング設定も有効化しておく.gcloud コマンドの認証まわりは割愛する.
$ gcloud storage buckets create gs://kakakakakku-sandbox-pulumi-states \ --location=asia-northeast1 \ --project=kakakakakku $ gcloud storage buckets update gs://kakakakakku-sandbox-pulumi-states --versioning
ステートのエクスポート
Google Cloud Storage (GCS) Backend にステートをインポートするために pulumi stack export コマンドでステートをエクスポートする.
$ pulumi stack export --show-secrets --stack dev --file dev-state.json
Google Cloud Storage (GCS) Backend でログイン
ここで pulumi login コマンドを実行して Google Cloud Storage (GCS) Backend でログインする.
$ pulumi login gs://kakakakakku-sandbox-pulumi-states
ちなみにログインをした時点で Cloud Storage バケットに .pulumi/meta.yaml が作られていた✅️
ステートのインポート
最後に pulumi stack init コマンドでスタックをセットアップして,pulumi stack import コマンドでステートをインポートすれば完了❗️
$ pulumi stack init dev Created stack 'dev' $ pulumi stack import --stack dev --file dev-state.json Import complete.
差分確認
最後に pulumi preview コマンドを実行して「差分なし」になっていることを確認できた \( 'ω')/
$ pulumi preview Previewing update (dev): Type Name Plan pulumi:pulumi:Stack sandbox-pulumi-state-migration-dev Resources: 3 unchanged
お掃除
不要になったステートのエクスポートと Filesystem Backend の .pulumi ディレクトリを削除しておく🗑️
$ rm dev-state.json $ rm -rf .pulumi
まとめ
あくまで検証用のシンプルな Pulumi プロジェクトだけど,Pulumi で Filesystem Backend から Google Cloud Storage (GCS) Backend にステートを移行する流れを確認できて良かった❗️