84 lines
3.0 KiB
Terraform
84 lines
3.0 KiB
Terraform
terraform {
|
|
required_version = "> 0.8.0"
|
|
}
|
|
|
|
provider "kubernetes" {
|
|
config_path = "~/.kube/config"
|
|
}
|
|
|
|
variable "shunt_kubernetes" {
|
|
type = bool
|
|
default = true
|
|
}
|
|
|
|
variable "nginx_sites" {
|
|
type = map(object({
|
|
service = string
|
|
docker_service = optional(string)
|
|
enabled = optional(bool, true)
|
|
proxy_cache = optional(bool, false)
|
|
extra-value = optional(string, "")
|
|
extra-value-location = optional(string, "")
|
|
http2_bool = optional(bool, false)
|
|
proxy_pass_https = optional(bool, false)
|
|
authentication_required = optional(bool, false)
|
|
redirect_to_https_bool = optional(bool, true)
|
|
listen_port_80_bool = optional(bool, false)
|
|
geoip_blocking = optional(bool, false)
|
|
geoip_allow = optional(list(string), ["FR", "GB"])
|
|
redirect_to_root_domain = optional(bool, true)
|
|
}))
|
|
|
|
}
|
|
|
|
resource "kubernetes_config_map" "automatic-configmap" {
|
|
#avoiding this to create if the shunt_kubernetes is on
|
|
count = var.shunt_kubernetes ? 0 : 1
|
|
metadata {
|
|
name = "sites-terraform"
|
|
namespace = "reverse-proxy"
|
|
annotations = {
|
|
"reloader.stakater.com/match" : "true",
|
|
}
|
|
}
|
|
|
|
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
|
|
extra-value-location = value.extra-value-location
|
|
http2_bool = value.http2_bool
|
|
proxy_pass_https = value.proxy_pass_https
|
|
authentication_required = value.authentication_required
|
|
redirect_to_https_bool = value.redirect_to_https_bool
|
|
listen_port_80_bool = value.listen_port_80_bool
|
|
geoip_blocking = value.geoip_blocking
|
|
geoip_allow = value.geoip_allow
|
|
redirect_to_root_domain = value.redirect_to_root_domain
|
|
}) if value.enabled == true
|
|
}
|
|
|
|
}
|
|
|
|
resource "local_file" "nginx_configs" {
|
|
for_each = { for key, value in var.nginx_sites : key => value if value.enabled == true && value.docker_service != null }
|
|
|
|
filename = "/data/kubernetes/reverse-proxy/reverse-proxy-sites/${each.key}.conf"
|
|
content = templatefile("nginx_config.tftpl", {
|
|
name_site = each.key
|
|
name_service = each.value.docker_service
|
|
proxy_cache = each.value.proxy_cache
|
|
extra-value = each.value.extra-value
|
|
extra-value-location = each.value.extra-value-location
|
|
http2_bool = each.value.http2_bool
|
|
proxy_pass_https = each.value.proxy_pass_https
|
|
authentication_required = each.value.authentication_required
|
|
redirect_to_https_bool = each.value.redirect_to_https_bool
|
|
listen_port_80_bool = each.value.listen_port_80_bool
|
|
redirect_to_root_domain = each.value.redirect_to_root_domain
|
|
})
|
|
}
|