tech.guitarrapc.cóm

Technical updates

Pulumi の state を Export したり Importする

この記事は、Pulumi dotnet Advent Calendar 2019の16日目です。

qiita.com

PulumiのWeb UIを見ると、stateはProject/Stack配下で管理されています。ということは、stateを他Project/Stackに移動したいときは何か操作がいりそうですね。 それをどうするのか見てみましょう。

この記事の内容までで概ね、完全に理解した()といいたくなるのではないでしょうか。

TL;DR

  • PulumiはstateをExportすることで他のPulumi Projectに取り込むためのjsonを取得できる
  • Exportされたjsonを取り込むときはImportを使う

Summary

StateをほかのPulumi Projectで利用することが考えられる。 普段はまず意識する機会が少ないだろうが動作を確認しておく。

terraformでいうところのtfstateをほかのbackendで管理するときの操作に相当する。

export

pulumiのStackにあるstateを出力する。Pulumiのプロジェクトがあるパスでないと動作しないので注意。

pulumi stack export > stack.json

例えば空のスタックは次のstateになっている。

{
    "version": 3,
    "deployment": {
        "manifest": {
            "time": "2019-11-20T12:45:40.5026846+09:00",
            "magic": "1d5f3b62e78892f89b30a2cc29a7eee340fe39a0f777515c72079024e9b448a6",
            "version": "v1.5.2"
        },
        "secrets_providers": {
            "type": "service",
            "state": {
                "url": "https://api.pulumi.com",
                "owner": "guitarrapc",
                "project": "pulumi",
                "stack": "dev"
            }
        }
    }
}

Import

標準出力からpulumiのStackにStateをインポートする。

pulumi stack import < stack.json

どこかのStackを丸っと別のPulumiアカウントにお引越しするときなどに便利。