tech.guitarrapc.cóm

Technical updates

ローカルPulumi ProjectとアカウントPulumi Project の紐づけ

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

qiita.com

あまりないのですが、時にすでにあるProjectとローカルのpulumiを紐づけたいときがあります。

そんなときにどうやればいいのか見ておきます。

TL;DR

  • アカウントのProjectとの紐づけは、Pulumi.yamlで行っている
  • pulumi upしたディレクトリと同一名のstackがあればそれをつかい、なければ聞かれるのでそこで紐づける

Summary

Pulumiは、 Project - Stackという構造で組まれています。 アカウントは複数のProjectを持つことができ、Projectは複数のStackを持つことができます。

そのため、手元のプロジェクトを、他のプロジェクトやStackと紐づけたい場合には、そのプロジェクトで明示したり、 pulumi up時にstackの選択/stackの作成をする必要があります。

Pulumi Project の紐づけ

ローカルのPulumi定義を見てみると、Pulumi.yamlPulumi.STACKNAME.yamlがあります。

このうち、Pulumi Projectと現在のPulumi定義の紐づけを行っているのが、Pulumi.yamlです。

例えば、Project名にaws-sandbox、ランタイムにC#、概要をAWSサンドボックスのプロジェクトであることを明示するなら次のようになります。

name: aws-sandbox
runtime: dotnet
description: AWS Sandbox Project

このYAMLが定義の元であるため、Web上の表示はYAMLの内容で表示されます。 表示の更新タイミングは、pulumi up時です。

Pulumi Stack の紐づけ

Stackは、具体的な定義ファイルで紐づいていません。 Web上にStateを持っているので、手元のプロジェクトをpulumi uppulumi stack selectで紐づけるだけです。

ローカルのPulumi定義とWebを紐づけるのは、configファイルで、Pulumi.STACKNAME.yamlというルールで存在します。

例えば、awsのregionがap-northeast-1であるStack eksclusterでは、次のようなYAMLファイルがあるでしょう。

config:
  aws:region: ap-northeast-1