modules/workbench/main.tf (95 lines of code) (raw):

/** * Copyright 2023 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 unddisk_size_gber the License. */ resource "google_workbench_instance" "vertex_ai_workbench" { disable_proxy_access = var.disable_proxy_access instance_id = var.instance_id instance_owners = var.instance_owners labels = var.labels location = var.location name = var.name project = var.project_id desired_state = var.desired_state gce_setup { disable_public_ip = var.disable_public_ip enable_ip_forwarding = var.enable_ip_forwarding machine_type = var.machine_type metadata = merge(var.metadata_configs, var.metadata) tags = var.tags dynamic "accelerator_configs" { for_each = var.accelerator_configs == null ? [] : var.accelerator_configs iterator = accelerator_config content { type = accelerator_config.value.type core_count = accelerator_config.value.core_count } } boot_disk { disk_encryption = var.disk_encryption kms_key = var.kms_key disk_size_gb = var.boot_disk_size_gb disk_type = var.boot_disk_type } dynamic "data_disks" { for_each = var.data_disks == null ? [] : var.data_disks iterator = data_disk content { disk_encryption = var.disk_encryption kms_key = var.kms_key disk_size_gb = data_disk.value.disk_size_gb disk_type = data_disk.value.disk_type } } dynamic "network_interfaces" { for_each = var.network_interfaces == null ? [] : var.network_interfaces iterator = network_interface content { network = network_interface.value.network nic_type = network_interface.value.nic_type subnet = network_interface.value.subnet } } dynamic "service_accounts" { for_each = var.service_accounts == null ? [] : var.service_accounts iterator = service_account content { email = service_account.value.email } } dynamic "vm_image" { for_each = var.vm_image == null ? [] : ["vm_image"] content { family = var.vm_image.family name = var.vm_image.name project = var.vm_image.project } } dynamic "container_image" { for_each = var.container_image == null ? [] : ["container_image"] content { repository = lookup(var.container_image, "repository", null) tag = lookup(var.container_image, "tag", null) } } dynamic "shielded_instance_config" { for_each = var.shielded_instance_config == null ? [] : ["shielded_instance_config"] content { enable_secure_boot = lookup(var.shielded_instance_config, "enable_secure_boot", null) enable_vtpm = lookup(var.shielded_instance_config, "enable_vtpm", null) enable_integrity_monitoring = lookup(var.shielded_instance_config, "enable_integrity_monitoring", null) } } } }