@@ -58,16 +58,13 @@ locals {
5858 service_account = format (" service-%s@gcp-sa-networkconnectivity.iam.gserviceaccount.com" , local. service_project_number )
5959 role = " roles/compute.networkUser"
6060 }
61- " managedkafka.googleapis.com" : {
62- service_account = format (" service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com" , local. service_project_number )
63- role = " roles/managedkafka.serviceAgent"
64- }
6561 }
66- gke_shared_vpc_enabled = contains (var. active_apis , " container.googleapis.com" )
67- composer_shared_vpc_enabled = contains (var. active_apis , " composer.googleapis.com" )
68- datastream_shared_vpc_enabled = contains (var. active_apis , " datastream.googleapis.com" )
69- datafusion_shared_vpc_enabled = contains (var. active_apis , " datafusion.googleapis.com" )
70- active_apis = [for api in keys (local. apis ) : api if contains (var. active_apis , api)]
62+ gke_shared_vpc_enabled = contains (var. active_apis , " container.googleapis.com" )
63+ composer_shared_vpc_enabled = contains (var. active_apis , " composer.googleapis.com" )
64+ datastream_shared_vpc_enabled = contains (var. active_apis , " datastream.googleapis.com" )
65+ datafusion_shared_vpc_enabled = contains (var. active_apis , " datafusion.googleapis.com" )
66+ managedkafka_shared_vpc_enabled = contains (var. active_apis , " managedkafka.googleapis.com" )
67+ active_apis = [for api in keys (local. apis ) : api if contains (var. active_apis , api)]
7168 # Can't use setproduct due to https://github.com/terraform-google-modules/terraform-google-project-factory/issues/635
7269 subnetwork_api = length (var. shared_vpc_subnets ) != 0 ? flatten ([
7370 for i , api in local . active_apis : [for i , subnet in var . shared_vpc_subnets : " ${ api } ,${ subnet } " ]
@@ -203,3 +200,14 @@ resource "google_project_iam_member" "datasfusion_network_viewer" {
203200 role = " roles/compute.networkViewer"
204201 member = format (" serviceAccount:%s" , local. apis [" datafusion.googleapis.com" ]. service_account )
205202}
203+
204+ /* *****************************************
205+ roles/managedkafka.serviceAgent role granted to Managed Apache Kafka's service account on shared VPC host project
206+ Service Account: service-[project_number]@gcp-sa-managedkafka.iam.gserviceaccount.com
207+ *****************************************/
208+ resource "google_project_iam_member" "managed_kafka_service_agent" {
209+ count = local. managedkafka_shared_vpc_enabled && var. enable_shared_vpc_service_project && var. grant_network_role ? 1 : 0
210+ project = var. host_project_id
211+ role = " roles/managedkafka.serviceAgent"
212+ member = format (" serviceAccount:service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com" , local. service_project_number )
213+ }
0 commit comments