-
Notifications
You must be signed in to change notification settings - Fork 1
/
variables.tf
336 lines (279 loc) · 9.98 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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
# required variables
variable "ado_org" {
type = string
description = "Azure DevOps Organization name"
}
variable "ado_project" {
type = string
description = "Azure DevOps project name where service connection exists and optionally where pool will only be created"
}
variable "ado_service_connection" {
type = string
description = "Azure DevOps azure service connection name"
}
variable "vmss_resource_group_name" {
type = string
description = "Existing resource group name of where the VMSS will be created"
}
variable "vmss_subnet_id" {
type = string
description = "Existing subnet ID of where the VMSS will be connected"
}
# variables with predefined defaults
variable "ado_dirty" {
type = bool
description = "Azure DevOps pool settings are dirty"
default = false
}
variable "ado_pool_auth_all_pipelines" {
type = string
description = "Setting to determine if all pipelines are authorized to use this TaskAgentPool by default (at create only)"
default = "True"
validation {
condition = contains(["True", "False"], var.ado_pool_auth_all_pipelines)
error_message = "The ado_pool_auth_all_pipelines variable must be True or False."
}
}
variable "ado_pool_desired_idle" {
type = number
description = "Number of machines to have ready waiting for jobs"
default = 0
}
variable "ado_pool_desired_size" {
type = number
description = "The desired size of the pool"
default = 0
}
variable "ado_pool_max_capacity" {
type = number
description = "Maximum number of machines that will exist in the elastic pool"
default = 2
}
variable "ado_pool_max_saved_node_count" {
type = number
description = "Keep machines in the pool on failure for investigation"
default = 0
}
variable "ado_pool_name" {
type = string
description = "Azure DevOps agent pool name"
default = "azdo-vmss-pool-001"
}
variable "ado_pool_os_type" {
type = string
description = "Operating system type of the nodes in the pool"
default = "linux"
validation {
condition = contains(["linux", "windows"], var.ado_pool_os_type)
error_message = "The ado_pool_os_type variable must be linux or windows."
}
}
variable "ado_pool_recycle_after_use" {
type = bool
description = "Discard machines after each job completes"
default = false
}
variable "ado_pool_sizing_attempts" {
type = number
description = "The number of sizing attempts executed while trying to achieve a desired size"
default = 0
}
variable "ado_pool_ttl_mins" {
type = number
description = "The minimum time in minutes to keep idle agents alive"
default = 15
}
variable "ado_pool_auto_provision_projects" {
type = string
description = "Setting to automatically provision TaskAgentQueues in every project for the new pool (at create only)"
default = "True"
validation {
condition = contains(["True", "False"], var.ado_pool_auto_provision_projects)
error_message = "The ado_pool_auto_provision_projects variable must be True or False."
}
}
variable "ado_project_only" {
type = string
description = "Only create the agent pool in the Azure DevOps pool specified? (at create only)"
default = "False"
validation {
condition = contains(["True", "False"], var.ado_project_only)
error_message = "The ado_project_only variable must be True or False."
}
}
variable "tags" {
description = "Tags to apply to Azure Virtual Machine Scale"
type = map(string)
default = {}
}
variable "vmss_admin_password" {
type = string
description = "Azure Virtual Machine Scale Set instance administrator password"
default = null
}
variable "vmss_admin_username" {
type = string
description = "Azure Virtual Machine Scale Set instance administrator name"
default = "adminuser"
}
variable "vmss_custom_data_data" {
type = string
description = "The base64 encoded data to use as custom data for the VMSS instances"
default = null
}
variable "vmss_custom_data_script" {
type = string
description = "The path to the script that will be base64 encoded custom data for the VMSS instances"
default = "scripts/cloud-init/cloud-init"
}
variable "vmss_data_disks" {
type = list(object({
caching = string
create_option = string
disk_size_gb = string
lun = number
storage_account_type = string
}))
description = "Additional data disks"
default = []
}
variable "vmss_disk_size_gb" {
type = number
description = "The Size of the Internal OS Disk in GB, if you wish to vary from the size used in the image this Virtual Machine Scale Set is sourced from"
default = null
}
# needs to be enabled on the subscription, see:
# Use the Azure CLI to enable end-to-end encryption using encryption at host
# https://docs.microsoft.com/en-us/azure/virtual-machines/linux/disks-enable-host-based-encryption-cli
variable "vmss_encryption_at_host_enabled" {
type = bool
description = "Should all of the disks (including the temp disk) attached to this Virtual Machine be encrypted by enabling Encryption at Host?"
default = false
}
variable "vmss_identity_ids" {
type = list(string)
description = "Specifies a list of User Assigned Managed Identity IDs to be assigned to this Linux Virtual Machine Scale Set"
default = null
}
variable "vmss_identity_type" {
type = string
description = "Specifies the type of Managed Service Identity that should be configured on this Linux Virtual Machine Scale Set`"
default = null
validation {
condition = var.vmss_identity_type != null ? alltrue([for v in split(",", var.vmss_identity_type) : contains(["SystemAssigned", "UserAssigned"], trimspace(v))]) : true
error_message = "The vmss_identity_type must be a valid type."
}
}
variable "vmss_instances" {
type = number
description = "Azure Virtual Machine Scale Set number of instances"
default = 0
}
variable "vmss_load_balancer_backend_address_pool_ids" {
type = list(string)
description = "A list of Backend Address Pools IDs from a Load Balancer which this Virtual Machine Scale Set should be connected to"
default = null
}
variable "vmss_location" {
type = string
description = "Existing resource group name of where the VMSS will be created"
default = "uksouth"
}
variable "vmss_name" {
type = string
description = "Azure Virtual Machine Scale Set name"
default = "azdo-vmss-pool-001"
}
variable "vmss_os" {
type = string
description = "Whether to process the Linux Virtual Machine Scale Set resource"
default = "linux"
}
variable "vmss_os_disk_caching" {
type = string
description = "The Type of Caching which should be used for the Internal OS Disk"
default = "ReadOnly"
validation {
condition = contains(["None", "ReadOnly", "ReadWrite"], var.vmss_os_disk_caching)
error_message = "The vmss_os_disk_caching must be a valid type."
}
}
variable "vmss_os_disk_storage_account_type" {
type = string
description = "The Type of Storage Account which should back this the Internal OS Disk"
default = "StandardSSD_LRS"
validation {
condition = contains(["Standard_LRS", "StandardSSD_LRS", "Premium_LRS"], var.vmss_os_disk_storage_account_type)
error_message = "The vmss_os_disk_storage_account_type must be a valid type."
}
}
variable "vmss_resource_prefix" {
type = string
description = "Prefix to apply to VMSS resources"
default = "vmss"
}
variable "vmss_se_enabled" {
type = bool
description = "Whether to process the Linux Virtual Machine Scale Set extension resource"
default = false
}
variable "vmss_se_settings_data" {
type = string
description = "The base64 encoded data to use as the script for the VMSS custom script extension"
default = null
}
variable "vmss_se_settings_script" {
type = string
description = "The path of the file to use as the script for the VMSS custom script extension"
default = "scripts/vmss-startup.sh"
}
variable "vmss_source_image_id" {
description = "Azure Virtual Machine Scale Set Image ID"
type = string
default = null
}
variable "vmss_source_image_offer" {
description = "Azure Virtual Machine Scale Set Source Image Offer"
type = string
default = "0001-com-ubuntu-server-focal"
}
variable "vmss_source_image_publisher" {
description = "Azure Virtual Machine Scale Set Source Image Publisher"
type = string
default = "Canonical"
}
variable "vmss_source_image_sku" {
description = "Azure Virtual Machine Scale Set Source Image SKU"
type = string
default = "20_04-lts"
}
variable "vmss_source_image_version" {
description = "Azure Virtual Machine Scale Set Source Image Version"
type = string
default = "latest"
}
variable "vmss_sku" {
type = string
description = "Azure Virtual Machine Scale Set SKU"
default = "Standard_B2s"
}
variable "vmss_ssh_public_key" {
description = "Public key to use for SSH access to VMs"
type = string
default = ""
}
variable "vmss_storage_account_uri" {
type = string
description = "VMSS boot diagnostics storage account URI"
default = null
}
variable "vmss_user_data" {
description = "The base64 encoded data to use as user data for the VMSS instances"
type = string
default = null
}
variable "vmss_zones" {
type = list(string)
description = "A collection of availability zones to spread the Virtual Machines over"
default = []
}