/** * Copyright 2024 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. */ variable "admin_principals" { description = "Users, groups and/or service accounts that are assigned roles, in IAM format (`group:foo@example.com`)." type = list(string) default = [] } variable "cloudsql_config" { description = "Cloud SQL Postgres config." type = object({ name = optional(string, "gitlab-0") database_version = optional(string, "POSTGRES_13") tier = optional(string, "db-custom-2-8192") }) default = {} nullable = false } variable "gcs_config" { description = "GCS for Object Storage config." type = object({ enable_versioning = optional(bool, false) location = optional(string, "EU") storage_class = optional(string, "STANDARD") }) default = {} nullable = false } variable "gitlab_config" { description = "Gitlab configuration." type = object({ hostname = optional(string, "gitlab.gcp.example.com") mail = optional(object({ enabled = optional(bool, false) sendgrid = optional(object({ api_key = optional(string) email_from = optional(string, null) email_reply_to = optional(string, null) }), null) }), {}) saml = optional(object({ forced = optional(bool, false) idp_cert_fingerprint = string sso_target_url = string name_identifier_format = optional(string, "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress") }), null) ha_required = optional(bool, false) }) default = {} nullable = false } variable "gitlab_instance_config" { description = "Gitlab Compute Engine instance config." type = object({ instance_type = optional(string, "n1-highcpu-8") name = optional(string, "gitlab-0") network_tags = optional(list(string), []) replica_zone = optional(string) zone = optional(string) boot_disk = optional(object({ size = optional(number, 20) type = optional(string, "pd-standard") }), {}) data_disk = optional(object({ size = optional(number, 100) type = optional(string, "pd-ssd") replica_zone = optional(string) }), {}) }) } variable "network_config" { description = "Shared VPC network configurations to use for Gitlab Runner VM." type = object({ host_project = optional(string) network_self_link = string subnet_self_link = string }) } variable "prefix" { description = "Prefix used for resource names." type = string nullable = false validation { condition = var.prefix != "" error_message = "Prefix cannot be empty." } } variable "project_create" { description = "Provide values if project creation is needed, uses existing project if null. Parent is in 'folders/nnn' or 'organizations/nnn' format." type = object({ billing_account_id = string parent = string }) default = null } variable "project_id" { description = "Project id, references existing project if `project_create` is null." type = string } variable "redis_config" { description = "Redis Config." type = object({ memory_size_gb = optional(number, 1) name = optional(string, "gitlab-0") persistence_mode = optional(string, "RDB") rdb_snapshot_period = optional(string, "TWELVE_HOURS") tier = optional(string, "BASIC") version = optional(string, "REDIS_6_X") }) default = {} nullable = false } variable "region" { description = "GCP Region." type = string }