131 lines
4.9 KiB
HCL
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
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|