diff --git a/cloud/aws/templates/aws_oidc/external_vpc.tf b/cloud/aws/templates/aws_oidc/external_vpc.tf index ea01b837..4e5437d3 100644 --- a/cloud/aws/templates/aws_oidc/external_vpc.tf +++ b/cloud/aws/templates/aws_oidc/external_vpc.tf @@ -13,12 +13,18 @@ data "aws_db_subnet_group" "external" { name = var.external_vpc_database_subnet_group_name } -data "aws_subnet" "external_private" { +data "aws_subnets" "external_private_subnets" { count = local.enable_managed_vpc ? 0 : 1 - id = var.external_vpc_private_subnet_id + filter { + name = "subnet-id" + values = var.external_vpc_private_subnet_ids + } } -data "aws_subnet" "external_public" { +data "aws_subnets" "external_public_subnets" { count = local.enable_managed_vpc ? 0 : 1 - id = var.external_vpc_public_subnet_id + filter { + name = "subnet-id" + values = var.external_vpc_public_subnet_ids + } } diff --git a/cloud/aws/templates/aws_oidc/variable_definitions.json b/cloud/aws/templates/aws_oidc/variable_definitions.json index 3dc76e1f..86d4d4a0 100644 --- a/cloud/aws/templates/aws_oidc/variable_definitions.json +++ b/cloud/aws/templates/aws_oidc/variable_definitions.json @@ -411,17 +411,19 @@ "tfvar": true, "type": "string" }, - "EXTERNAL_VPC_PRIVATE_SUBNET_ID": { + "EXTERNAL_VPC_PRIVATE_SUBNET_IDS": { "required": false, "secret": false, "tfvar": true, - "type": "string" + "type": "list", + "list_type": "string" }, - "EXTERNAL_VPC_PUBLIC_SUBNET_ID": { + "EXTERNAL_VPC_PUBLIC_SUBNET_IDS": { "required": false, "secret": false, "tfvar": true, - "type": "string" + "type": "list", + "list_type": "string" }, "APPLY_DATABASE_CHANGES_IMMEDIATELY": { "required": false, diff --git a/cloud/aws/templates/aws_oidc/variables.tf b/cloud/aws/templates/aws_oidc/variables.tf index c09152e3..5cb896d4 100644 --- a/cloud/aws/templates/aws_oidc/variables.tf +++ b/cloud/aws/templates/aws_oidc/variables.tf @@ -526,14 +526,14 @@ variable "external_vpc_id" { default = "" } -variable "external_vpc_private_subnet_id" { - type = string +variable "external_vpc_private_subnet_ids" { + type = list(string) description = "The externally managed VPC's private subnet ID." - default = "" + default = [] } -variable "external_vpc_public_subnet_id" { - type = string +variable "external_vpc_public_subnet_ids" { + type = list(string) description = "The externally managed VPC's public subnet ID." - default = "" + default = [] } diff --git a/cloud/aws/templates/aws_oidc/vpc.tf b/cloud/aws/templates/aws_oidc/vpc.tf index f1f69acb..59591143 100644 --- a/cloud/aws/templates/aws_oidc/vpc.tf +++ b/cloud/aws/templates/aws_oidc/vpc.tf @@ -8,15 +8,15 @@ locals { enable_managed_vpc = anytrue([ var.external_vpc_database_subnet_group_name == "", var.external_vpc_id == "", - var.external_vpc_private_subnet_id == "", - var.external_vpc_public_subnet_id == "", + length(var.external_vpc_private_subnet_ids) > 0, + length(var.external_vpc_public_subnet_ids) > 0, ]) } locals { vpc_id = local.enable_managed_vpc ? module.vpc[0].vpc_id : data.aws_vpc.external[0].id - vpc_private_subnets = local.enable_managed_vpc ? module.vpc[0].private_subnets : data.aws_subnet.external_private[*].id - vpc_public_subnets = local.enable_managed_vpc ? module.vpc[0].public_subnets : data.aws_subnet.external_public[*].id + vpc_private_subnets = local.enable_managed_vpc ? module.vpc[0].private_subnets : data.aws_subnets.external_private_subnets + vpc_public_subnets = local.enable_managed_vpc ? module.vpc[0].public_subnets : data.aws_subnets.external_public_subnets vpc_database_subnet_group_name = local.enable_managed_vpc ? module.vpc[0].database_subnet_group_name : data.aws_db_subnet_group.external[0].name }