Skip to content

Commit 2bfa610

Browse files
committed
[DPE-8310] feat: add product Terraform module
1 parent 566fabe commit 2bfa610

File tree

7 files changed

+578
-0
lines changed

7 files changed

+578
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@ build/
77
parts/
88
prime/
99
stage/
10+
*.tfstate*
11+
.terraform*
12+

terraform/applications.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
resource "juju_application" "integrator" {
2+
model = var.model
3+
name = var.integrator.app_name
4+
units = var.integrator.units
5+
6+
charm {
7+
name = "data-integrator"
8+
channel = var.integrator.channel
9+
revision = var.integrator.revision
10+
base = var.integrator.base
11+
}
12+
13+
config = var.integrator.config
14+
}

terraform/integrations.tf

Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
# Integrations between Kafka products
2+
3+
resource "juju_integration" "kafka_kraft" {
4+
count = local.deployment_mode == "split" ? 1 : 0
5+
model = var.model
6+
7+
application {
8+
name = module.broker.app_name
9+
endpoint = "peer-cluster-orchestrator"
10+
}
11+
12+
application {
13+
name = module.controller[0].app_name
14+
endpoint = "peer-cluster"
15+
}
16+
}
17+
18+
resource "juju_integration" "kafka_connect" {
19+
count = var.connect.units > 0 ? 1 : 0
20+
model = var.model
21+
22+
application {
23+
name = module.broker.app_name
24+
endpoint = "kafka-client"
25+
}
26+
27+
application {
28+
name = module.connect[0].app_name
29+
}
30+
}
31+
32+
resource "juju_integration" "kafka_karapace" {
33+
count = var.karapace.units > 0 ? 1 : 0
34+
model = var.model
35+
36+
application {
37+
name = module.broker.app_name
38+
endpoint = "kafka-client"
39+
}
40+
41+
application {
42+
name = module.karapace[0].app_name
43+
}
44+
}
45+
46+
resource "juju_integration" "kafka_ui" {
47+
count = var.ui.units > 0 ? 1 : 0
48+
model = var.model
49+
50+
application {
51+
name = module.broker.app_name
52+
endpoint = "kafka-client"
53+
}
54+
55+
application {
56+
name = module.ui[0].app_name
57+
}
58+
}
59+
60+
61+
resource "juju_integration" "karapace_ui" {
62+
count = var.karapace.units > 0 && var.ui.units > 0 ? 1 : 0
63+
model = var.model
64+
65+
application {
66+
name = module.karapace[0].app_name
67+
endpoint = "karapace"
68+
}
69+
70+
application {
71+
name = module.ui[0].app_name
72+
}
73+
}
74+
75+
resource "juju_integration" "kafka_connect_ui" {
76+
count = var.connect.units > 0 && var.ui.units > 0 ? 1 : 0
77+
model = var.model
78+
79+
application {
80+
name = module.connect[0].app_name
81+
endpoint = "connect-client"
82+
}
83+
84+
application {
85+
name = module.ui[0].app_name
86+
}
87+
}
88+
89+
resource "juju_integration" "integrator_kafka" {
90+
model = var.model
91+
92+
application {
93+
name = juju_application.integrator.name
94+
}
95+
96+
application {
97+
name = module.broker.app_name
98+
}
99+
}
100+
101+
# TLS Integrations
102+
103+
resource "juju_integration" "kafka_tls" {
104+
count = local.tls_enabled ? 1 : 0
105+
model = var.model
106+
107+
application {
108+
name = module.broker.app_name
109+
endpoint = "certificates"
110+
}
111+
112+
application {
113+
offer_url = var.tls_offer
114+
}
115+
}
116+
117+
resource "juju_integration" "kafka_connect_tls" {
118+
count = local.tls_enabled && var.connect.units > 0 ? 1 : 0
119+
model = var.model
120+
121+
application {
122+
name = module.connect[0].app_name
123+
endpoint = "certificates"
124+
}
125+
126+
application {
127+
offer_url = var.tls_offer
128+
}
129+
}
130+
131+
resource "juju_integration" "karapace_tls" {
132+
count = local.tls_enabled && var.karapace.units > 0 ? 1 : 0
133+
model = var.model
134+
135+
application {
136+
name = module.karapace[0].app_name
137+
endpoint = "certificates"
138+
}
139+
140+
application {
141+
offer_url = var.tls_offer
142+
}
143+
}
144+
145+
resource "juju_integration" "kafka_ui_ingress" {
146+
count = var.ingress_offer != null && var.ui.units > 0 ? 1 : 0
147+
model = var.model
148+
149+
application {
150+
name = module.ui[0].app_name
151+
endpoint = "ingress"
152+
}
153+
154+
application {
155+
offer_url = var.ingress_offer
156+
}
157+
}
158+
159+
# COS Integrations
160+
161+
resource "juju_integration" "kafka_cos_metrics" {
162+
count = local.cos_enabled ? 1 : 0
163+
model = var.model
164+
165+
application {
166+
name = module.broker.app_name
167+
endpoint = "metrics-endpoint"
168+
}
169+
170+
application {
171+
offer_url = var.cos_offers.metrics
172+
}
173+
174+
}
175+
176+
resource "juju_integration" "kafka_cos_dashboard" {
177+
count = local.cos_enabled ? 1 : 0
178+
model = var.model
179+
180+
application {
181+
name = module.broker.app_name
182+
endpoint = "grafana-dashboard"
183+
}
184+
185+
application {
186+
offer_url = var.cos_offers.dashboard
187+
}
188+
189+
}
190+
191+
resource "juju_integration" "kafka_cos_logging" {
192+
count = local.cos_enabled ? 1 : 0
193+
model = var.model
194+
195+
application {
196+
name = module.broker.app_name
197+
endpoint = "logging"
198+
}
199+
200+
application {
201+
offer_url = var.cos_offers.logging
202+
}
203+
204+
}
205+
206+
resource "juju_integration" "kraft_cos_metrics" {
207+
count = local.cos_enabled && local.deployment_mode == "split" ? 1 : 0
208+
model = var.model
209+
210+
application {
211+
name = module.controller[0].app_name
212+
endpoint = "metrics-endpoint"
213+
}
214+
215+
application {
216+
offer_url = var.cos_offers.metrics
217+
}
218+
219+
}
220+
221+
resource "juju_integration" "kraft_cos_dashboard" {
222+
count = local.cos_enabled && local.deployment_mode == "split" ? 1 : 0
223+
model = var.model
224+
225+
application {
226+
name = module.controller[0].app_name
227+
endpoint = "grafana-dashboard"
228+
}
229+
230+
application {
231+
offer_url = var.cos_offers.dashboard
232+
}
233+
234+
}
235+
236+
resource "juju_integration" "kraft_cos_logging" {
237+
count = local.cos_enabled && local.deployment_mode == "split" ? 1 : 0
238+
model = var.model
239+
240+
application {
241+
name = module.controller[0].app_name
242+
endpoint = "logging"
243+
}
244+
245+
application {
246+
offer_url = var.cos_offers.logging
247+
}
248+
249+
}
250+
251+
resource "juju_integration" "connect_cos_metrics" {
252+
count = local.cos_enabled && var.connect.units > 0 ? 1 : 0
253+
model = var.model
254+
255+
application {
256+
name = module.connect[0].app_name
257+
endpoint = "metrics-endpoint"
258+
}
259+
260+
application {
261+
offer_url = var.cos_offers.metrics
262+
}
263+
264+
}
265+
266+
resource "juju_integration" "connect_cos_dashboard" {
267+
count = local.cos_enabled && var.connect.units > 0 ? 1 : 0
268+
model = var.model
269+
270+
application {
271+
name = module.connect[0].app_name
272+
endpoint = "grafana-dashboard"
273+
}
274+
275+
application {
276+
offer_url = var.cos_offers.dashboard
277+
}
278+
279+
}
280+
281+
resource "juju_integration" "connect_cos_logging" {
282+
count = local.cos_enabled && var.connect.units > 0 ? 1 : 0
283+
model = var.model
284+
285+
application {
286+
name = module.connect[0].app_name
287+
endpoint = "logging"
288+
}
289+
290+
application {
291+
offer_url = var.cos_offers.logging
292+
}
293+
294+
}

0 commit comments

Comments
 (0)