-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.tf
122 lines (110 loc) · 3.44 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
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
# creating grafana password
resource "random_password" "grafana_loki_password" {
depends_on = [
var.module_depends_on
]
length = 16
special = true
override_special = "!#%&*()-_=+[]{}<>:?"
}
resource "aws_ssm_parameter" "grafana_loki_password" {
name = "/${var.cluster_name}/grafana-loki/password"
type = "SecureString"
value = local.password
}
resource "aws_kms_ciphertext" "grafana_loki_password" {
count = local.argocd_enabled
key_id = var.argocd.kms_key_id
plaintext = local.password
}
resource "helm_release" "this" {
count = 1 - local.argocd_enabled
depends_on = [
var.module_depends_on
]
name = local.name
repository = local.repository
chart = local.chart
version = local.version
namespace = local.namespace
recreate_pods = true
timeout = 1200
dynamic "set" {
for_each = merge(local.conf)
content {
name = set.key
value = set.value
}
}
}
resource "local_file" "this" {
count = local.argocd_enabled
depends_on = [
var.module_depends_on
]
content = yamlencode(local.application)
filename = "${path.root}/${var.argocd.path}/${local.name}.yaml"
}
locals {
argocd_enabled = length(var.argocd) > 0 ? 1 : 0
namespace = coalescelist(var.namespace == "" && local.argocd_enabled > 0 ? [{ "metadata" = [{ "name" = var.namespace_name }] }] : kubernetes_namespace.this, [{ "metadata" = [{ "name" = var.namespace }] }])[0].metadata[0].name
name = "loki-stack"
repository = "https://grafana.github.io/helm-charts"
chart = "loki-stack"
version = var.chart_version
conf = merge(local.conf_defaults, var.conf)
password = var.grafana_loki_password == "" ? random_password.grafana_loki_password.result : var.grafana_loki_password
conf_defaults = {
"loki.enabled" = true
"promtail.enabled" = true
"fluent-bit.enabled" = false
"grafana.enabled" = true
"grafana.ingress.enabled" = true
"grafana.ingress.hosts[0]" = "grafana-loki.${var.domains[0]}"
"grafana.persistence.enabled" = true
"grafana.persistence.size" = "1Gi"
"grafana.adminPassword" = "KMS_ENC:${aws_kms_ciphertext.grafana_loki_password[0].ciphertext_blob}:"
"grafana.sidecar.datasources.enabled" = true
"prometheus.enabled" = false
"loki.persistence.enabled" = true
"loki.persistence.size" = "10Gi"
}
application = {
"apiVersion" = "argoproj.io/v1alpha1"
"kind" = "Application"
"metadata" = {
"name" = local.name
"namespace" = var.argocd.namespace
}
"spec" = {
"destination" = {
"namespace" = local.namespace
"server" = "https://kubernetes.default.svc"
}
"project" = "default"
"source" = {
"repoURL" = local.repository
"targetRevision" = local.version
"chart" = local.chart
"helm" = {
"parameters" = values({
for key, value in local.conf :
key => {
"name" = key
"value" = tostring(value)
}
})
}
}
"syncPolicy" = {
"automated" = {
"prune" = true
"selfHeal" = true
}
"syncOptions" = {
"createNamespace" = true
}
}
}
}
}