Terraform: How to prevent ASG ec2 instance coming up before NAT Gateway is created
Thanks to jbardin https://github.com/hashicorp/terraform/issues/14056
In order to fix this you need to use an output from your VPC module. You can use the aws_nat_gateway
attribute public_ip
but since I had a route created after the aws_nat_gateway
I used that instead. I then made a dummy variable and dummy resource in my Jenkins module.
resource "null_resource" "dummy" {
provisioner "local-exec" {
command = "echo ${var.dummy}"
}
}
Make sure you assign that dummy
variable to the output you have chosen. Also it needs to be a string. dummy = "${join(",", module.vpc.private_nat_gw_routes)}"
After that I used depends_on = ["null_resource.dummy"]
on my ASG resource. This made that resource wait until after the NAT Gateway + routes were created but doesn't have the nasty side effect of recreating the resource every time.
No changes. Infrastructure is up-to-date.
This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed