diff --git a/modules/net-vpc/README.md b/modules/net-vpc/README.md
index 39406973..d541d176 100644
--- a/modules/net-vpc/README.md
+++ b/modules/net-vpc/README.md
@@ -86,12 +86,6 @@ module "vpc-host" {
local.service_project_1.project_id,
local.service_project_2.project_id
]
- iam_roles = {
- "europe-west1/subnet-1" = [
- "roles/compute.networkUser",
- "roles/compute.securityAdmin"
- ]
- }
iam_members = {
"europe-west1/subnet-1" = {
"roles/compute.networkUser" = [
@@ -117,7 +111,6 @@ module "vpc-host" {
| *delete_default_routes_on_create* | Set to true to delete the default routes at creation time. | bool
| | false
|
| *description* | An optional description of this resource (triggers recreation on change). | string
| | Terraform-managed.
|
| *iam_members* | List of IAM members keyed by subnet 'region/name' and role. | map(map(list(string)))
| | {}
|
-| *iam_roles* | List of IAM roles keyed by subnet 'region/name'. | map(list(string))
| | {}
|
| *log_config_defaults* | Default configuration for flow logs when enabled. | object({...})
| | ...
|
| *log_configs* | Map keyed by subnet 'region/name' of optional configurations for flow logs when enabled. | map(map(string))
| | {}
|
| *peering_config* | VPC peering configuration. | object({...})
| | null
|
diff --git a/modules/net-vpc/main.tf b/modules/net-vpc/main.tf
index 9f22d375..bad4f870 100644
--- a/modules/net-vpc/main.tf
+++ b/modules/net-vpc/main.tf
@@ -16,14 +16,16 @@
locals {
iam_members = var.iam_members == null ? {} : var.iam_members
- iam_pairs = var.iam_roles == null ? [] : flatten([
- for subnet, roles in var.iam_roles :
- [for role in roles : { subnet = subnet, role = role }]
+ subnet_iam_members = flatten([
+ for subnet, roles in local.iam_members : [
+ for role, members in roles : {
+ subnet = subnet
+ role = role
+ members = members
+ }
+ ]
])
- iam_keypairs = {
- for pair in local.iam_pairs :
- "${pair.subnet}-${pair.role}" => pair
- }
+
log_configs = var.log_configs == null ? {} : var.log_configs
peer_network = (
var.peering_config == null
@@ -152,14 +154,15 @@ resource "google_compute_subnetwork" "subnetwork" {
}
resource "google_compute_subnetwork_iam_binding" "binding" {
- for_each = local.iam_keypairs
+ for_each = {
+ for binding in local.subnet_iam_members :
+ "${binding.subnet}.${binding.role}" => binding
+ }
project = var.project_id
subnetwork = google_compute_subnetwork.subnetwork[each.value.subnet].name
region = google_compute_subnetwork.subnetwork[each.value.subnet].region
role = each.value.role
- members = lookup(
- lookup(local.iam_members, each.value.subnet, {}), each.value.role, []
- )
+ members = each.value.members
}
resource "google_compute_route" "gateway" {
diff --git a/modules/net-vpc/variables.tf b/modules/net-vpc/variables.tf
index 3a4d0c03..7aa0fd8b 100644
--- a/modules/net-vpc/variables.tf
+++ b/modules/net-vpc/variables.tf
@@ -32,12 +32,6 @@ variable "description" {
default = "Terraform-managed."
}
-variable "iam_roles" {
- description = "List of IAM roles keyed by subnet 'region/name'."
- type = map(list(string))
- default = {}
-}
-
variable "iam_members" {
description = "List of IAM members keyed by subnet 'region/name' and role."
type = map(map(list(string)))
diff --git a/networking/shared-vpc-gke/main.tf b/networking/shared-vpc-gke/main.tf
index ef6ee338..f3f73bb0 100644
--- a/networking/shared-vpc-gke/main.tf
+++ b/networking/shared-vpc-gke/main.tf
@@ -107,10 +107,6 @@ module "vpc-shared" {
}
}
]
- iam_roles = {
- "${var.region}/gke" = ["roles/compute.networkUser", "roles/compute.securityAdmin"]
- "${var.region}/gce" = ["roles/compute.networkUser"]
- }
iam_members = {
"${var.region}/gce" = {
"roles/compute.networkUser" = concat(var.owners_gce, [
diff --git a/tests/modules/net_vpc/fixture/main.tf b/tests/modules/net_vpc/fixture/main.tf
index a9d92d47..5ab2c4f8 100644
--- a/tests/modules/net_vpc/fixture/main.tf
+++ b/tests/modules/net_vpc/fixture/main.tf
@@ -19,7 +19,6 @@ module "test" {
project_id = var.project_id
name = var.name
iam_members = var.iam_members
- iam_roles = var.iam_roles
log_configs = var.log_configs
log_config_defaults = var.log_config_defaults
peering_config = var.peering_config
diff --git a/tests/modules/net_vpc/fixture/variables.tf b/tests/modules/net_vpc/fixture/variables.tf
index 908548dd..7388ad66 100644
--- a/tests/modules/net_vpc/fixture/variables.tf
+++ b/tests/modules/net_vpc/fixture/variables.tf
@@ -29,13 +29,8 @@ variable "auto_create_subnetworks" {
default = false
}
-variable "iam_roles" {
- type = map(list(string))
- default = null
-}
-
variable "iam_members" {
- type = map(map(list(string)))
+ type = map(map(set(string)))
default = null
}