140 lines
4.1 KiB
Terraform
140 lines
4.1 KiB
Terraform
|
/**
|
||
|
* 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
|
||
|
}
|