diff --git a/examples/data-solutions/data-platform-foundations/01-landing.tf b/examples/data-solutions/data-platform-foundations/01-landing.tf index 0436de94..b67aa648 100644 --- a/examples/data-solutions/data-platform-foundations/01-landing.tf +++ b/examples/data-solutions/data-platform-foundations/01-landing.tf @@ -64,11 +64,11 @@ locals { module "lnd-prj" { source = "../../../modules/project" - name = var.project_id["landing"] + name = try(var.project_ids["landing"], "lnd") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["landing"]) + prefix = can(var.project_ids["landing"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_lnd : {} iam_additive = var.project_create == null ? local.iam_lnd : {} diff --git a/examples/data-solutions/data-platform-foundations/02-load.tf b/examples/data-solutions/data-platform-foundations/02-load.tf index a9d8b5c7..32589cff 100644 --- a/examples/data-solutions/data-platform-foundations/02-load.tf +++ b/examples/data-solutions/data-platform-foundations/02-load.tf @@ -52,11 +52,11 @@ locals { module "lod-prj" { source = "../../../modules/project" - name = var.project_id["load"] + name = try(var.project_ids["load"], "lod") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["load"]) + prefix = can(var.project_ids["load"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_lod : {} iam_additive = var.project_create == null ? local.iam_lod : {} diff --git a/examples/data-solutions/data-platform-foundations/03-orchestration.tf b/examples/data-solutions/data-platform-foundations/03-orchestration.tf index 0d23263c..3f38eeb8 100644 --- a/examples/data-solutions/data-platform-foundations/03-orchestration.tf +++ b/examples/data-solutions/data-platform-foundations/03-orchestration.tf @@ -73,11 +73,11 @@ locals { module "orc-prj" { source = "../../../modules/project" - name = var.project_id["orchestration"] + name = try(var.project_ids["orchestration"], "orc") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["orchestration"]) + prefix = can(var.project_ids["orchestration"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_orc : {} iam_additive = var.project_create == null ? local.iam_orc : {} diff --git a/examples/data-solutions/data-platform-foundations/04-transformation.tf b/examples/data-solutions/data-platform-foundations/04-transformation.tf index 90c5aac7..e048171a 100644 --- a/examples/data-solutions/data-platform-foundations/04-transformation.tf +++ b/examples/data-solutions/data-platform-foundations/04-transformation.tf @@ -47,11 +47,11 @@ locals { module "trf-prj" { source = "../../../modules/project" - name = var.project_id["trasformation"] + name = try(var.project_ids["trasformation"], "trf") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["trasformation"]) + prefix = can(var.project_ids["trasformation"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_trf : {} iam_additive = var.project_create == null ? local.iam_trf : {} diff --git a/examples/data-solutions/data-platform-foundations/05-datalake.tf b/examples/data-solutions/data-platform-foundations/05-datalake.tf index 14ebd5a4..b2b9bddc 100644 --- a/examples/data-solutions/data-platform-foundations/05-datalake.tf +++ b/examples/data-solutions/data-platform-foundations/05-datalake.tf @@ -63,11 +63,11 @@ locals { module "dtl-0-prj" { source = "../../../modules/project" - name = var.project_id["datalake-l0"] + name = try(var.project_ids["datalake-l0"], "dtl-0") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["datalake-l0"]) + prefix = can(var.project_ids["datalake-l0"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_dtl : {} iam_additive = var.project_create == null ? local.iam_dtl : {} @@ -92,11 +92,11 @@ module "dtl-0-prj" { module "dtl-1-prj" { source = "../../../modules/project" - name = var.project_id["datalake-l1"] + name = try(var.project_ids["datalake-l1"], "dtl-1") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["datalake-l1"]) + prefix = can(var.project_ids["datalake-l1"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_dtl : {} iam_additive = var.project_create == null ? local.iam_dtl : {} @@ -121,11 +121,11 @@ module "dtl-1-prj" { module "dtl-2-prj" { source = "../../../modules/project" - name = var.project_id["datalake-l2"] + name = try(var.project_ids["datalake-l2"], "dtl-2") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["datalake-l2"]) + prefix = can(var.project_ids["datalake-l2"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_dtl : {} iam_additive = var.project_create == null ? local.iam_dtl : {} @@ -150,11 +150,11 @@ module "dtl-2-prj" { module "dtl-plg-prj" { source = "../../../modules/project" - name = var.project_id["datalake-playground"] + name = try(var.project_ids["datalake-playground"], "dtl-plg") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["datalake-playground"]) + prefix = can(var.project_ids["datalake-playground"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_dtl : {} iam_additive = var.project_create == null ? local.iam_dtl : {} diff --git a/examples/data-solutions/data-platform-foundations/06-common.tf b/examples/data-solutions/data-platform-foundations/06-common.tf index 5c88bccb..68957df6 100644 --- a/examples/data-solutions/data-platform-foundations/06-common.tf +++ b/examples/data-solutions/data-platform-foundations/06-common.tf @@ -38,11 +38,11 @@ locals { module "cmn-prj" { source = "../../../modules/project" - name = var.project_id["common"] + name = try(var.project_ids["common"], "cmn") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["common"]) + prefix = can(var.project_ids["common"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_cmn : {} iam_additive = var.project_create == null ? local.iam_cmn : {} @@ -53,8 +53,7 @@ module "cmn-prj" { ]) } -# Uncomment this section and assigne key links accondingly in local. variable -# if you want to create KMS keys in the common projet +# To create KMS keys in the common projet: uncomment this section and assigne key links accondingly in local.service_encryption_keys variable # module "cmn-kms-0" { # source = "../../../modules/kms" diff --git a/examples/data-solutions/data-platform-foundations/07-exposure.tf b/examples/data-solutions/data-platform-foundations/07-exposure.tf index 44c7f946..aea382d1 100644 --- a/examples/data-solutions/data-platform-foundations/07-exposure.tf +++ b/examples/data-solutions/data-platform-foundations/07-exposure.tf @@ -28,11 +28,11 @@ locals { module "exp-prj" { source = "../../../modules/project" - name = var.project_id["exposure"] + name = try(var.project_ids["exposure"], "exp") parent = try(var.project_create.parent, null) billing_account = try(var.project_create.billing_account_id, null) - project_create = var.project_create != null - prefix = var.project_create == null ? null : var.prefix + project_create = can(var.project_ids["exposure"]) + prefix = can(var.project_ids["exposure"]) ? var.prefix : null # additive IAM bindings avoid disrupting bindings in existing project iam = var.project_create != null ? local.iam_exp : {} iam_additive = var.project_create == null ? local.iam_exp : {} diff --git a/examples/data-solutions/data-platform-foundations/main.tf b/examples/data-solutions/data-platform-foundations/main.tf index f441b2e8..f1ab5351 100644 --- a/examples/data-solutions/data-platform-foundations/main.tf +++ b/examples/data-solutions/data-platform-foundations/main.tf @@ -17,24 +17,22 @@ locals { _networks = { load = { - network_name = element(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.lod-vpc[0].self_link), length(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.lod-vpc[0].self_link)) - 1) - network = var.network_config.network_self_link != null ? var.network_config.network_self_link : module.lod-vpc[0].self_link - subnet = var.network_config.network_self_link != null ? var.network_config.subnet_self_links.load : module.lod-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_lod}-subnet"] + network_name = coalesce(local._shared_vpc_network, module.lod-vpc[0].name) + network = coalesce(var.network_config.network_self_link, module.lod-vpc[0].self_link) + subnet = try(var.network_config.subnet_self_links.load, module.lod-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_lod}-subnet"]) } orchestration = { - #TODO Fix Network name logic - network_name = element(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.orc-vpc[0].self_link), length(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.orc-vpc[0].self_link)) - 1) - network = var.network_config.network_self_link != null ? var.network_config.network_self_link : module.orc-vpc[0].self_link - subnet = var.network_config.network_self_link != null ? var.network_config.subnet_self_links.orchestration : module.orc-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_orc}-subnet"] + network_name = coalesce(local._shared_vpc_network, module.orc-vpc[0].name) + network = coalesce(var.network_config.network_self_link, module.orc-vpc[0].self_link) + subnet = try(var.network_config.subnet_self_links.orchestration, module.orc-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_orc}-subnet"]) } transformation = { - #TODO Fix Network name logic - network_name = element(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.trf-vpc[0].self_link), length(split("/", var.network_config.network_self_link != null ? var.network_config.network_self_link : module.trf-vpc[0].self_link)) - 1) - network = var.network_config.network_self_link != null ? var.network_config.network_self_link : module.trf-vpc[0].self_link - subnet = var.network_config.network_self_link != null ? var.network_config.subnet_self_links.transformation : module.trf-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_trf}-subnet"] + network_name = coalesce(local._shared_vpc_network, module.trf-vpc[0].name) + network = coalesce(var.network_config.network_self_link, module.trf-vpc[0].self_link) + subnet = try(var.network_config.subnet_self_links.transformation, module.trf-vpc[0].subnet_self_links["${var.location_config.region}/${local.prefix_trf}-subnet"]) } } - + _shared_vpc_network = try(regex("[a-z]([-a-z0-9]*[a-z0-9])?$", var.network_config.network_self_link), null) _shared_vpc_project = try(regex("projects/([a-z0-9-]{6,30})", var.network_config.network_self_link)[0], null) _shared_vpc_service_config = var.network_config.network_self_link != null ? { attach = true @@ -45,7 +43,7 @@ locals { groups_iam = { for k, v in local.groups : k => "group:${v}" } service_encryption_keys = var.service_encryption_keys - # Uncomment this section and assigne comment the previous line + # To create KMS keys in the common projet: uncomment assignement below and comment assignement above # service_encryption_keys = { # bq = module.sec-kms-1.key_ids.bq diff --git a/examples/data-solutions/data-platform-foundations/variables.tf b/examples/data-solutions/data-platform-foundations/variables.tf index 752061e6..f1878636 100644 --- a/examples/data-solutions/data-platform-foundations/variables.tf +++ b/examples/data-solutions/data-platform-foundations/variables.tf @@ -93,7 +93,7 @@ variable "project_create" { default = null } -variable "project_id" { +variable "project_ids" { description = "Project id, references existing project if `project_create` is null." type = object({ landing = string