2022-01-17 23:58:14 -08:00
# Copyright 2022 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
#
# https://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.
2022-02-01 00:09:53 -08:00
# tfdoc:file:description Terraform Variables.
2022-01-31 21:41:33 -08:00
2022-01-17 23:58:14 -08:00
variable " composer_config " {
2022-02-12 06:52:32 -08:00
description = " Cloud Composer config. "
2022-01-17 23:58:14 -08:00
type = object ( {
2023-01-10 15:31:52 -08:00
disable_deployment = optional ( bool )
2023-01-12 03:41:00 -08:00
environment_size = optional ( string , " ENVIRONMENT_SIZE_SMALL " )
software_config = optional ( object ( {
2023-01-10 15:31:52 -08:00
airflow_config_overrides = optional ( any )
pypi_packages = optional ( any )
env_variables = optional ( map ( string ) )
image_version = string
2023-01-12 03:41:00 -08:00
} ) , {
image_version = " composer-2-airflow-2 "
2023-01-10 15:31:52 -08:00
} )
2023-01-12 03:41:00 -08:00
workloads_config = optional ( object ( {
scheduler = optional ( object (
2023-01-10 15:31:52 -08:00
{
cpu = number
memory_gb = number
storage_gb = number
count = number
}
2023-01-12 03:41:00 -08:00
) , {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
count = 1
} )
web_server = optional ( object (
2023-01-10 15:31:52 -08:00
{
cpu = number
memory_gb = number
storage_gb = number
}
2023-01-12 03:41:00 -08:00
) , {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
} )
worker = optional ( object (
2023-01-10 15:31:52 -08:00
{
cpu = number
memory_gb = number
storage_gb = number
min_count = number
max_count = number
}
2023-01-12 03:41:00 -08:00
) , {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
min_count = 1
max_count = 3
} )
} ) )
2022-02-07 08:51:06 -08:00
} )
default = {
2023-01-10 15:31:52 -08:00
environment_size = " ENVIRONMENT_SIZE_SMALL "
software_config = {
image_version = " composer-2-airflow-2 "
}
2023-01-12 03:41:00 -08:00
workloads_config = {
scheduler = {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
count = 1
}
web_server = {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
}
worker = {
cpu = 0 . 5
memory_gb = 1 . 875
storage_gb = 1
min_count = 1
max_count = 3
}
}
2022-01-17 23:58:14 -08:00
}
}
2022-03-29 03:06:45 -07:00
variable " data_catalog_tags " {
description = " List of Data Catalog Policy tags to be created with optional IAM binging configuration in {tag => {ROLE => [MEMBERS]}} format. "
type = map ( map ( list ( string ) ) )
nullable = false
default = {
2022-03-30 08:53:48 -07:00
" 3_Confidential " = null
" 2_Private " = null
" 1_Sensitive " = null
2022-03-29 03:06:45 -07:00
}
}
2022-01-17 23:58:14 -08:00
variable " data_force_destroy " {
2022-02-02 00:48:03 -08:00
description = " Flag to set 'force_destroy' on data services like BiguQery or Cloud Storage. "
2022-01-17 23:58:14 -08:00
type = bool
default = false
}
variable " groups " {
2022-02-12 06:52:32 -08:00
description = " User groups. "
2022-01-17 23:58:14 -08:00
type = map ( string )
default = {
2022-01-31 08:11:06 -08:00
data - analysts = " gcp-data-analysts "
data - engineers = " gcp-data-engineers "
data - security = " gcp-data-security "
2022-01-17 23:58:14 -08:00
}
}
2022-10-20 09:56:54 -07:00
variable " location " {
description = " Location used for multi-regional resources. "
type = string
default = " eu "
}
2022-01-17 23:58:14 -08:00
variable " network_config " {
2022-02-07 12:28:54 -08:00
description = " Shared VPC network configurations to use. If null networks will be created in projects with preconfigured values. "
2022-01-17 23:58:14 -08:00
type = object ( {
2022-02-09 08:01:25 -08:00
host_project = string
2022-02-07 08:51:06 -08:00
network_self_link = string
subnet_self_links = object ( {
2022-02-03 05:25:46 -08:00
load = string
transformation = string
orchestration = string
} )
2022-02-07 08:51:06 -08:00
composer_ip_ranges = object ( {
cloudsql = string
gke_master = string
} )
composer_secondary_ranges = object ( {
pods = string
services = string
} )
2022-02-18 10:17:58 -08:00
# web_server_network_access_control = list(string)
2022-01-17 23:58:14 -08:00
} )
2022-02-09 08:01:25 -08:00
default = null
2022-01-17 23:58:14 -08:00
}
2022-02-09 08:01:25 -08:00
variable " organization_domain " {
description = " Organization domain. "
type = string
2022-01-17 23:58:14 -08:00
}
variable " prefix " {
2022-11-23 02:09:00 -08:00
description = " Prefix used for resource names. "
2022-01-17 23:58:14 -08:00
type = string
2022-11-23 02:09:00 -08:00
validation {
condition = var . prefix ! = " "
error_message = " Prefix cannot be empty. "
}
2022-01-17 23:58:14 -08:00
}
2023-02-19 13:37:32 -08:00
variable " project_config " {
description = " Provide 'billing_account_id' value if project creation is needed, uses existing 'project_ids' if null. Parent is in 'folders/nnn' or 'organizations/nnn' format. "
type = object ( {
billing_account_id = optional ( string , null )
2023-02-19 15:39:37 -08:00
parent = string
2023-02-19 13:37:32 -08:00
project_ids = optional ( object ( {
drop = string
load = string
orc = string
trf = string
dwh - lnd = string
dwh - cur = string
dwh - conf = string
common = string
exp = string
} ) , {
drop = " drp "
load = " lod "
orc = " orc "
trf = " trf "
dwh - lnd = " dwh-lnd "
dwh - cur = " dwh-cur "
dwh - conf = " dwh-conf "
common = " cmn "
exp = " exp "
}
)
} )
validation {
condition = var . project_config . billing_account_id ! = null | | var . project_config . project_ids ! = null
error_message = " At least one attribute should be set. "
}
}
2022-01-17 23:58:14 -08:00
variable " project_services " {
2022-01-31 09:58:55 -08:00
description = " List of core services enabled on all projects. "
type = list ( string )
2022-01-17 23:58:14 -08:00
default = [
" cloudresourcemanager.googleapis.com " ,
" iam.googleapis.com " ,
" serviceusage.googleapis.com " ,
" stackdriver.googleapis.com "
]
}
2022-02-18 05:39:04 -08:00
variable " project_suffix " {
description = " Suffix used only for project ids. "
type = string
default = null
}
2022-02-09 08:01:25 -08:00
variable " region " {
description = " Region used for regional resources. "
type = string
default = " europe-west1 "
2022-01-31 08:11:06 -08:00
}
2022-09-08 12:23:48 -07:00
variable " service_encryption_keys " {
2022-01-31 08:11:06 -08:00
description = " Cloud KMS to use to encrypt different services. Key location should match service region. "
type = object ( {
bq = string
composer = string
dataflow = string
storage = string
pubsub = string
} )
default = null
2022-01-17 23:58:14 -08:00
}