private Zone CreateRoute53Resource(string name, string zoneName, Dictionary<string, object> tags)
{
var zone = new Zone($"{name}-zone-{zoneName}", new Pulumi.Aws.Route53.ZoneArgs
{
Name = zoneName,
Tags = tags,
}, new CustomResourceOptions { Parent = this });
return zone;
}
これをグルーピングしたいので、ComponentResource で組むようにしたい。
早速書いてみて、CreateRoute53Resource は不要なので削除して pulumi up すると次のような実行プランになった。
Type Name Plan
pulumi:pulumi:Stack pulumi-dev
└─ pkg:EksClusterResource sandbox
+ ├─ pkg:Route53Resource sandbox-route53 create
+ │ └─ aws:route53:Zone sandbox-route53-zone-eks-sandbox-pulumi.my.exmple.com create
- └─ aws:route53:Zone sandbox-route53-zone-eks-sandbox-pulumi.my.exmple.com delete
$ pulumi stack --show-urns
Current stack is dev:
Owner: guitarrapc
Last updated: 15 minutes ago (2019-11-19 11:21:31.7024525 +0900 JST)
Pulumi version: v1.5.2
Current stack resources (51):
TYPE NAME
pulumi:pulumi:Stack
└─ aws:route53/zone:Zone sandbox-route53-zone-eks-sandbox-pulumi.my.exmple.com
URN: urn:pulumi:dev::pulumi::pkg:MyResource$aws:route53/zone:Zone::sandbox-route53-zone-eks-sandbox-pulumi.my.exmple.com
// Changes to the value of `prop` will not lead to updates/replacements
var res = new MyResource("res", new MyResourceArgs { prop = "new-value" }, new ResourceOptions { IgnoreChanges = { "prop" } });
リソースのプロパティ名を確認する
pulumi up をしたときに差分が表示されるが、[diff: ~propertyName] にある ~ 以降の文字列がリソースのプロパティとなる。
このプロパティ文字列を、CustomResourceOptions.IgnoreChanges プロパティで指定することで、IgnoreChanges が機能するようになる。
例
例えば、aws:ec2:LaunchConfiguration の sandbox-asg-autoscale-lc リソースで ami id が変わっても無視したい場合を考える。
ami id が変わると、場合によっては ami のバグを踏んでしまう可能性があるため安定した ami id を都度指定したいなどの要求
pulumi up をした状態では次のように表示される。
$ pulumi up
Previewing update (dev):
Type Name Plan Info
pulumi:pulumi:Stack pulumi-dev 'dotnet build -nologo .' completed successfully
������
pulumi:pulumi:Stack pulumi-dev 2 messages
��������� Name Plan Info
└─ pkg:component:ekscluster sandbox
└─ pkg:component:autoscaling sandbox-asg
+- ├─ aws:ec2:LaunchConfiguration sandbox-asg-autoscale-lc replace [diff: ~imageId]
~ └─ aws:autoscaling:Group sandbox-asg-autoscale-asg update [diff: ~launchConfiguration]
new LaunchConfiguration("sandbox-asg-autoscale-lc", new LaunchConfigurationArgs{
// いろいろ定義
}, new CustomResourceOptions { Parent = this, IgnoreChanges = new List<string> { "imageId" } });
再度 pulumi up をすると、IgnoreChanges で指定した通り、ami id の変化が無視されるようになる。
$ pulumi up
Previewing update (dev):
Type Name Plan Info
pulumi:pulumi:Stack pulumi-dev 'dotnet build -nologo .' completed successfully
pulumi:pulumi:Stack pulumi-dev 2 messages
Type Name Plan Info
Diagnostics:
pulumi:pulumi:Stack (pulumi-dev):
Resources:
57 unchanged