cloud-foundation-fabric/modules/datafusion/main.tf

80 lines
2.6 KiB
HCL

/**
* Copyright 2022 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
locals {
prefix_length = 22
ip_allocation = (
var.ip_allocation_create
? "${google_compute_global_address.default[0].address}/${local.prefix_length}"
: var.ip_allocation
)
tenant_project = regex(
"cloud-datafusion-management-sa@([\\w-]+).iam.gserviceaccount.com",
google_data_fusion_instance.default.service_account
)[0]
}
resource "google_compute_global_address" "default" {
count = var.ip_allocation_create ? 1 : 0
project = var.project_id
name = "cdf-${var.name}"
address_type = "INTERNAL"
purpose = "VPC_PEERING"
prefix_length = local.prefix_length
network = var.network
}
resource "google_compute_network_peering" "default" {
count = var.network_peering == true ? 1 : 0
name = "cdf-${var.name}"
network = "projects/${var.project_id}/global/networks/${var.network}"
peer_network = "projects/${local.tenant_project}/global/networks/${var.region}-${google_data_fusion_instance.default.name}"
export_custom_routes = true
import_custom_routes = true
}
resource "google_compute_firewall" "default" {
count = var.firewall_create == true ? 1 : 0
name = "${var.name}-allow-ssh"
project = var.project_id
network = var.network
source_ranges = [local.ip_allocation]
target_tags = ["${var.name}-allow-ssh"]
allow {
protocol = "tcp"
ports = ["22"]
}
}
resource "google_data_fusion_instance" "default" {
provider = google-beta
project = var.project_id
name = var.name
type = var.type
description = var.description
labels = var.labels
region = var.region
private_instance = var.private_instance
enable_stackdriver_logging = var.enable_stackdriver_logging
enable_stackdriver_monitoring = var.enable_stackdriver_monitoring
network_config {
network = var.network
ip_allocation = local.ip_allocation
}
}