-
Notifications
You must be signed in to change notification settings - Fork 2
/
variables.tf
169 lines (141 loc) · 4.83 KB
/
variables.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
* Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not
* use this file except in compliance with the License. A copy of the License is
* located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "LICENSE.txt" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or
* implied. See the License for the specific language governing permissions and
* limitations under the License.
*
*/
####################
## REQUIRED INFRA ##
####################
variable "deploy_required_infra" {
type = bool
description = "If set to true deploys infrastructure required for clusters."
default = false
}
## GENERAL ###############
variable "prefix" {
type = string
description = "String to prefix to resource names."
default = "pcluster"
}
## VPCs ##################
variable "vpc_cidr_block" {
type = string
description = "The cidr block of the vpc the cluster nodes will be created in. The public and private subnet cidr blocks should fall within this block."
default = "10.0.0.0/16"
}
## SUBNETs ###############
variable "public_subnet_cidrs" {
type = list(any)
description = "List of cidr blocks to be used for public subnets. Has to be in the vpc cidr block. Cannot conflict with private subnets."
default = ["10.0.1.0/24"]
}
variable "private_subnet_cidrs" {
type = list(any)
description = "List of cidr blocks to be used for private subnets. Has to be in the vpc cidr block. Cannot conflict with public subnets."
default = ["10.0.2.0/24"]
}
variable "public_subnet_az" {
type = string
description = "The availability zone to create the public subnets in."
default = "us-east-1a"
}
variable "private_subnet_az" {
type = string
description = "The availability zone to create the private subnets in."
default = "us-east-1a"
}
####################
## PCLUSTER API ####
####################
variable "deploy_pcluster_api" {
type = string
description = "If set to true deploys the ParallelCluster API CloudFormation template."
default = false
}
variable "region" {
type = string
description = "Region to deploy the ParallelCluster API CloudFormation templates."
default = "us-east-1"
}
variable "api_stack_name" {
type = string
description = "Name of the ParallelCluster API CloudFormation stack."
default = "ParallelCluster"
}
variable "api_version" {
type = string
description = "Version of ParallelCluster API to deploy."
}
variable "custom_pcluster_template_uri" {
type = string
description = "Custom CloudFormation ParallelCluster template URI."
default = ""
}
variable "parameters" {
type = map(any)
description = "Map of parameters to pass to the ParallelCluster API CloudFormation template. Refer to the ParallelCluster documentation to see available parameters."
default = {}
}
####################
## CLUSTER #########
####################
variable "config_path" {
type = string
description = "A path to a json or yaml file containing cluster configurations"
default = ""
validation {
condition = var.config_path == "" || try(fileexists(var.config_path), true)
error_message = "No file exists at ${var.config_path}."
}
validation {
condition = can(tostring(var.config_path))
error_message = "config_path must be a string."
}
}
variable "yaml_configs" {
type = string
description = "An object containing a list of clusters to deploy."
default = "{}"
validation {
condition = alltrue([for k, v in yamldecode(var.yaml_configs) : can(v.configuration)])
error_message = "Cluster definitions must be valid yaml and each cluster must contain a configuration."
}
}
variable "json_configs" {
type = string
description = "An object containing a list of clusters to deploy."
default = "{}"
validation {
condition = alltrue([for k, v in jsondecode(var.json_configs) : can(v.configuration)])
error_message = "Cluster definitions must be valid json and each cluster must contain a configuration."
}
}
variable "template_vars" {
type = map(any)
description = "If a cluster configuration is passed as a template file use these vars for interpolation."
default = {}
}
variable "cluster_configs" {
type = any
description = "An object containing a list of clusters to deploy."
default = {}
validation {
condition = alltrue(
[
for k, v in var.cluster_configs :
can(var.cluster_configs[k].configuration) && var.cluster_configs[k].configuration != null
]
)
error_message = "All cluster definitions must contain a configuration."
}
}