-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmain.tf
50 lines (41 loc) · 1.3 KB
/
main.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
resource "kubernetes_namespace" "crossplane_namespace" {
metadata {
name = var.crossplane_namespace
}
}
resource "helm_release" "crossplane" {
name = "crossplane"
namespace = kubernetes_namespace.crossplane_namespace.metadata[0].name
repository = var.crossplane_repository
chart = var.crossplane_chart
version = var.crossplane_chart_version
values = var.crossplane_values_path != "" ? [file(var.crossplane_values_path)] : []
force_update = true
}
resource "kubernetes_secret" "create_credentials" {
for_each = var.crossplane_secrets
metadata {
name = each.key
namespace = kubernetes_namespace.crossplane_namespace.metadata[0].name
}
data = {
"credentials" = each.value
}
}
resource "null_resource" "install_providers" {
depends_on = [
helm_release.crossplane
]
for_each = var.crossplane_providers
triggers = {
kubeconfig = abspath(var.path_kubeconfig)
yaml_string = each.value
}
provisioner "local-exec" {
command = format("echo '%s' | kubectl --kubeconfig=%s apply -f -", self.triggers.yaml_string, self.triggers.kubeconfig)
}
provisioner "local-exec" {
when = destroy
command = format("echo '%s' | kubectl --kubeconfig=%s delete -f -", self.triggers.yaml_string, self.triggers.kubeconfig)
}
}