Add missing folder features to project factory and align logging across folder/org modules (#3779)
This commit is contained in:
committed by
GitHub
parent
e45e8089ff
commit
0be09646b0
File diff suppressed because one or more lines are too long
@@ -54,6 +54,8 @@ module "folder-1" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 1
|
||||
}
|
||||
folder_create = lookup(each.value, "id", null) == null
|
||||
id = lookup(each.value, "id", null)
|
||||
deletion_protection = lookup(each.value, "deletion_protection", false)
|
||||
parent = coalesce(each.value.parent, "$folder_ids:default")
|
||||
name = each.value.name
|
||||
@@ -65,6 +67,7 @@ module "folder-1" {
|
||||
pam_entitlements = lookup(each.value, "pam_entitlements", {})
|
||||
tag_bindings = lookup(each.value, "tag_bindings", {})
|
||||
assured_workload_config = lookup(each.value, "assured_workload_config", null)
|
||||
logging_settings = lookup(each.value, "logging", null)
|
||||
context = local.ctx
|
||||
}
|
||||
|
||||
@@ -73,13 +76,14 @@ module "folder-1-iam" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 1
|
||||
}
|
||||
id = module.folder-1[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
folder_create = false
|
||||
id = module.folder-1[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
asset_search = lookup(each.value, "asset_search", {})
|
||||
factories_config = {
|
||||
# we do anything that can refer to IAM and custom roles in this call
|
||||
pam_entitlements = try(each.value.factories_config.pam_entitlements, null)
|
||||
}
|
||||
folder_create = false
|
||||
autokey_config = lookup(each.value, "autokey_config", null)
|
||||
iam = lookup(each.value, "iam", {})
|
||||
iam_bindings = lookup(each.value, "iam_bindings", {})
|
||||
@@ -88,8 +92,10 @@ module "folder-1-iam" {
|
||||
iam_by_principals_additive = lookup(each.value, "iam_by_principals_additive", {})
|
||||
iam_by_principals_conditional = lookup(each.value, "iam_by_principals_conditional", {})
|
||||
logging_data_access = lookup(each.value, "data_access_logs", {})
|
||||
logging_sinks = try(each.value.logging.sinks, {})
|
||||
context = merge(local.ctx, {
|
||||
iam_principals = local.ctx_iam_principals
|
||||
kms_keys = merge(local.ctx.kms_keys, local.kms_keys)
|
||||
project_ids = local.ctx_project_ids
|
||||
project_numbers = local.ctx_project_numbers
|
||||
})
|
||||
@@ -100,6 +106,8 @@ module "folder-2" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 2
|
||||
}
|
||||
folder_create = lookup(each.value, "id", null) == null
|
||||
id = lookup(each.value, "id", null)
|
||||
deletion_protection = lookup(each.value, "deletion_protection", false)
|
||||
parent = coalesce(
|
||||
each.value.parent, "$folder_ids:${each.value.parent_key}"
|
||||
@@ -113,6 +121,7 @@ module "folder-2" {
|
||||
pam_entitlements = lookup(each.value, "pam_entitlements", {})
|
||||
tag_bindings = lookup(each.value, "tag_bindings", {})
|
||||
assured_workload_config = lookup(each.value, "assured_workload_config", null)
|
||||
logging_settings = lookup(each.value, "logging", null)
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-1 : k => v.id
|
||||
@@ -126,13 +135,14 @@ module "folder-2-iam" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 2
|
||||
}
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
id = module.folder-2[each.key].id
|
||||
folder_create = false
|
||||
id = module.folder-2[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
asset_search = lookup(each.value, "asset_search", {})
|
||||
factories_config = {
|
||||
# we do anything that can refer to IAM and custom roles in this call
|
||||
pam_entitlements = try(each.value.factories_config.pam_entitlements, null)
|
||||
}
|
||||
folder_create = false
|
||||
autokey_config = lookup(each.value, "autokey_config", null)
|
||||
iam = lookup(each.value, "iam", {})
|
||||
iam_bindings = lookup(each.value, "iam_bindings", {})
|
||||
@@ -141,11 +151,13 @@ module "folder-2-iam" {
|
||||
iam_by_principals_additive = lookup(each.value, "iam_by_principals_additive", {})
|
||||
iam_by_principals_conditional = lookup(each.value, "iam_by_principals_conditional", {})
|
||||
logging_data_access = lookup(each.value, "data_access_logs", {})
|
||||
logging_sinks = try(each.value.logging.sinks, {})
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-1 : k => v.id
|
||||
})
|
||||
iam_principals = local.ctx_iam_principals
|
||||
kms_keys = merge(local.ctx.kms_keys, local.kms_keys)
|
||||
project_ids = local.ctx_project_ids
|
||||
project_numbers = local.ctx_project_numbers
|
||||
})
|
||||
@@ -156,6 +168,8 @@ module "folder-3" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 3
|
||||
}
|
||||
folder_create = lookup(each.value, "id", null) == null
|
||||
id = lookup(each.value, "id", null)
|
||||
deletion_protection = lookup(each.value, "deletion_protection", false)
|
||||
parent = coalesce(
|
||||
each.value.parent, "$folder_ids:${each.value.parent_key}"
|
||||
@@ -169,6 +183,7 @@ module "folder-3" {
|
||||
pam_entitlements = lookup(each.value, "pam_entitlements", {})
|
||||
tag_bindings = lookup(each.value, "tag_bindings", {})
|
||||
assured_workload_config = lookup(each.value, "assured_workload_config", null)
|
||||
logging_settings = lookup(each.value, "logging", null)
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-2 : k => v.id
|
||||
@@ -182,13 +197,14 @@ module "folder-3-iam" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 3
|
||||
}
|
||||
id = module.folder-3[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
folder_create = false
|
||||
id = module.folder-3[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
asset_search = lookup(each.value, "asset_search", {})
|
||||
factories_config = {
|
||||
# we do anything that can refer to IAM and custom roles in this call
|
||||
pam_entitlements = try(each.value.factories_config.pam_entitlements, null)
|
||||
}
|
||||
folder_create = false
|
||||
autokey_config = lookup(each.value, "autokey_config", null)
|
||||
iam = lookup(each.value, "iam", {})
|
||||
iam_bindings = lookup(each.value, "iam_bindings", {})
|
||||
@@ -197,11 +213,13 @@ module "folder-3-iam" {
|
||||
iam_by_principals_additive = lookup(each.value, "iam_by_principals_additive", {})
|
||||
iam_by_principals_conditional = lookup(each.value, "iam_by_principals_conditional", {})
|
||||
logging_data_access = lookup(each.value, "data_access_logs", {})
|
||||
logging_sinks = try(each.value.logging.sinks, {})
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-2 : k => v.id
|
||||
})
|
||||
iam_principals = local.ctx_iam_principals
|
||||
kms_keys = merge(local.ctx.kms_keys, local.kms_keys)
|
||||
project_ids = local.ctx_project_ids
|
||||
project_numbers = local.ctx_project_numbers
|
||||
})
|
||||
@@ -212,6 +230,8 @@ module "folder-4" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 4
|
||||
}
|
||||
folder_create = lookup(each.value, "id", null) == null
|
||||
id = lookup(each.value, "id", null)
|
||||
deletion_protection = lookup(each.value, "deletion_protection", false)
|
||||
parent = coalesce(
|
||||
each.value.parent, "$folder_ids:${each.value.parent_key}"
|
||||
@@ -225,6 +245,7 @@ module "folder-4" {
|
||||
pam_entitlements = lookup(each.value, "pam_entitlements", {})
|
||||
tag_bindings = lookup(each.value, "tag_bindings", {})
|
||||
assured_workload_config = lookup(each.value, "assured_workload_config", null)
|
||||
logging_settings = lookup(each.value, "logging", null)
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-3 : k => v.id
|
||||
@@ -238,13 +259,14 @@ module "folder-4-iam" {
|
||||
for_each = {
|
||||
for k, v in local.folders_input : k => v if v.level == 4
|
||||
}
|
||||
id = module.folder-4[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
folder_create = false
|
||||
id = module.folder-4[each.key].id
|
||||
asset_feeds = lookup(each.value, "asset_feeds", {})
|
||||
asset_search = lookup(each.value, "asset_search", {})
|
||||
factories_config = {
|
||||
# we do anything that can refer to IAM and custom roles in this call
|
||||
pam_entitlements = try(each.value.factories_config.pam_entitlements, null)
|
||||
}
|
||||
folder_create = false
|
||||
autokey_config = lookup(each.value, "autokey_config", null)
|
||||
iam = lookup(each.value, "iam", {})
|
||||
iam_bindings = lookup(each.value, "iam_bindings", {})
|
||||
@@ -253,11 +275,13 @@ module "folder-4-iam" {
|
||||
iam_by_principals_additive = lookup(each.value, "iam_by_principals_additive", {})
|
||||
iam_by_principals_conditional = lookup(each.value, "iam_by_principals_conditional", {})
|
||||
logging_data_access = lookup(each.value, "data_access_logs", {})
|
||||
logging_sinks = try(each.value.logging.sinks, {})
|
||||
context = merge(local.ctx, {
|
||||
folder_ids = merge(local.ctx.folder_ids, {
|
||||
for k, v in module.folder-3 : k => v.id
|
||||
})
|
||||
iam_principals = local.ctx_iam_principals
|
||||
kms_keys = merge(local.ctx.kms_keys, local.kms_keys)
|
||||
project_ids = local.ctx_project_ids
|
||||
project_numbers = local.ctx_project_numbers
|
||||
})
|
||||
|
||||
@@ -4,6 +4,30 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"asset_search": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z0-9-]+$": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"asset_types"
|
||||
],
|
||||
"properties": {
|
||||
"asset_types": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"query": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"asset_feeds": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -236,6 +260,73 @@
|
||||
"deletion_protection": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^(folders/[0-9]+|\\$folder_ids:[a-z0-9_-]+)$"
|
||||
},
|
||||
"firewall_policy": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"policy"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"policy": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"logging": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"kms_key_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"storage_location": {
|
||||
"type": "string"
|
||||
},
|
||||
"sinks": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z][a-z0-9-_]+$": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"destination": {
|
||||
"type": "string"
|
||||
},
|
||||
"exclusions": {
|
||||
"type": "object"
|
||||
},
|
||||
"filter": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"default": "logging",
|
||||
"enum": [
|
||||
"bigquery",
|
||||
"logging",
|
||||
"project",
|
||||
"pubsub",
|
||||
"storage"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"factories_config": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
|
||||
*additional properties: false*
|
||||
|
||||
- **asset_search**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **`^[a-z0-9-]+$`**: *object*
|
||||
<br>*additional properties: false*
|
||||
- ⁺**asset_types**: *array*
|
||||
- items: *string*
|
||||
- **query**: *string*
|
||||
- **asset_feeds**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **`^[a-z0-9-]+$`**: *object*
|
||||
@@ -75,6 +82,24 @@
|
||||
- **exempted_members**: *array*
|
||||
- items: *string*
|
||||
- **deletion_protection**: *boolean*
|
||||
- **firewall_policy**: *object*
|
||||
<br>*additional properties: false*
|
||||
- ⁺**name**: *string*
|
||||
- ⁺**policy**: *string*
|
||||
- **logging**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **kms_key_name**: *string*
|
||||
- **storage_location**: *string*
|
||||
- **sinks**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **`^[a-z][a-z0-9-_]+$`**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **description**: *string*
|
||||
- **destination**: *string*
|
||||
- **exclusions**: *object*
|
||||
- **filter**: *string*
|
||||
- **type**: *string*
|
||||
<br>*default: logging*, *enum: ['bigquery', 'logging', 'project', 'pubsub', 'storage']*
|
||||
- **factories_config**: *object*
|
||||
<br>*additional properties: false*
|
||||
- **org_policies**: *string*
|
||||
|
||||
@@ -17,6 +17,10 @@
|
||||
variable "folders" {
|
||||
description = "Folders data merged with factory data."
|
||||
type = map(object({
|
||||
asset_search = optional(map(object({
|
||||
asset_types = list(string)
|
||||
query = optional(string)
|
||||
})), {})
|
||||
asset_feeds = optional(map(object({
|
||||
billing_project = string
|
||||
content_type = optional(string)
|
||||
@@ -49,10 +53,31 @@ variable "folders" {
|
||||
}))
|
||||
violation_notifications_enabled = optional(bool)
|
||||
}), null)
|
||||
contacts = optional(map(list(string)), {})
|
||||
id = optional(string)
|
||||
name = optional(string)
|
||||
parent = optional(string)
|
||||
deletion_protection = optional(bool)
|
||||
iam = optional(map(list(string)), {})
|
||||
firewall_policy = optional(object({
|
||||
name = string
|
||||
policy = string
|
||||
}))
|
||||
logging = optional(object({
|
||||
kms_key_name = optional(string)
|
||||
storage_location = optional(string)
|
||||
sinks = optional(map(object({
|
||||
description = optional(string)
|
||||
destination = string
|
||||
disabled = optional(bool, false)
|
||||
exclusions = optional(map(string), {})
|
||||
filter = optional(string)
|
||||
iam = optional(bool, true)
|
||||
include_children = optional(bool, true)
|
||||
intercept_children = optional(bool, false)
|
||||
type = optional(string, "logging")
|
||||
})), {})
|
||||
}))
|
||||
iam = optional(map(list(string)), {})
|
||||
iam_bindings = optional(map(object({
|
||||
members = list(string)
|
||||
role = string
|
||||
|
||||
Reference in New Issue
Block a user