data "google_client_config" "default" {} resource "google_dns_managed_zone" "zone" { dns_name = var.dns_name name = var.zone_name != null ? var.zone_name : "${replace(replace(var.dns_name, "/\\.$/", ""), ".", "-")}-zone" project = var.project_id != null ? var.project_id : data.google_client_config.default.project visibility = var.network_id != null ? "private" : "public" dynamic "private_visibility_config" { for_each = var.network_id != null ? [1] : [] content { networks { network_url = var.network_id } } } dynamic "forwarding_config" { for_each = var.target_name_servers != null ? var.target_name_servers : [] content { target_name_servers { ipv4_address = forwarding_config.value } } } dynamic "peering_config" { for_each = var.peering_network_id != null ? [1] : [] content { target_network { network_url = var.peering_network_id } } } } resource "google_dns_record_set" "records" { count = length(var.resource_records) project = var.project_id != null ? var.project_id : data.google_client_config.default.project managed_zone = google_dns_managed_zone.zone.name name = var.resource_records[count.index].name type = var.resource_records[count.index].type ttl = var.resource_records[count.index].ttl rrdatas = var.resource_records[count.index].rrdatas }