loop to create configmap

This commit is contained in:
2024-09-25 16:17:55 +01:00
parent 225b60b1fd
commit 1a1db6d6df
+92 -31
View File
@@ -1,46 +1,107 @@
terraform {
required_version = "> 0.8.0"
required_version = "> 0.8.0"
}
variable "nginx_sites" {
type = map(object({
service = string
enabled = optional(bool,true)
proxy_cache = optional(bool,false)
extra-value = optional(string,"")
http2_bool = optional(bool,false)
proxy_pass_https = optional(bool,false)
authentication_required = optional(bool,false)
}))
type = map(object({
service = string
enabled = optional(bool, true)
proxy_cache = optional(bool, false)
extra-value = optional(string, "")
http2_bool = optional(bool, false)
proxy_pass_https = optional(bool, false)
authentication_required = optional(bool, false)
}))
}
resource "local_file" "nginx"{
# for_each = var.nginx_sites
for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true}
content = templatefile("nginx_config.tftpl", {
name_site = each.key
name_service = each.value.service
proxy_cache = each.value.proxy_cache
extra-value = each.value.extra-value
http2_bool = each.value.http2_bool
proxy_pass_https = each.value.proxy_pass_https
authentication_required = each.value.authentication_required
})
resource "local_file" "nginx" {
# for_each = var.nginx_sites
for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true }
content = templatefile("nginx_config.tftpl", {
name_site = each.key
name_service = each.value.service
proxy_cache = each.value.proxy_cache
extra-value = each.value.extra-value
http2_bool = each.value.http2_bool
proxy_pass_https = each.value.proxy_pass_https
authentication_required = each.value.authentication_required
})
filename = "../conf.d/${each.key}.tryton.geeraert.eu.conf"
file_permission = "0600"
filename = "../conf.d/${each.key}.tryton.geeraert.eu.conf"
file_permission = "0600"
provisioner "local-exec" {
command = "kubectl exec -it deploy/reverse-proxy -n reverse-proxy -- nginx -s reload"
quiet = true
}
provisioner "local-exec" {
# command = "kubectl exec -it deploy/reverse-proxy -n reverse-proxy -- nginx -s reload"
command = "kubectl get pods -n reverse-proxy -o name | xargs -I{} kubectl exec -n reverse-proxy {} -- nginx -s reload"
quiet = true
}
}
output "Nginx_status" {
value = "Nginx pod restarted"
}
#resource "kubernetes_config_map" "automatic-configmap" {
# metadata {
# name = "sites-terraform"
# namespace = "reverse-proxy"
# }
# for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true }
# dynamic "data" {
# for_each = each.value.enabled == true ? [""] : []
# # for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true }
# content {
# key = (templatefile("nginx_config.tftpl", {
# name_site = each.key
# name_service = each.value.service
# proxy_cache = each.value.proxy_cache
# extra-value = each.value.extra-value
# http2_bool = each.value.http2_bool
# proxy_pass_https = each.value.proxy_pass_https
# authentication_required = each.value.authentication_required
# }))
# }
# }
#}
resource "kubernetes_config_map" "automatic-configmap" {
metadata {
name = "sites-terraform"
namespace = "reverse-proxy"
}
data = {
for key, value in var.nginx_sites :
"${key}.conf" => templatefile("nginx_config.tftpl", {
name_site = key
name_service = value.service
proxy_cache = value.proxy_cache
extra-value = value.extra-value
http2_bool = value.http2_bool
proxy_pass_https = value.proxy_pass_https
authentication_required = value.authentication_required
}) if value.enabled == true
}
provisioner "local-exec" {
command = "kubectl get pods -n reverse-proxy -o name | xargs -I{} kubectl delete -n reverse-proxy {}"
quiet = true
}
}
#resource "null_resource" "cluster" {
# provisioner "local-exec" {
# command = "kubectl get pods -n reverse-proxy -o name | xargs -I{} kubectl delete -n reverse-proxy {}"
# }
#}
#https://github.com/stakater/Reloader
output "Nginx_status" {
value = "Nginx pod restarted"
}
provider "kubernetes" {
config_path = "~/.kube/config"
}