4-projects/modules/ml_infra_projects/variables.tf (171 lines of code) (raw):
/**
* 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 "org_id" {
description = "The Organization ID."
type = string
}
variable "billing_account" {
description = "The ID of the billing account to associated this project with."
type = string
}
variable "folder_id" {
description = "The folder id where project will be created."
type = string
}
variable "environment" {
description = "The environment the single project belongs to."
type = string
}
variable "project_budget" {
description = <<EOT
Budget configuration.
budget_amount: The amount to use as the budget.
alert_spent_percents: A list of percentages of the budget to alert on when threshold is exceeded.
alert_pubsub_topic: The name of the Cloud Pub/Sub topic where budget related messages will be published, in the form of `projects/{project_id}/topics/{topic_id}`.
alert_spend_basis: The type of basis used to determine if spend has passed the threshold. Possible choices are `CURRENT_SPEND` or `FORECASTED_SPEND` (default).
EOT
type = object({
budget_amount = optional(number, 1000)
alert_spent_percents = optional(list(number), [1.2])
alert_pubsub_topic = optional(string, null)
alert_spend_basis = optional(string, "FORECASTED_SPEND")
})
default = {}
}
variable "project_prefix" {
description = "Name prefix to use for projects created."
type = string
default = "prj"
}
variable "key_rings" {
description = "Keyrings to attach project key to."
type = list(string)
}
variable "remote_state_bucket" {
description = "Backend bucket to load Terraform Remote State Data from previous steps."
type = string
}
variable "business_code" {
description = "The code that describes which business unit owns the project."
type = string
}
variable "billing_code" {
description = "The code that's used to provide chargeback information."
type = string
}
variable "primary_contact" {
description = "The primary email contact for the project."
type = string
}
variable "secondary_contact" {
description = "The secondary email contact for the project."
type = string
default = ""
}
variable "shared_vpc_host_project_id" {
description = "Shared VPC host project ID."
type = string
default = ""
}
variable "shared_vpc_subnets" {
description = "List of the shared vpc subnets self links."
type = list(string)
default = []
}
variable "vpc_service_control_attach_enabled" {
description = "Whether the project will be attached to a VPC Service Control Perimeter."
type = bool
default = false
}
variable "vpc_service_control_perimeter_name" {
description = "The name of a VPC Service Control Perimeter to add the created project to."
type = string
default = null
}
variable "vpc_service_control_sleep_duration" {
description = "The duration to sleep in seconds before adding the project to a shared VPC after the project is added to the VPC Service Control Perimeter."
type = string
default = "5s"
}
variable "app_infra_pipeline_service_accounts" {
description = "The Service Accounts from App Infra Pipeline."
type = map(string)
default = {}
}
variable "sa_roles" {
description = "A list of roles to give the Service Account from App Infra Pipeline."
type = map(list(string))
default = {}
}
variable "enable_cloudbuild_deploy" {
description = "Enable infra deployment using Cloud Build."
type = bool
default = false
}
variable "key_rotation_period" {
description = "Rotation period in seconds to be used for KMS Key."
type = string
default = "7776000s"
}
variable "default_service_account" {
description = "Project default service account setting: can be one of `delete`, `depriviledge`, `keep` or `disable`."
default = "disable"
type = string
}
variable "cloud_source_service_catalog_repo_name" {
description = "Name to give the cloud source repository for Service Catalog."
type = string
}
variable "cloud_source_artifacts_repo_name" {
description = "Name to give the could source repository for Artifacts."
type = string
}
variable "artifacts_infra_pipeline_sa" {
description = "Artifacts SA to be used by the Infra Pipeline CloudBuild trigger."
type = string
}
variable "service_catalog_infra_pipeline_sa" {
description = "Service Catalog SA to be used by the Infra Pipeline CloudBuild trigger."
type = string
}
variable "environment_kms_project_id" {
description = "Environment level KMS Project ID."
type = string
}
variable "prevent_destroy" {
description = "Prevent Project Key destruction."
type = bool
}
variable "artifacts_project_suffix" {
description = "Artifacts Project Suffix."
type = string
default = "artifacts"
}
variable "service_catalog_project_suffix" {
description = "Service Catalog Project Suffix."
type = string
default = "service-catalog"
}
variable "service_catalog_application_name" {
description = "Service Catalog application name metadata."
type = string
default = "app-infra-catalog"
}
variable "artifacts_application_name" {
description = "Artifacts application name metadata."
type = string
default = "app-infra-artifacts"
}