cloud-foundation-fabric/blueprints/third-party-solutions/gitlab/variables.tf

140 lines
4.1 KiB
HCL

/**
* 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
}