Files
hunfabric/modules/looker-core/main.tf
2026-05-21 10:24:00 +02:00

131 lines
4.9 KiB
HCL

/**
* Copyright 2026 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 {
looker_instance_name = "${local.prefix}${var.name}"
prefix = var.prefix == null ? "" : "${var.prefix}-"
}
resource "google_looker_instance" "looker" {
project = var.project_id
name = local.looker_instance_name
consumer_network = try(var.network_config.psa_config.network, null)
platform_edition = var.platform_edition
private_ip_enabled = try(var.network_config.psa_config.enable_private_ip, null)
public_ip_enabled = coalesce(var.network_config.public, false) || try(var.network_config.psa_config.enable_public_ip, false)
psc_enabled = var.network_config.psc_config != null
region = var.region
reserved_range = try(var.network_config.psa_config.allocated_ip_range, null)
fips_enabled = var.fips_enabled
gemini_enabled = var.gemini_enabled
oauth_config {
client_id = var.oauth_config.client_id
client_secret = var.oauth_config.client_secret
}
dynamic "psc_config" {
for_each = var.network_config.psc_config != null ? [""] : []
content {
allowed_vpcs = var.network_config.psc_config.allowed_vpcs
dynamic "service_attachments" {
for_each = var.network_config.psc_config.service_attachments
content {
local_fqdn = service_attachments.value.local_fqdn
target_service_attachment_uri = service_attachments.value.target_service_attachment_uri
}
}
}
}
dynamic "admin_settings" {
for_each = var.admin_settings != null ? [""] : []
content {
allowed_email_domains = var.admin_settings.allowed_email_domains
}
}
dynamic "custom_domain" {
for_each = var.custom_domain != null ? [""] : []
content {
domain = var.custom_domain
}
}
controlled_egress_enabled = var.controlled_egress != null ? var.controlled_egress.enabled : null
dynamic "controlled_egress_config" {
for_each = var.controlled_egress != null ? [""] : []
content {
marketplace_enabled = var.controlled_egress.marketplace_enabled
egress_fqdns = var.controlled_egress.egress_fqdns
}
}
dynamic "periodic_export_config" {
for_each = var.periodic_export_config != null ? [""] : []
content {
kms_key = var.periodic_export_config.kms_key
gcs_uri = var.periodic_export_config.gcs_uri
start_time {
hours = var.periodic_export_config.start_time.hours
minutes = var.periodic_export_config.start_time.minutes
seconds = var.periodic_export_config.start_time.seconds
nanos = var.periodic_export_config.start_time.nanos
}
}
}
dynamic "deny_maintenance_period" {
for_each = var.maintenance_config.deny_maintenance_period != null ? [1] : []
content {
start_date {
year = var.maintenance_config.deny_maintenance_period.start_date.year
month = var.maintenance_config.deny_maintenance_period.start_date.month
day = var.maintenance_config.deny_maintenance_period.start_date.day
}
end_date {
year = var.maintenance_config.deny_maintenance_period.start_date.year
month = var.maintenance_config.deny_maintenance_period.start_date.month
day = var.maintenance_config.deny_maintenance_period.start_date.day
}
time {
hours = var.maintenance_config.deny_maintenance_period.start_times.hours
minutes = var.maintenance_config.deny_maintenance_period.start_times.minutes
seconds = var.maintenance_config.deny_maintenance_period.start_times.seconds
nanos = var.maintenance_config.deny_maintenance_period.start_times.nanos
}
}
}
dynamic "encryption_config" {
for_each = var.encryption_config != null ? [""] : []
content {
kms_key_name = var.encryption_config.kms_key_name
}
}
dynamic "maintenance_window" {
for_each = var.maintenance_config.maintenance_window != null ? [""] : []
content {
day_of_week = var.maintenance_config.maintenance_window.day
start_time {
hours = var.maintenance_config.maintenance_window.start_times.hours
minutes = var.maintenance_config.maintenance_window.start_times.minutes
seconds = var.maintenance_config.maintenance_window.start_times.seconds
nanos = var.maintenance_config.maintenance_window.start_times.nanos
}
}
}
}