diff --git a/fast/stages/0-org-setup/schemas/project.schema.json b/fast/stages/0-org-setup/schemas/project.schema.json index f1801d92d..df5bc11cc 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.json +++ b/fast/stages/0-org-setup/schemas/project.schema.json @@ -114,6 +114,9 @@ "description": { "type": "string" }, + "prefix": { + "type": "string" + }, "iam": { "$ref": "#/$defs/iam" }, diff --git a/fast/stages/0-org-setup/schemas/project.schema.md b/fast/stages/0-org-setup/schemas/project.schema.md index 5e7f57c9b..6ac748ba0 100644 --- a/fast/stages/0-org-setup/schemas/project.schema.md +++ b/fast/stages/0-org-setup/schemas/project.schema.md @@ -38,6 +38,7 @@ - **`^[a-z0-9-]+$`**: *object*
*additional properties: false* - **description**: *string* + - **prefix**: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* @@ -79,6 +80,17 @@ - **friendly_name**: *string* - **location**: *string* - **encryption_key**: *string* + - **iam**: *reference([iam](#refs-iam))* + - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* + - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* + - **options**: *object* +
*additional properties: false* + - **default_table_expiration_ms**: *number* + - **default_partition_expiration_ms**: *number* + - **delete_contents_on_destroy**: *boolean* + - **max_time_travel_hours**: *number* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **deletion_policy**: *string*
*enum: ['PREVENT', 'DELETE', 'ABANDON']* - **factories_config**: *object* @@ -111,6 +123,7 @@ - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **keys**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]+[a-z0-9]$`**: *object* @@ -131,7 +144,7 @@ - **pam_entitlements**: *reference([pam_entitlements](#refs-pam_entitlements))* - **log_buckets**: *object*
*additional properties: false* - - **`^[a-z0-9-]+$`**: *reference([log_bucket](#refs-log_bucket))* + - **`^[a-zA-Z0-9_-]+$`**: *reference([log_bucket](#refs-log_bucket))* - **metric_scopes**: *array* - items: *string* - **name**: *string* @@ -202,6 +215,7 @@ - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* @@ -231,11 +245,11 @@ - **network_subnet_users**: *object* - **`^[a-z0-9_-]+$`**: *array* - items: *string* +- **tags**: *object* +
*additional properties: object* - **tag_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *string* -- **tags**: *object* -
*additional properties: object* - **universe**: *object*
*additional properties: false* - **prefix**: *string* @@ -331,6 +345,7 @@ - **is_locked**: *boolean* - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* @@ -522,3 +537,6 @@
*additional properties: false* - **minimum_backoff**: *number* - **maximum_backoff**: *number* +- **tag_bindings**: *object* +
*additional properties: false* + - **`^[a-z0-9_-]+$`**: *string* diff --git a/fast/stages/2-networking/schemas/project.schema.json b/fast/stages/2-networking/schemas/project.schema.json index f1801d92d..df5bc11cc 100644 --- a/fast/stages/2-networking/schemas/project.schema.json +++ b/fast/stages/2-networking/schemas/project.schema.json @@ -114,6 +114,9 @@ "description": { "type": "string" }, + "prefix": { + "type": "string" + }, "iam": { "$ref": "#/$defs/iam" }, diff --git a/fast/stages/2-networking/schemas/project.schema.md b/fast/stages/2-networking/schemas/project.schema.md index 5e7f57c9b..6ac748ba0 100644 --- a/fast/stages/2-networking/schemas/project.schema.md +++ b/fast/stages/2-networking/schemas/project.schema.md @@ -38,6 +38,7 @@ - **`^[a-z0-9-]+$`**: *object*
*additional properties: false* - **description**: *string* + - **prefix**: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* @@ -79,6 +80,17 @@ - **friendly_name**: *string* - **location**: *string* - **encryption_key**: *string* + - **iam**: *reference([iam](#refs-iam))* + - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* + - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* + - **options**: *object* +
*additional properties: false* + - **default_table_expiration_ms**: *number* + - **default_partition_expiration_ms**: *number* + - **delete_contents_on_destroy**: *boolean* + - **max_time_travel_hours**: *number* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **deletion_policy**: *string*
*enum: ['PREVENT', 'DELETE', 'ABANDON']* - **factories_config**: *object* @@ -111,6 +123,7 @@ - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **keys**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]+[a-z0-9]$`**: *object* @@ -131,7 +144,7 @@ - **pam_entitlements**: *reference([pam_entitlements](#refs-pam_entitlements))* - **log_buckets**: *object*
*additional properties: false* - - **`^[a-z0-9-]+$`**: *reference([log_bucket](#refs-log_bucket))* + - **`^[a-zA-Z0-9_-]+$`**: *reference([log_bucket](#refs-log_bucket))* - **metric_scopes**: *array* - items: *string* - **name**: *string* @@ -202,6 +215,7 @@ - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* @@ -231,11 +245,11 @@ - **network_subnet_users**: *object* - **`^[a-z0-9_-]+$`**: *array* - items: *string* +- **tags**: *object* +
*additional properties: object* - **tag_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *string* -- **tags**: *object* -
*additional properties: object* - **universe**: *object*
*additional properties: false* - **prefix**: *string* @@ -331,6 +345,7 @@ - **is_locked**: *boolean* - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* @@ -522,3 +537,6 @@
*additional properties: false* - **minimum_backoff**: *number* - **maximum_backoff**: *number* +- **tag_bindings**: *object* +
*additional properties: false* + - **`^[a-z0-9_-]+$`**: *string* diff --git a/fast/stages/2-project-factory/schemas/project.schema.json b/fast/stages/2-project-factory/schemas/project.schema.json index f1801d92d..df5bc11cc 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.json +++ b/fast/stages/2-project-factory/schemas/project.schema.json @@ -114,6 +114,9 @@ "description": { "type": "string" }, + "prefix": { + "type": "string" + }, "iam": { "$ref": "#/$defs/iam" }, diff --git a/fast/stages/2-project-factory/schemas/project.schema.md b/fast/stages/2-project-factory/schemas/project.schema.md index 5e7f57c9b..6ac748ba0 100644 --- a/fast/stages/2-project-factory/schemas/project.schema.md +++ b/fast/stages/2-project-factory/schemas/project.schema.md @@ -38,6 +38,7 @@ - **`^[a-z0-9-]+$`**: *object*
*additional properties: false* - **description**: *string* + - **prefix**: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* @@ -79,6 +80,17 @@ - **friendly_name**: *string* - **location**: *string* - **encryption_key**: *string* + - **iam**: *reference([iam](#refs-iam))* + - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* + - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* + - **options**: *object* +
*additional properties: false* + - **default_table_expiration_ms**: *number* + - **default_partition_expiration_ms**: *number* + - **delete_contents_on_destroy**: *boolean* + - **max_time_travel_hours**: *number* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **deletion_policy**: *string*
*enum: ['PREVENT', 'DELETE', 'ABANDON']* - **factories_config**: *object* @@ -111,6 +123,7 @@ - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **keys**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]+[a-z0-9]$`**: *object* @@ -131,7 +144,7 @@ - **pam_entitlements**: *reference([pam_entitlements](#refs-pam_entitlements))* - **log_buckets**: *object*
*additional properties: false* - - **`^[a-z0-9-]+$`**: *reference([log_bucket](#refs-log_bucket))* + - **`^[a-zA-Z0-9_-]+$`**: *reference([log_bucket](#refs-log_bucket))* - **metric_scopes**: *array* - items: *string* - **name**: *string* @@ -202,6 +215,7 @@ - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* @@ -231,11 +245,11 @@ - **network_subnet_users**: *object* - **`^[a-z0-9_-]+$`**: *array* - items: *string* +- **tags**: *object* +
*additional properties: object* - **tag_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *string* -- **tags**: *object* -
*additional properties: object* - **universe**: *object*
*additional properties: false* - **prefix**: *string* @@ -331,6 +345,7 @@ - **is_locked**: *boolean* - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* @@ -522,3 +537,6 @@
*additional properties: false* - **minimum_backoff**: *number* - **maximum_backoff**: *number* +- **tag_bindings**: *object* +
*additional properties: false* + - **`^[a-z0-9_-]+$`**: *string* diff --git a/fast/stages/2-security/schemas/project.schema.json b/fast/stages/2-security/schemas/project.schema.json index f1801d92d..df5bc11cc 100644 --- a/fast/stages/2-security/schemas/project.schema.json +++ b/fast/stages/2-security/schemas/project.schema.json @@ -114,6 +114,9 @@ "description": { "type": "string" }, + "prefix": { + "type": "string" + }, "iam": { "$ref": "#/$defs/iam" }, diff --git a/fast/stages/2-security/schemas/project.schema.md b/fast/stages/2-security/schemas/project.schema.md index 5e7f57c9b..6ac748ba0 100644 --- a/fast/stages/2-security/schemas/project.schema.md +++ b/fast/stages/2-security/schemas/project.schema.md @@ -38,6 +38,7 @@ - **`^[a-z0-9-]+$`**: *object*
*additional properties: false* - **description**: *string* + - **prefix**: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* @@ -79,6 +80,17 @@ - **friendly_name**: *string* - **location**: *string* - **encryption_key**: *string* + - **iam**: *reference([iam](#refs-iam))* + - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* + - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* + - **options**: *object* +
*additional properties: false* + - **default_table_expiration_ms**: *number* + - **default_partition_expiration_ms**: *number* + - **delete_contents_on_destroy**: *boolean* + - **max_time_travel_hours**: *number* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **deletion_policy**: *string*
*enum: ['PREVENT', 'DELETE', 'ABANDON']* - **factories_config**: *object* @@ -111,6 +123,7 @@ - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **keys**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]+[a-z0-9]$`**: *object* @@ -131,7 +144,7 @@ - **pam_entitlements**: *reference([pam_entitlements](#refs-pam_entitlements))* - **log_buckets**: *object*
*additional properties: false* - - **`^[a-z0-9-]+$`**: *reference([log_bucket](#refs-log_bucket))* + - **`^[a-zA-Z0-9_-]+$`**: *reference([log_bucket](#refs-log_bucket))* - **metric_scopes**: *array* - items: *string* - **name**: *string* @@ -202,6 +215,7 @@ - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* @@ -231,11 +245,11 @@ - **network_subnet_users**: *object* - **`^[a-z0-9_-]+$`**: *array* - items: *string* +- **tags**: *object* +
*additional properties: object* - **tag_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *string* -- **tags**: *object* -
*additional properties: object* - **universe**: *object*
*additional properties: false* - **prefix**: *string* @@ -331,6 +345,7 @@ - **is_locked**: *boolean* - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* @@ -522,3 +537,6 @@
*additional properties: false* - **minimum_backoff**: *number* - **maximum_backoff**: *number* +- **tag_bindings**: *object* +
*additional properties: false* + - **`^[a-z0-9_-]+$`**: *string* diff --git a/modules/project-factory/automation.tf b/modules/project-factory/automation.tf index a0be4a17a..8d458a706 100644 --- a/modules/project-factory/automation.tf +++ b/modules/project-factory/automation.tf @@ -60,7 +60,7 @@ locals { automation_project = v.project name = sk parent = k - parent_name = v.parent_name + prefix = try(sv.prefix, v.parent_name) }) ] if v.service_accounts != null ])) @@ -129,7 +129,7 @@ module "automation-service-accounts" { source = "../iam-service-account" for_each = local.automation_sas project_id = each.value.automation_project - prefix = each.value.parent_name + prefix = each.value.prefix name = each.value.name description = lookup(each.value, "description", null) display_name = lookup( diff --git a/modules/project-factory/outputs.tf b/modules/project-factory/outputs.tf index 1353a16e3..cd5496c03 100644 --- a/modules/project-factory/outputs.tf +++ b/modules/project-factory/outputs.tf @@ -19,7 +19,7 @@ locals { for k, v in local.automation_buckets : v.parent_name => k } _outputs_automation_sas = { - for k, v in local.automation_sas : v.parent_name => k... + for k, v in local.automation_sas : v.prefix => k... } outputs_projects = { for k, v in local.projects_input : k => { diff --git a/modules/project-factory/schemas/project.schema.json b/modules/project-factory/schemas/project.schema.json index f1801d92d..df5bc11cc 100644 --- a/modules/project-factory/schemas/project.schema.json +++ b/modules/project-factory/schemas/project.schema.json @@ -114,6 +114,9 @@ "description": { "type": "string" }, + "prefix": { + "type": "string" + }, "iam": { "$ref": "#/$defs/iam" }, diff --git a/modules/project-factory/schemas/project.schema.md b/modules/project-factory/schemas/project.schema.md index 5e7f57c9b..6ac748ba0 100644 --- a/modules/project-factory/schemas/project.schema.md +++ b/modules/project-factory/schemas/project.schema.md @@ -38,6 +38,7 @@ - **`^[a-z0-9-]+$`**: *object*
*additional properties: false* - **description**: *string* + - **prefix**: *string* - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* @@ -79,6 +80,17 @@ - **friendly_name**: *string* - **location**: *string* - **encryption_key**: *string* + - **iam**: *reference([iam](#refs-iam))* + - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* + - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))* + - **options**: *object* +
*additional properties: false* + - **default_table_expiration_ms**: *number* + - **default_partition_expiration_ms**: *number* + - **delete_contents_on_destroy**: *boolean* + - **max_time_travel_hours**: *number* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **deletion_policy**: *string*
*enum: ['PREVENT', 'DELETE', 'ABANDON']* - **factories_config**: *object* @@ -111,6 +123,7 @@ - **iam**: *reference([iam](#refs-iam))* - **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))* - **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **keys**: *object*
*additional properties: false* - **`^[a-z][a-z0-9-]+[a-z0-9]$`**: *object* @@ -131,7 +144,7 @@ - **pam_entitlements**: *reference([pam_entitlements](#refs-pam_entitlements))* - **log_buckets**: *object*
*additional properties: false* - - **`^[a-z0-9-]+$`**: *reference([log_bucket](#refs-log_bucket))* + - **`^[a-zA-Z0-9_-]+$`**: *reference([log_bucket](#refs-log_bucket))* - **metric_scopes**: *array* - items: *string* - **name**: *string* @@ -202,6 +215,7 @@ - items: *string* - **iam_project_roles**: *reference([iam_project_roles](#refs-iam_project_roles))* - **iam_sa_roles**: *reference([iam_sa_roles](#refs-iam_sa_roles))* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **service_encryption_key_ids**: *object*
*additional properties: false* - **`^[a-z-]+\.googleapis\.com$`**: *array* @@ -231,11 +245,11 @@ - **network_subnet_users**: *object* - **`^[a-z0-9_-]+$`**: *array* - items: *string* +- **tags**: *object* +
*additional properties: object* - **tag_bindings**: *object*
*additional properties: false* - **`^[a-z0-9_-]+$`**: *string* -- **tags**: *object* -
*additional properties: object* - **universe**: *object*
*additional properties: false* - **prefix**: *string* @@ -331,6 +345,7 @@ - **is_locked**: *boolean* - **soft_delete_retention**: *number* - **enable_object_retention**: *boolean* + - **tag_bindings**: *reference([tag_bindings](#refs-tag_bindings))* - **buckets**: *object*
*additional properties: false* - **`^[a-z0-9-]+$`**: *reference([bucket](#refs-bucket))* @@ -522,3 +537,6 @@
*additional properties: false* - **minimum_backoff**: *number* - **maximum_backoff**: *number* +- **tag_bindings**: *object* +
*additional properties: false* + - **`^[a-z0-9_-]+$`**: *string*