この記事は、Pulumi dotnet Advent Calendar 2019の17日目です。
PulumiのTIPSを見ていきましょう。
TerraformのRemote Stateに相当する処理を見てみます。 Pulumiで他のStackで管理しているリソースは参照できるのでしょうか?
概要
- 現状Stackの参照はC# 実装では提供されていない
- Providerを分けて持つことはできるので、Providerでリソースを参照して使うことで回避できる
- TypeScriptなどGAされた言語ではStack Referenceとして提供されている
Stack Reference
TypeScriptで次のように書いて、他のStackのOutputを参照できる。
import * as pulumi from "@pulumi/pulumi"; const other = new pulumi.StackReference("acmecorp/infra/other"); const otherOutput = other.getOutput("x")
これはdotnet (C#) ではまだサポートされいない。
そのため、もしほかのStackを参照したい場合、Stackを直接みるのではなく、そのStackのProviderを別途用意して参照するしかない。
using Pulumi; using Pulumi.Aws; class Program { async Task Main() => Deployment.Run(() => { // Create an AWS provider for the us-east-1 region. var useast1 = new Provider("useast1", new ProviderArgs { Region = "us-east-1" }); // Create an ACM certificate in us-east-1. var cert = new Aws.Acm.Certificate("cert", new Aws.Acm.CertifiateArgs { DomainName = "foo.com", ValidationMethod = "EMAIL", }, new ResourceArgs { Provider = useast1 }); }); }
イメージ的には、terraformのproviderによる管理に近い。
REF
Inter-Stack Dependencies | Organizing Projects and Stacks | Pulumi