diff --git a/README.md b/README.md index 7d5c878..9521572 100644 --- a/README.md +++ b/README.md @@ -19,19 +19,23 @@ Change logs are auto-generated with commitizen. | Name | Version | |------|---------| | [aws](#provider\_aws) | 5.68.0 | +| [aws.route53\_main\_east](#provider\_aws.route53\_main\_east) | 5.68.0 | +| [aws.route53\_main\_west](#provider\_aws.route53\_main\_west) | 5.68.0 | +| [aws.self](#provider\_aws.self) | 5.68.0 | ## Modules -| Name | Source | Version | -|------|--------|---------| -| [route53\_cluster\_domain\_east](#module\_route53\_cluster\_domain\_east) | git@github.e.it.census.gov:terraform-modules/aws-vpc-setup.git//route53-zone-association/zone | tf-upgrade | -| [route53\_cluster\_domain\_west](#module\_route53\_cluster\_domain\_west) | git@github.e.it.census.gov:terraform-modules/aws-vpc-setup.git//route53-zone-association/zone | tf-upgrade | +No modules. ## Resources | Name | Type | |------|------| +| [aws_route53_vpc_association_authorization.self_zone_east](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_vpc_association_authorization) | resource | +| [aws_route53_vpc_association_authorization.self_zone_west](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_vpc_association_authorization) | resource | | [aws_route53_zone.cluster_domain](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_zone) | resource | +| [aws_route53_zone_association.self_zone_east](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_zone_association) | resource | +| [aws_route53_zone_association.self_zone_west](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_zone_association) | resource | | [aws_arn.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source | | [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | | [aws_vpc.dummy_vpc](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/vpc) | data source | @@ -46,7 +50,6 @@ Change logs are auto-generated with commitizen. | [region](#input\_region) | AWS config region | `string` | `""` | no | | [region\_map](#input\_region\_map) | AWS region map | `map(string)` |
{
"east": "us-gov-east-1",
"west": "us-gov-west-1"
} | no |
| [route53\_endpoints](#input\_route53\_endpoints) | Map of target route53 endpoints (for inbound) central VPCs | `map(map(string))` | {
"route53_main": {
"account_id": "269244441389",
"alias": "lab-gov-network-nonprod",
"us-gov-east-1": "vpc-070595c5b133243dd",
"us-gov-west-1": "vpc-08b7b4db6a5ddf9c1"
}
} | no |
-| [shared\_vpc\_label](#input\_shared\_vpc\_label) | Label to use for shared VPC for flowlogs and other things | `string` | `null` | no |
| [tags](#input\_tags) | AWS Tags to apply to appropriate resources | `map(string)` | `{}` | no |
| [vpc\_domain\_name](#input\_vpc\_domain\_name) | The DNS domain name of the vpc the cluster is in. | `string` | n/a | yes |
| [vpc\_name](#input\_vpc\_name) | Define the VPC name that will be used by this cluster | `string` | n/a | yes |
diff --git a/aws_data.tf b/aws_data.tf
index 81d8da8..050df9e 100644
--- a/aws_data.tf
+++ b/aws_data.tf
@@ -15,7 +15,7 @@ data "aws_arn" "current" {
# dummy vpc, so we can associate the zone to this account
#---
data "aws_vpc" "dummy_vpc" {
- count = !(var.shared_vpc_label == null || var.shared_vpc_label == "") ? 1 : 0
+ count = local.is_shared_vpc ? 1 : 0
filter {
name = "tag:Name"
values = ["vpc0-dummy"]
diff --git a/main.tf b/main.tf
index 45f3bbe..247359c 100644
--- a/main.tf
+++ b/main.tf
@@ -10,6 +10,7 @@ locals {
cluster_domain_description = format("%v EKS Cluster DNS Zone", var.cluster_name)
cluster_domain_name = format("%v.%v", var.cluster_name, local.vpc_domain_name)
region = var.region
+ is_shared_vpc = data.aws_vpc.eks_vpc.owner_id != data.aws_caller_identity.current.account_id
vpc_domain_name = var.vpc_domain_name
}
@@ -23,14 +24,14 @@ resource "aws_route53_zone" "cluster_domain" {
force_destroy = false
vpc {
- vpc_id = !(var.shared_vpc_label == null || var.shared_vpc_label == "") ? try(data.aws_vpc.dummy_vpc[0].id, null) : data.aws_vpc.eks_vpc.id
+ vpc_id = local.is_shared_vpc ? try(data.aws_vpc.dummy_vpc[0].id, null) : data.aws_vpc.eks_vpc.id
vpc_region = local.region
}
lifecycle {
ignore_changes = [vpc]
precondition {
- condition = (var.shared_vpc_label == null || var.shared_vpc_label == "") || (!(var.shared_vpc_label == null || var.shared_vpc_label == "") && !(var.vpc_domain_name == null || var.vpc_domain_name == ""))
+ condition = local.is_shared_vpc && !(var.vpc_domain_name == null || var.vpc_domain_name == "")
error_message = "var.vpc_domain_name must be provided when shared VPCs are in use."
}
}
@@ -45,37 +46,47 @@ resource "aws_route53_zone" "cluster_domain" {
# cluster domain associations with central networking account
# east region
#---
-module "route53_cluster_domain_east" {
+resource "aws_route53_vpc_association_authorization" "self_zone_east" {
+ depends_on = [aws_route53_zone.cluster_domain]
+ count = local.region == "us-gov-east-1" && local.is_shared_vpc ? 1 : 0
- count = local.region == "us-gov-east-1" && !(var.shared_vpc_label == null || var.shared_vpc_label == "") ? 1 : 0
- providers = {
- aws.self = aws.self
- aws.peer = aws.route53_main_east
- }
+ provider = aws.self
+ zone_id = aws_route53_zone.cluster_domain.zone_id
+ vpc_region = "us-gov-east-1"
+ vpc_id = data.aws_vpc.eks_vpc.id
+}
+
+resource "aws_route53_zone_association" "self_zone_east" {
+ provider = aws.route53_main_east
+ count = local.region == "us-gov-east-1" && local.is_shared_vpc ? 1 : 0
- source = "git@github.e.it.census.gov:terraform-modules/aws-vpc-setup.git//route53-zone-association/zone?ref=tf-upgrade"
- region = "us-gov-east-1"
- vpc_id = data.aws_vpc.eks_vpc.id
- zone_ids = try([aws_route53_zone.cluster_domain.zone_id])
+ zone_id = aws_route53_zone.cluster_domain.zone_id
+ vpc_id = data.aws_vpc.eks_vpc.id
+ vpc_region = "us-gov-east-1"
- tags = var.tags
+ depends_on = [aws_route53_vpc_association_authorization.self_zone_east]
}
#-------------------------------------------------
# west region
#-------------------------------------------------
-module "route53_cluster_domain_west" {
+resource "aws_route53_vpc_association_authorization" "self_zone_west" {
+ depends_on = [aws_route53_zone.cluster_domain]
+ count = local.region == "us-gov-west-1" && local.is_shared_vpc ? 1 : 0
- count = local.region == "us-gov-west-1" && !(var.shared_vpc_label == null || var.shared_vpc_label == "") ? 1 : 0
- providers = {
- aws.self = aws.self
- aws.peer = aws.route53_main_west
- }
+ provider = aws.self
+ zone_id = aws_route53_zone.cluster_domain.zone_id
+ vpc_region = "us-gov-west-1"
+ vpc_id = data.aws_vpc.eks_vpc.id
+}
+
+resource "aws_route53_zone_association" "self_zone_west" {
+ provider = aws.route53_main_west
+ count = local.region == "us-gov-west-1" && local.is_shared_vpc ? 1 : 0
- source = "git@github.e.it.census.gov:terraform-modules/aws-vpc-setup.git//route53-zone-association/zone?ref=tf-upgrade"
- region = "us-gov-west-1"
- vpc_id = data.aws_vpc.eks_vpc.id
- zone_ids = [aws_route53_zone.cluster_domain.zone_id]
+ zone_id = aws_route53_zone.cluster_domain.zone_id
+ vpc_id = data.aws_vpc.eks_vpc.id
+ vpc_region = "us-gov-west-1"
- tags = var.tags
+ depends_on = [aws_route53_vpc_association_authorization.self_zone_west]
}
diff --git a/variables.tf b/variables.tf
index 72ab6a6..2336ee9 100644
--- a/variables.tf
+++ b/variables.tf
@@ -47,12 +47,6 @@ variable "os_username" {
# DNS variables
###################################################################
-variable "shared_vpc_label" {
- description = "Label to use for shared VPC for flowlogs and other things"
- type = string
- default = null
-}
-
variable "region_map" {
description = "AWS region map"
type = map(string)