2021-10-07 09:20:07 -07:00
/ * *
2023-10-05 08:31:07 -07:00
* Copyright 2023 Google LLC
2021-10-07 09:20:07 -07:00
*
* 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 .
* /
2023-08-25 03:12:08 -07:00
variable " activation_policy " {
description = " This variable specifies when the instance should be active. Can be either ALWAYS, NEVER or ON_DEMAND. Default is ALWAYS. "
type = string
default = " ALWAYS "
validation {
condition = var . activation_policy == " NEVER " | | var . activation_policy == " ON_DEMAND " | | var . activation_policy == " ALWAYS "
error_message = " The variable activation_policy must be ALWAYS, NEVER or ON_DEMAND. "
}
nullable = false
}
2021-10-07 09:20:07 -07:00
variable " availability_type " {
2022-01-31 01:45:34 -08:00
description = " Availability type for the primary replica. Either `ZONAL` or `REGIONAL`. "
2021-10-07 09:20:07 -07:00
type = string
default = " ZONAL "
}
variable " backup_configuration " {
2022-01-31 01:45:34 -08:00
description = " Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas. "
2023-02-08 04:26:21 -08:00
nullable = false
2021-10-07 09:20:07 -07:00
type = object ( {
2023-02-08 04:26:21 -08:00
enabled = optional ( bool , false )
binary_log_enabled = optional ( bool , false )
start_time = optional ( string , " 23:00 " )
2023-02-07 04:58:55 -08:00
location = optional ( string )
2023-02-08 04:26:21 -08:00
log_retention_days = optional ( number , 7 )
2023-02-07 04:58:55 -08:00
point_in_time_recovery_enabled = optional ( bool )
2023-02-08 04:26:21 -08:00
retention_count = optional ( number , 7 )
2021-10-07 09:20:07 -07:00
} )
default = {
2023-02-07 04:52:44 -08:00
enabled = false
binary_log_enabled = false
start_time = " 23:00 "
location = null
log_retention_days = 7
point_in_time_recovery_enabled = null
retention_count = 7
2021-10-18 05:33:19 -07:00
}
}
2023-11-20 13:27:59 -08:00
variable " collation " {
description = " The name of server instance collation. "
type = string
default = null
}
variable " connector_enforcement " {
description = " Specifies if connections must use Cloud SQL connectors. "
type = string
default = null
}
2021-10-07 09:20:07 -07:00
variable " database_version " {
description = " Database type and version to create. "
type = string
}
variable " databases " {
description = " Databases to create once the primary instance is created. "
type = list ( string )
default = null
}
2021-10-07 09:25:49 -07:00
variable " deletion_protection " {
2023-10-05 08:31:07 -07:00
description = " Prevent terraform from deleting instances. "
2021-10-08 09:26:04 -07:00
type = bool
2023-10-05 08:31:07 -07:00
default = true
nullable = false
2021-10-07 09:25:49 -07:00
}
2023-09-20 06:09:38 -07:00
variable " deletion_protection_enabled " {
description = " Set Google's deletion protection attribute which applies across all surfaces (UI, API, & Terraform). "
type = bool
2023-10-05 08:31:07 -07:00
default = true
nullable = false
2023-09-20 06:09:38 -07:00
}
2023-11-20 13:27:59 -08:00
variable " disk_autoresize_limit " {
description = " The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. "
type = number
default = 0
}
2021-10-07 09:20:07 -07:00
variable " disk_size " {
description = " Disk size in GB. Set to null to enable autoresize. "
type = number
default = null
}
variable " disk_type " {
description = " The type of data disk: `PD_SSD` or `PD_HDD`. "
type = string
default = " PD_SSD "
}
2023-11-20 13:27:59 -08:00
variable " edition " {
description = " The edition of the instance, can be ENTERPRISE or ENTERPRISE_PLUS. "
type = string
default = " ENTERPRISE "
}
2022-04-12 10:01:34 -07:00
variable " encryption_key_name " {
2022-04-12 15:22:54 -07:00
description = " The full path to the encryption key used for the CMEK disk encryption of the primary instance. "
2022-04-12 10:01:34 -07:00
type = string
default = null
}
2021-10-07 09:20:07 -07:00
variable " flags " {
description = " Map FLAG_NAME=>VALUE for database-specific tuning. "
type = map ( string )
default = null
}
2023-07-21 11:14:34 -07:00
variable " insights_config " {
description = " Query Insights configuration. Defaults to null which disables Query Insights. "
type = object ( {
query_string_length = optional ( number , 1024 )
record_application_tags = optional ( bool , false )
record_client_address = optional ( bool , false )
query_plans_per_minute = optional ( number , 5 )
} )
default = null
}
2021-10-07 09:20:07 -07:00
variable " labels " {
description = " Labels to be attached to all instances. "
type = map ( string )
default = null
}
2023-12-11 08:59:00 -08:00
variable " maintenance_config " {
description = " Set maintenance window configuration and maintenance deny period (up to 90 days). Date format: 'yyyy-mm-dd'. "
type = object ( {
maintenance_window = optional ( object ( {
day = number
hour = number
update_track = optional ( string , null )
} ) , null )
deny_maintenance_period = optional ( object ( {
start_date = string
end_date = string
start_time = optional ( string , " 00:00:00 " )
} ) , null )
} )
default = { }
validation {
condition = (
var . maintenance_config . maintenance_window == null ? true : (
# Maintenance window day validation below
var . maintenance_config . maintenance_window . day > = 1 &&
var . maintenance_config . maintenance_window . day < = 7 &&
# Maintenance window hour validation below
var . maintenance_config . maintenance_window . hour > = 0 &&
var . maintenance_config . maintenance_window . hour < = 23 &&
# Maintenance window update_track validation below
var . maintenance_config . maintenance_window . update_track == null ? true :
contains ( [ " canary " , " stable " ] , var . maintenance_config . maintenance_window . update_track )
)
)
error_message = " Maintenance window day must be between 1 and 7, maintenance window hour must be between 0 and 23 and maintenance window update_track must be 'stable' or 'canary'. "
}
}
2021-10-07 09:20:07 -07:00
variable " name " {
2022-04-12 15:22:54 -07:00
description = " Name of primary instance. "
2021-10-07 09:20:07 -07:00
type = string
}
2023-11-24 06:47:45 -08:00
variable " network_config " {
description = " Network configuration for the instance. Only one between private_network and psc_config can be used. "
type = object ( {
authorized_networks = optional ( map ( string ) )
require_ssl = optional ( bool )
connectivity = object ( {
public_ipv4 = optional ( bool , false )
psa_config = optional ( object ( {
private_network = string
allocated_ip_ranges = optional ( object ( {
primary = optional ( string )
replica = optional ( string )
} ) )
} ) )
psc_allowed_consumer_projects = optional ( list ( string ) )
} )
} )
validation {
condition = ( var . network_config . connectivity . psa_config ! = null ? 1 : 0 ) + ( var . network_config . connectivity . psc_allowed_consumer_projects ! = null ? 1 : 0 ) < 2
error_message = " Only one between private network and psc can be specified. "
}
2021-10-07 09:20:07 -07:00
}
2022-12-12 08:14:44 -08:00
variable " postgres_client_certificates " {
description = " Map of cert keys connect to the application(s) using public IP. "
type = list ( string )
default = null
}
2021-10-07 09:20:07 -07:00
variable " prefix " {
2022-11-10 07:05:53 -08:00
description = " Optional prefix used to generate instance names. "
2021-10-07 09:20:07 -07:00
type = string
default = null
2022-11-10 07:05:53 -08:00
validation {
2022-11-10 07:11:38 -08:00
condition = var . prefix ! = " "
2022-11-11 03:56:47 -08:00
error_message = " Prefix cannot be empty, please use null instead. "
2022-11-10 07:05:53 -08:00
}
2021-10-07 09:20:07 -07:00
}
variable " project_id " {
description = " The ID of the project where this instances will be created. "
type = string
}
variable " region " {
2022-04-12 15:22:54 -07:00
description = " Region of the primary instance. "
2021-10-07 09:20:07 -07:00
type = string
}
variable " replicas " {
2022-04-12 10:01:34 -07:00
description = " Map of NAME=> {REGION, KMS_KEY} for additional read replicas. Set to null to disable replica creation. "
type = map ( object ( {
region = string
encryption_key_name = string
} ) )
default = { }
2021-10-07 09:20:07 -07:00
}
2022-09-29 03:57:19 -07:00
variable " root_password " {
2022-11-24 09:56:01 -08:00
description = " Root password of the Cloud SQL instance. Required for MS SQL Server. "
2022-09-29 03:57:19 -07:00
type = string
default = null
}
2021-10-08 09:26:04 -07:00
variable " tier " {
description = " The machine type to use for the instances. "
type = string
}
2021-10-07 09:20:07 -07:00
variable " users " {
2023-12-11 08:59:00 -08:00
description = " Map of users to create in the primary instance (and replicated to other replicas). For MySQL, anything after the first `@` (if present) will be used as the user's host. Set PASSWORD to null if you want to get an autogenerated password. The user types available are: 'BUILT_IN', 'CLOUD_IAM_USER' or 'CLOUD_IAM_SERVICE_ACCOUNT'. "
2023-11-13 01:27:14 -08:00
type = map ( object ( {
password = optional ( string )
type = optional ( string )
} ) )
default = null
2021-10-07 09:20:07 -07:00
}