-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.tf
More file actions
75 lines (69 loc) · 1.88 KB
/
main.tf
File metadata and controls
75 lines (69 loc) · 1.88 KB
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
resource "kubernetes_namespace" "this" {
count = var.namespace == "default" ? 1 - local.argocd_enabled : 0
metadata {
name = var.namespace_name
}
}
resource "helm_release" "app" {
count = 1 - local.argocd_enabled + var.force_argocd
name = local.name
repository = var.repository
chart = var.chart
version = var.chart_version
namespace = local.namespace
timeout = 1200
values = [var.values]
create_namespace = true
lifecycle {
ignore_changes = [set, version, values]
}
}
resource "local_file" "app" {
count = local.argocd_enabled
content = data.utils_deep_merge_yaml.merged.output
filename = "${var.argocd.path}/${local.name}.yaml"
}
data "utils_deep_merge_yaml" "merged" {
input = [
yamlencode(local.app),
yamlencode(var.argocd_custom_app_settings)
]
deep_copy_list = true
}
locals {
name = var.name == "" ? var.chart : var.name
argocd_enabled = length(var.argocd) > 0 ? 1 : var.force_argocd
namespace = coalescelist(kubernetes_namespace.this, [{ "metadata" = [{ "name" = var.namespace }] }])[0].metadata[0].name
app = {
"apiVersion" = "argoproj.io/v1alpha1"
"kind" = "Application"
"metadata" = {
"name" = local.name
"namespace" = var.argocd.namespace
}
"spec" = {
"destination" = {
"namespace" = local.namespace
"server" = var.destination_server
}
"project" = var.project == "" ? var.argocd.project : var.project
"source" = {
"repoURL" = var.repository
"targetRevision" = var.chart_version
"chart" = var.chart
"helm" = {
"values" = var.values
}
}
"syncPolicy" = {
"syncOptions" = [
"CreateNamespace=true"
]
"automated" = {
"prune" = true
"selfHeal" = true
}
}
}
}
}