この記事は、Pulumi dotnet Advent Calendar 2019 の17日目です。
Pulumi のTIPS を見ていきましょう。
Terraform の Remote State に相当する処理を見てみます。 Pulumiで 他のStack で管理しているリソースは参照できるのでしょうか?
目次
TL;DR
- 現状 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