-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvariables.tf
278 lines (221 loc) · 6.2 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
# VM instances
# vSphere cluster
variable "dns_servers" {
description = "DNS servers for VMs"
default = ["192.168.1.1"]
}
variable "domain" {
description = "Search DNS domain VMs are going to be attached to"
default = "localdomain"
}
variable "hv_enabled" {
description = "Enable nested hardware virtualization, required when using kata-containers"
default = false
}
variable "ip_gateway" {
description = "Gateway IP for the given network"
default = "192.168.1.1"
}
variable "ip_netmask" {
description = "Mask for the given network"
default = "24"
}
variable "master_cpus" {
description = "CPUs for master VMs to be created"
default = 1
}
variable "master_mem" {
description = "Memory in MBs for master VMs to be created"
default = 2048
}
variable "master_disk_size" {
# Defaults cannot contain interpolations ATM
# https://github.com/hashicorp/terraform/issues/14343
# default = "${module.vsphere.template_disk_size}"
description = "Disk size in GBs for master VMs to be created."
default = ""
}
variable "masters" {
description = "Key-value list containing master names and IPs"
type = "map"
}
# interpolation in source not supported yet
# see: https://github.com/hashicorp/terraform/issues/1439
# variable "ref" {default = "master"}
variable "vm_user" {
description = "User to connect to VMs over ssh"
}
variable "vm_password" {
description = "Password to connect to VMs over ssh"
}
variable "vm_template_name" {
description = "Template to use for VMs"
}
variable "vs_cluster_name" {
description = "vSphere cluster to deploy VMs to"
}
variable "vs_dc_name" {
description = "vSphere datacenter to deploy VMs to"
}
variable "vs_ds_name" {
description = "vSphere datastore to deploy VMs to"
}
variable "vs_hosts" {
description = "vSphere hosts list to deploy VMs to"
default = []
}
variable "vs_network_name" {
description = "vSphere network to attach VMs to"
default = "VM Network"
}
variable "vs_rp_name" {
description = "vSphere resource pool to deploy VMs to"
}
variable "vs_vm_folder" {
description = "vSphere folder to place VMs in"
}
variable "worker_cpus" {
description = "CPUs for worker VMs to be created"
default = 2
}
variable "worker_mem" {
description = "Memory in MBs for worker VMs to be created"
default = 4096
}
variable "worker_disk_size" {
# Defaults cannot contain interpolations ATM
# https://github.com/hashicorp/terraform/issues/14343
# default = "${module.vsphere.template_disk_size}"
description = "Disk size in GBs for worker VMs to be created."
default = ""
}
variable "workers" {
description = "Key-value list containing worker names and IPs"
type = "map"
}
locals {
disk_size = "${module.vsphere.template_disk_size}"
master_disk_size = "${var.master_disk_size != "" ? var.master_disk_size : local.disk_size}"
worker_disk_size = "${var.worker_disk_size != "" ? var.worker_disk_size : local.disk_size}"
}
# Kubernetes ansible vars
variable "kubernetes_version" {
description = "Kubernetes version to deploy on the cluster"
default = "stable"
}
variable "control_plane_port" {
description = "Port to bind the kubernetes API Server"
default = 6443
}
variable "api_server_certs_sans" {
default = "cluster.local"
}
variable "api_server_feature_gates" {
description = "API server feature gates to be enabled"
default = ""
}
variable "controller_manager_feature_gates" {
description = "Controller manager feature gates to be enabled"
default = ""
}
variable "kubelet_feature_gates" {
description = "Kubelet feature gates to be enabled"
default = ""
}
variable "scheduler_feature_gates" {
description = "Scheduler feature gates to be enabled"
default = ""
}
variable "cri_runtime" {
description = "Container runtime interface being used in kubernetes"
default = "containerd"
}
variable "network_plugin" {
description = "Network plugin to be used in kubernetes"
default = "calico"
}
variable "calico_etcd_ip" {
description = "Calico etcd IP to connect to"
default = "10.246.0.20"
}
variable "provider_enabled" {
description = "Enable vSphere cloud provider"
default = false
}
variable "use_hyperkube" {
description = "Use hyperkube for kubernetes deployment"
default = "false"
}
variable "image_repository" {
description = "Registry to pull control plane images from"
default = "k8s.gcr.io"
}
variable "cluster_name" {
description = "Kubernetes cluster name"
default = "k8sphere-cluster"
}
variable "cluster_cidr" {
description = "CIDR for kubernetes cluster"
default = "10.244.0.0/16"
}
variable "pod_subnet" {
description = "Subnet for kubernetes pods"
default = "10.245.0.0/24"
}
variable "service_subnet" {
description = "Subnet for kubernetes services"
default = "10.246.0.0/24"
}
variable "dns_domain" {
description = "DNS domain to be used within kubernetes"
default = "cluster.local"
}
variable "cluster_domain" {
description = "Cluster domain to be used within kubernetes"
default = "cluster.local"
}
# addons
variable "metallb_enabled" {
description = "Enable Metallb addon"
default = false
}
variable "metallb_ip_range" {
description = "IP range to be used by Metallb"
default = ""
}
variable "ingress_enabled" {
description = "Enable ingress controller"
default = false
}
variable "ingress_controller" {
default = "Ingress controller to deploy"
default = "traefik"
}
variable "ingress_controller_replicas" {
description = "Number of replicas for ingress controller"
default = 1
}
variable "acme_enabled" {
description = "Enable acme, in case traefik is deployed"
default = false
}
variable "acme_email" {
description = "Email to be used for issuing certs, in case traefik is deployed"
default = ""
}
variable "acme_dns" {
description = "DNS vendor to be used for issuing certs, in case traefik is deployed"
default = ""
}
variable "dashboard_enabled" {
description = "Deploy kubernetes dashboard"
default = false
}
variable "metrics_enabled" {
description = "Deploy metrics server"
default = false
}
variable "rook_enabled" {
description = "Deploy rook"
default = false
}