Skip to content

Commit 63cb495

Browse files
jubradclaude
andcommitted
Add generated Terraform variable types and override support
Generated type definitions: - kubernetes/modules/materialize-instance/crd_variables.gen.tf - {aws,azure,gcp}/modules/operator/helm_variables.gen.tf - {aws,azure,gcp}/examples/simple/override_variables.gen.tf Additional changes: - Add helm_values_override and materialize_spec_override variables to operator modules and examples for full customization - Add deprecated force_rollout and request_rollout variables to examples for backwards compatibility, merged into materialize_spec_override - Update materialize-instance module to use the new override variable 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent cf7cf6d commit 63cb495

19 files changed

Lines changed: 1459 additions & 120 deletions

File tree

aws/examples/simple/main.tf

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ module "operator" {
257257
# node selector for operator and metrics-server workloads
258258
operator_node_selector = local.generic_node_labels
259259

260+
# Pass through any additional Helm values for full customization
261+
# See https://materialize.com/docs/installation/configuration/
262+
helm_values = var.helm_values_override
260263

261264
depends_on = [
262265
module.eks,
@@ -327,11 +330,7 @@ module "materialize_instance" {
327330
metadata_backend_url = local.metadata_backend_url
328331
persist_backend_url = local.persist_backend_url
329332

330-
# Rollout configuration
331-
force_rollout = var.force_rollout
332-
request_rollout = var.request_rollout
333-
334-
# The password for the external login to the Materialize instance
333+
# Password authentication for the Materialize instance
335334
external_login_password_mz_system = random_password.external_login_password_mz_system.result
336335
authenticator_kind = "Password"
337336

@@ -347,6 +346,15 @@ module "materialize_instance" {
347346
kind = "ClusterIssuer"
348347
}
349348

349+
# Pass through any additional CRD spec fields for full customization
350+
# See https://materialize.com/docs/installation/appendix-materialize-crd-field-descriptions/
351+
# Merge deprecated variables with the override variable
352+
materialize_spec_override = merge(
353+
var.materialize_spec_override,
354+
var.force_rollout != null ? { forceRollout = var.force_rollout } : {},
355+
var.request_rollout != null ? { requestRollout = var.request_rollout } : {},
356+
)
357+
350358
depends_on = [
351359
module.eks,
352360
module.database,
Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
# Auto-generated by scripts/generate_terraform_types.py - DO NOT EDIT MANUALLY
2+
3+
variable "helm_values_override" {
4+
description = "Override any Helm chart values for the Materialize operator. This is deep-merged with the module's default values.\n\nSee https://materialize.com/docs/installation/configuration/ for all available options."
5+
type = object({
6+
balancerd = optional(object({
7+
affinity = optional(any)
8+
defaultResources = optional(any)
9+
enabled = optional(bool)
10+
nodeSelector = optional(any)
11+
tolerations = optional(any)
12+
}))
13+
clusterd = optional(object({
14+
affinity = optional(any)
15+
nodeSelector = optional(any)
16+
scratchfsNodeSelector = optional(any)
17+
swapNodeSelector = optional(any)
18+
tolerations = optional(any)
19+
}))
20+
console = optional(object({
21+
affinity = optional(any)
22+
defaultResources = optional(any)
23+
enabled = optional(bool)
24+
imageTagMapOverride = optional(any)
25+
nodeSelector = optional(any)
26+
tolerations = optional(any)
27+
}))
28+
environmentd = optional(object({
29+
affinity = optional(any)
30+
defaultResources = optional(any)
31+
nodeSelector = optional(any)
32+
tolerations = optional(any)
33+
}))
34+
networkPolicies = optional(object({
35+
egress = optional(any)
36+
enabled = optional(bool)
37+
ingress = optional(any)
38+
internal = optional(any)
39+
}))
40+
observability = optional(object({
41+
enabled = optional(bool)
42+
podMetrics = optional(object({
43+
enabled = optional(bool)
44+
}))
45+
prometheus = optional(object({
46+
scrapeAnnotations = optional(object({
47+
enabled = optional(bool)
48+
}))
49+
}))
50+
}))
51+
operator = optional(object({
52+
additionalMaterializeCRDColumns = optional(any)
53+
affinity = optional(any)
54+
args = optional(object({
55+
enableInternalStatementLogging = optional(bool)
56+
enableLicenseKeyChecks = optional(bool)
57+
startupLogFilter = optional(any)
58+
}))
59+
cloudProvider = optional(object({
60+
providers = optional(object({
61+
aws = optional(object({
62+
accountID = optional(any)
63+
enabled = optional(bool)
64+
iam = optional(object({
65+
roles = optional(object({
66+
connection = optional(any)
67+
environment = optional(any)
68+
}))
69+
}))
70+
}))
71+
gcp = optional(any)
72+
}))
73+
region = optional(any)
74+
type = optional(any)
75+
}))
76+
clusters = optional(object({
77+
defaultReplicationFactor = optional(object({
78+
analytics = optional(number)
79+
probe = optional(number)
80+
support = optional(number)
81+
system = optional(number)
82+
}))
83+
defaultSizes = optional(object({
84+
analytics = optional(any)
85+
catalogServer = optional(any)
86+
default = optional(any)
87+
probe = optional(any)
88+
support = optional(any)
89+
system = optional(any)
90+
}))
91+
swap_enabled = optional(bool)
92+
}))
93+
image = optional(object({
94+
pullPolicy = optional(any)
95+
repository = optional(any)
96+
tag = optional(any)
97+
}))
98+
nodeSelector = optional(any)
99+
resources = optional(object({
100+
limits = optional(any)
101+
requests = optional(any)
102+
}))
103+
secretsController = optional(any)
104+
tolerations = optional(any)
105+
}))
106+
rbac = optional(object({
107+
create = optional(bool)
108+
}))
109+
schedulerName = optional(any)
110+
serviceAccount = optional(object({
111+
create = optional(bool)
112+
name = optional(any)
113+
}))
114+
storage = optional(object({
115+
storageClass = optional(object({
116+
allowVolumeExpansion = optional(bool)
117+
create = optional(bool)
118+
name = optional(any)
119+
parameters = optional(any)
120+
provisioner = optional(any)
121+
reclaimPolicy = optional(any)
122+
volumeBindingMode = optional(any)
123+
}))
124+
}))
125+
telemetry = optional(object({
126+
enabled = optional(bool)
127+
segmentApiKey = optional(any)
128+
segmentClientSide = optional(bool)
129+
}))
130+
tls = optional(object({
131+
defaultCertificateSpecs = optional(any)
132+
}))
133+
})
134+
default = {}
135+
nullable = false
136+
}
137+
138+
variable "materialize_spec_override" {
139+
description = "Override any field in the Materialize CRD spec. This is deep-merged with the module's default spec.\n\nSee https://materialize.com/docs/installation/appendix-materialize-crd-field-descriptions/ for all available fields."
140+
type = object({
141+
environmentdImageRef = optional(string)
142+
authenticatorKind = optional(string)
143+
balancerdExternalCertificateSpec = optional(object({
144+
dnsNames = optional(list(string))
145+
duration = optional(string)
146+
issuerRef = optional(object({
147+
name = string
148+
group = optional(string)
149+
kind = optional(string)
150+
}))
151+
renewBefore = optional(string)
152+
secretTemplate = optional(object({
153+
annotations = optional(map(string))
154+
labels = optional(map(string))
155+
}))
156+
}))
157+
balancerdReplicas = optional(number)
158+
balancerdResourceRequirements = optional(object({
159+
claims = optional(list(object({
160+
name = string
161+
request = optional(string)
162+
})))
163+
limits = optional(map(string))
164+
requests = optional(map(string))
165+
}))
166+
consoleExternalCertificateSpec = optional(object({
167+
dnsNames = optional(list(string))
168+
duration = optional(string)
169+
issuerRef = optional(object({
170+
name = string
171+
group = optional(string)
172+
kind = optional(string)
173+
}))
174+
renewBefore = optional(string)
175+
secretTemplate = optional(object({
176+
annotations = optional(map(string))
177+
labels = optional(map(string))
178+
}))
179+
}))
180+
consoleReplicas = optional(number)
181+
consoleResourceRequirements = optional(object({
182+
claims = optional(list(object({
183+
name = string
184+
request = optional(string)
185+
})))
186+
limits = optional(map(string))
187+
requests = optional(map(string))
188+
}))
189+
enableRbac = optional(bool)
190+
environmentId = optional(string)
191+
environmentdConnectionRoleArn = optional(string)
192+
environmentdExtraArgs = optional(list(string))
193+
environmentdExtraEnv = optional(list(object({
194+
name = string
195+
value = optional(string)
196+
valueFrom = optional(object({
197+
configMapKeyRef = optional(object({
198+
key = string
199+
name = string
200+
optional = optional(bool)
201+
}))
202+
fieldRef = optional(object({
203+
fieldPath = string
204+
apiVersion = optional(string)
205+
}))
206+
resourceFieldRef = optional(object({
207+
resource = string
208+
containerName = optional(string)
209+
divisor = optional(string)
210+
}))
211+
secretKeyRef = optional(object({
212+
key = string
213+
name = string
214+
optional = optional(bool)
215+
}))
216+
}))
217+
})))
218+
environmentdResourceRequirements = optional(object({
219+
claims = optional(list(object({
220+
name = string
221+
request = optional(string)
222+
})))
223+
limits = optional(map(string))
224+
requests = optional(map(string))
225+
}))
226+
environmentdScratchVolumeStorageRequirement = optional(string)
227+
forcePromote = optional(string)
228+
forceRollout = optional(string)
229+
internalCertificateSpec = optional(object({
230+
dnsNames = optional(list(string))
231+
duration = optional(string)
232+
issuerRef = optional(object({
233+
name = string
234+
group = optional(string)
235+
kind = optional(string)
236+
}))
237+
renewBefore = optional(string)
238+
secretTemplate = optional(object({
239+
annotations = optional(map(string))
240+
labels = optional(map(string))
241+
}))
242+
}))
243+
podAnnotations = optional(map(string))
244+
podLabels = optional(map(string))
245+
requestRollout = optional(string)
246+
rolloutStrategy = optional(string)
247+
serviceAccountAnnotations = optional(map(string))
248+
serviceAccountLabels = optional(map(string))
249+
serviceAccountName = optional(string)
250+
})
251+
default = {}
252+
nullable = false
253+
}

aws/examples/simple/variables.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ variable "license_key" {
2626
}
2727

2828
variable "force_rollout" {
29-
description = "UUID to force a rollout"
29+
description = "DEPRECATED: Use materialize_spec_override.forceRollout instead. UUID to force a rollout of the environment."
3030
type = string
31-
default = "00000000-0000-0000-0000-000000000001"
31+
default = null
3232
}
3333

3434
variable "request_rollout" {
35-
description = "UUID to request a rollout"
35+
description = "DEPRECATED: Use materialize_spec_override.requestRollout instead. UUID to request a rollout of the environment."
3636
type = string
37-
default = "00000000-0000-0000-0000-000000000001"
37+
default = null
3838
}

0 commit comments

Comments
 (0)