mysterious-egg-7415
01/26/2020, 7:33 PMimport pulumi
import pulumi_aws as aws
dummy_vpc = aws.ec2.Vpc(
resource_name="dummy-vpc",
cidr_block="10.0.0.0/16",
tags={
"Name": "dummy-vpc",
"Purpose": "to support provisioning Route53 private hosted zones",
}
)
domains = ["<http://example.io|example.io>", "<http://example.com|example.com>"]
zones = []
for domain in domains:
zone = aws.route53.Zone(
resource_name=domain,
name=domain,
comment=f"Private Zone for {domain}",
force_destroy=True,
vpcs=[{
"vpc_id": dummy_vpc.id
}],
tags={
"Name": domain
},
opts=pulumi.ResourceOptions(
depends_on=[dummy_vpc],
ignore_changes=["vpcs"]
)
)
zones.append(zone)
pulumi.export("private-zones", zones)
Outputs:
private-zones: [
[0]: {
comment : "Private Zone for <http://example.io|example.io>"
force_destroy : true
id : "Z0821544235H0134DJISV"
name : "<http://example.io|example.io>."
name_servers : [
[0]: "<http://ns-0.awsdns-00.com|ns-0.awsdns-00.com>."
[1]: "<http://ns-1024.awsdns-00.org|ns-1024.awsdns-00.org>."
[2]: "<http://ns-1536.awsdns-00.co.uk|ns-1536.awsdns-00.co.uk>."
[3]: "<http://ns-512.awsdns-00.net|ns-512.awsdns-00.net>."
]
tags : {
Name: "<http://example.io|example.io>"
}
urn : "urn:pulumi:route53-private-zones::zones::aws:route53/zone:Zone::<http://example.io|example.io>"
vpcs : [
[0]: {
vpc_id : "vpc-0540adf940a96ff5f"
vpc_region: "us-west-2"
}
]
zone_id : "Z0821544235H0134DJISV"
}
[1]: {
comment : "Private Zone for <http://example.com|example.com>"
force_destroy : true
id : "Z08216062GEL3399WZSXA"
name : "<http://example.com|example.com>."
name_servers : [
[0]: "<http://ns-0.awsdns-00.com|ns-0.awsdns-00.com>."
[1]: "<http://ns-1024.awsdns-00.org|ns-1024.awsdns-00.org>."
[2]: "<http://ns-1536.awsdns-00.co.uk|ns-1536.awsdns-00.co.uk>."
[3]: "<http://ns-512.awsdns-00.net|ns-512.awsdns-00.net>."
]
tags : {
Name: "<http://example.com|example.com>"
}
urn : "urn:pulumi:route53-private-zones::zones::aws:route53/zone:Zone::<http://example.com|example.com>"
vpcs : [
[0]: {
vpc_id : "vpc-0540adf940a96ff5f"
vpc_region: "us-west-2"
}
]
zone_id : "Z08216062GEL3399WZSXA"
}
]
import pulumi
import pulumi_aws as aws
stack_reference = pulumi.StackReference("route53-private-zones")
private_zones = stack_reference.require_output("private-zones")
main_vpc = aws.ec2.Vpc(
resource_name="main-vpc",
cidr_block="10.100.0.0/16",
tags={
"Name": "main-vpc"
}
)
for zone in private_zones:
zone_name = zone["name"]
zone_id = zone["zone_id"]
aws.route53.ZoneAssociation(
resource_name=zone_name,
vpc_id=main_vpc.id,
zone_id=zone_id,
opts=pulumi.ResourceOptions(delete_before_replace=True)
)
import pulumi
import pulumi_aws as aws
stack_reference = pulumi.StackReference("route53-private-zones")
private_zones = stack_reference.require_output("private-zones")
main_vpc = aws.ec2.Vpc(
resource_name="main-vpc",
cidr_block="10.100.0.0/16",
tags={
"Name": "main-vpc"
}
)
pulumi.export("vpc", main_vpc)
zone_ids = []
zone_ids.append(private_zones[0]["zone_id"])
zone_ids.append(private_zones[1]["zone_id"])
for i, zone_id in enumerate(zone_ids):
aws.route53.ZoneAssociation(
resource_name=f"zone-association-{i}",
vpc_id=main_vpc.id,
zone_id=zone_id,
opts=pulumi.ResourceOptions(delete_before_replace=True)
)
apply()
but that doesnt seem to work:
import pulumi
import pulumi_aws as aws
def vpc_route53_private_zone_association(args):
vpc_id = args[0]
zone_ids = args[1]
for i, zone in enumerate(zone):
zone_id = zone["zone_id"]
aws.route53.ZoneAssociation(
resource_name=f"zone-association-{i}",
vpc_id=vpc_id,
zone_id=zone_id,
opts=pulumi.ResourceOptions(delete_before_replace=True)
)
stack_reference = pulumi.StackReference("route53-private-zones")
private_zones = stack_reference.require_output("private-zones")
main_vpc = aws.ec2.Vpc(
resource_name="main-vpc",
cidr_block="10.100.0.0/16",
tags={
"Name": "main-vpc"
}
)
pulumi.export("vpc", main_vpc)
pulumi.Output.all(
main_vpc.id,
private_zones
).apply(vpc_route53_private_zone_association)
flat-insurance-25294
01/27/2020, 11:39 AMget
functions to get them from AWS?white-balloon-205
get
as @flat-insurance-25294 suggests is definitely the recommended approach.mysterious-egg-7415
01/27/2020, 10:17 PMresource "aws_route53_zone" "example_io" {
name = "<http://example.io|example.io>
comment = "Root Zone"
force_destroy = true
}
output "route53_example_io_zone" {
value = aws_route53_zone.example_io
}
In Pulumi, I have been able to do the same and it's worked fine for me except with array/list of resources. It's just not able to loop over it.flat-insurance-25294
01/28/2020, 10:49 AMaws.route53.getZone({ name: "<http://example.io|example.io>" })
mysterious-egg-7415
01/28/2020, 12:22 PMflat-insurance-25294
01/28/2020, 12:22 PMmysterious-egg-7415
01/28/2020, 12:25 PMflat-insurance-25294
01/28/2020, 12:25 PMmysterious-egg-7415
01/28/2020, 12:29 PMflat-insurance-25294
01/28/2020, 12:30 PM