infra/modules/kubernetes/main.tf

401 lines
11 KiB
Terraform
Raw Normal View History

2021-05-05 19:17:56 +01:00
variable "prod" {}
2021-02-07 23:45:55 +00:00
variable "tls_secret_name" {}
variable "client_certificate_secret_name" {}
variable "hackmd_db_password" {}
variable "mailserver_accounts" {}
variable "mailserver_aliases" {}
2021-02-18 22:26:36 +00:00
variable "mailserver_opendkim_key" {}
variable "mailserver_sasl_passwd" {}
2021-02-07 23:45:55 +00:00
variable "pihole_web_password" {}
variable "webhook_handler_secret" {}
variable "wireguard_wg_0_conf" {}
variable "wireguard_wg_0_key" {}
variable "wireguard_firewall_sh" {}
variable "bind_db_viktorbarzin_me" {}
variable "bind_db_viktorbarzin_lan" {}
variable "bind_named_conf_options" {}
variable "alertmanager_account_password" {}
2021-05-05 19:17:56 +01:00
variable "dbaas_root_password" {}
2023-11-24 17:38:49 +00:00
variable "dbaas_postgresql_root_password" {}
variable "dbaas_pgadmin_password" {}
variable "drone_github_client_id" {}
variable "drone_github_client_secret" {}
variable "drone_rpc_secret" {}
2023-10-21 22:54:45 +00:00
variable "oauth2_proxy_client_id" {}
variable "oauth2_proxy_client_secret" {}
variable "oauth2_proxy_authenticated_emails" {}
variable "url_shortener_geolite_license_key" {}
variable "url_shortener_api_key" {}
2021-05-05 19:17:56 +01:00
variable "url_shortener_mysql_password" {}
variable "webhook_handler_fb_verify_token" {}
2021-02-27 20:56:14 +00:00
variable "webhook_handler_fb_page_token" {}
variable "webhook_handler_fb_app_secret" {}
2021-03-15 23:32:56 +00:00
variable "webhook_handler_git_user" {}
variable "webhook_handler_git_token" {}
2021-03-31 23:35:09 +01:00
variable "webhook_handler_ssh_key" {}
2021-04-05 15:06:24 +01:00
variable "idrac_username" {}
variable "idrac_password" {}
variable "alertmanager_slack_api_url" {}
2022-06-02 16:05:14 +01:00
variable "home_assistant_configuration" {}
2022-11-19 17:51:04 +00:00
variable "shadowsocks_password" {}
variable "finance_app_db_connection_string" {}
variable "finance_app_currency_converter_api_key" {}
variable "finance_app_graphql_api_secret" {}
variable "finance_app_gocardless_secret_key" {}
variable "finance_app_gocardless_secret_id" {}
variable "headscale_config" {}
2023-11-18 14:54:55 +00:00
variable "immich_postgresql_password" {}
variable "ingress_honeypotapikey" {}
variable "ingress_crowdsec_api_key" {}
variable "ingress_crowdsec_captcha_secret_key" {}
variable "ingress_crowdsec_captcha_site_key" {}
variable "vaultwarden_smtp_password" {}
2023-11-24 17:38:49 +00:00
variable "resume_database_url" {}
variable "resume_redis_url" {}
2021-02-07 23:45:55 +00:00
2021-02-08 21:49:22 +00:00
resource "null_resource" "core_services" {
# List all the core modules that must be provisioned first
depends_on = [module.metallb]
2021-02-08 21:49:22 +00:00
}
2021-02-07 23:45:55 +00:00
module "blog" {
source = "./blog"
tls_secret_name = var.tls_secret_name
# dockerhub_password = var.dockerhub_password
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
# module "bind" {
# source = "./bind"
# db_viktorbarzin_me = var.bind_db_viktorbarzin_me
# db_viktorbarzin_lan = var.bind_db_viktorbarzin_lan
# named_conf_options = var.bind_named_conf_options
# }
2021-02-07 23:45:55 +00:00
2021-05-03 14:59:17 +01:00
module "dbaas" {
2023-11-24 17:38:49 +00:00
source = "./dbaas"
prod = var.prod
tls_secret_name = var.tls_secret_name
dbaas_root_password = var.dbaas_root_password
postgresql_root_password = var.dbaas_postgresql_root_password
pgadmin_password = var.dbaas_pgadmin_password
2021-05-03 14:59:17 +01:00
}
2021-05-03 01:26:42 +01:00
module "descheduler" {
source = "./descheduler"
}
2023-09-15 09:18:13 +00:00
# module "dnscrypt" {
# source = "./dnscrypt"
# }
2021-02-07 23:45:55 +00:00
# CI/CD
module "drone" {
source = "./drone"
tls_secret_name = var.tls_secret_name
github_client_id = var.drone_github_client_id
github_client_secret = var.drone_github_client_secret
rpc_secret = var.drone_rpc_secret
server_host = "drone.viktorbarzin.me"
server_proto = "https"
depends_on = [null_resource.core_services]
}
2021-02-07 23:45:55 +00:00
module "f1-stream" {
source = "./f1-stream"
tls_secret_name = var.tls_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
module "hackmd" {
source = "./hackmd"
hackmd_db_password = var.hackmd_db_password
tls_secret_name = var.tls_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
# TODO
# module "ingress-nginx" {
# source = "./ingress-nginx"
# }
# module "kafka" {
# source = "./kafka"
# client_certificate_secret_name = var.client_certificate_secret_name
# tls_secret_name = var.tls_secret_name
# }
2021-03-21 14:20:48 +00:00
2021-02-07 23:45:55 +00:00
module "kms" {
source = "./kms"
tls_secret_name = var.tls_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
}
2021-02-07 23:45:55 +00:00
module "k8s-dashboard" {
source = "./k8s-dashboard"
tls_secret_name = var.tls_secret_name
client_certificate_secret_name = var.client_certificate_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
module "mailserver" {
source = "./mailserver"
2021-02-18 22:26:36 +00:00
tls_secret_name = var.tls_secret_name
2021-02-07 23:45:55 +00:00
mailserver_accounts = var.mailserver_accounts
postfix_account_aliases = var.mailserver_aliases
2021-02-18 22:26:36 +00:00
opendkim_key = var.mailserver_opendkim_key
sasl_passwd = var.mailserver_sasl_passwd
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
module "metallb" {
source = "./metallb"
}
module "monitoring" {
2021-02-07 23:45:55 +00:00
source = "./monitoring"
tls_secret_name = var.tls_secret_name
alertmanager_account_password = var.alertmanager_account_password
2021-04-05 15:06:24 +01:00
idrac_username = var.idrac_username
idrac_password = var.idrac_password
alertmanager_slack_api_url = var.alertmanager_slack_api_url
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
2023-10-21 22:54:45 +00:00
module "oauth" {
source = "./oauth-proxy"
tls_secret_name = var.tls_secret_name
oauth2_proxy_client_id = var.oauth2_proxy_client_id
oauth2_proxy_client_secret = var.oauth2_proxy_client_secret
authenticated_emails = var.oauth2_proxy_authenticated_emails
2023-10-21 22:54:45 +00:00
depends_on = [null_resource.core_services]
}
module "openid_help_page" {
2021-02-07 23:45:55 +00:00
source = "./openid_help_page"
tls_secret_name = var.tls_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
2023-09-15 09:16:54 +00:00
# module "pihole" {
# source = "./pihole"
# web_password = var.pihole_web_password
2021-02-07 23:45:55 +00:00
2023-09-15 09:16:54 +00:00
# tls_secret_name = var.tls_secret_name
2021-02-07 23:45:55 +00:00
2023-09-15 09:16:54 +00:00
# depends_on = [module.bind] # DNS goes like pihole -> bind -> dnscrypt
# }
2021-02-07 23:45:55 +00:00
module "privatebin" {
2021-02-07 23:45:55 +00:00
source = "./privatebin"
tls_secret_name = var.tls_secret_name
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
2021-02-25 21:55:00 +00:00
# module "vault" {
# source = "./vault"
# tls_secret_name = var.tls_secret_name
# }
2021-02-14 13:17:24 +00:00
module "reloader" {
source = "./reloader"
}
2022-11-19 17:51:04 +00:00
module "shadowsocks" {
source = "./shadowsocks"
password = var.shadowsocks_password
}
module "city-guesser" {
source = "./city-guesser"
tls_secret_name = var.tls_secret_name
depends_on = [null_resource.core_services]
}
2022-12-28 17:23:01 +02:00
module "echo" {
source = "./echo"
tls_secret_name = var.tls_secret_name
depends_on = [null_resource.core_services]
}
module "url" {
source = "./url-shortener"
tls_secret_name = var.tls_secret_name
geolite_license_key = var.url_shortener_geolite_license_key
api_key = var.url_shortener_api_key
2021-05-05 19:17:56 +01:00
mysql_password = var.url_shortener_mysql_password
}
module "webhook_handler" {
2021-02-07 23:45:55 +00:00
source = "./webhook_handler"
tls_secret_name = var.tls_secret_name
webhook_secret = var.webhook_handler_secret
fb_verify_token = var.webhook_handler_fb_verify_token
2021-02-27 20:56:14 +00:00
fb_page_token = var.webhook_handler_fb_page_token
fb_app_secret = var.webhook_handler_fb_app_secret
2021-03-15 23:32:56 +00:00
git_user = var.webhook_handler_git_user
git_token = var.webhook_handler_git_token
2021-03-31 23:35:09 +01:00
ssh_key = var.webhook_handler_ssh_key
2021-02-08 21:49:22 +00:00
depends_on = [null_resource.core_services]
2021-02-07 23:45:55 +00:00
}
module "wireguard" {
2021-02-07 23:45:55 +00:00
source = "./wireguard"
tls_secret_name = var.tls_secret_name
wg_0_conf = var.wireguard_wg_0_conf
wg_0_key = var.wireguard_wg_0_key
firewall_sh = var.wireguard_firewall_sh
}
2022-06-02 16:05:14 +01:00
module "home_assistant" {
source = "./home_assistant"
tls_secret_name = var.tls_secret_name
client_certificate_secret_name = var.client_certificate_secret_name
configuration_yaml = var.home_assistant_configuration
}
2023-03-06 18:56:00 +02:00
module "finance_app" {
source = "./finance_app"
tls_secret_name = var.tls_secret_name
graphql_api_secret = var.finance_app_graphql_api_secret
db_connection_string = var.finance_app_db_connection_string
currency_converter_api_key = var.finance_app_currency_converter_api_key
gocardless_secret_key = var.finance_app_gocardless_secret_key
gocardless_secret_id = var.finance_app_gocardless_secret_id
2023-03-06 18:56:00 +02:00
}
2023-04-09 13:18:57 +01:00
module "excalidraw" {
source = "./excalidraw"
tls_secret_name = var.tls_secret_name
}
2023-05-10 17:21:47 +00:00
module "infra-maintenance" {
source = "./infra-maintenance"
git_user = var.webhook_handler_git_user
git_token = var.webhook_handler_git_token
2023-05-10 17:21:47 +00:00
}
2023-08-06 16:44:31 +00:00
module "travel_blog" {
source = "./travel_blog"
tls_secret_name = var.tls_secret_name
}
module "technitium" {
source = "./technitium"
tls_secret_name = var.tls_secret_name
}
2023-09-15 09:13:16 +00:00
module "headscale" {
source = "./headscale"
tls_secret_name = var.tls_secret_name
headscale_config = var.headscale_config
2023-09-15 09:13:16 +00:00
}
# module "metrics_api" {
# source = "./metrics_api"
# tls_secret_name = var.tls_secret_name
# }
module "dashy" {
source = "./dashy"
tls_secret_name = var.tls_secret_name
}
# module "localai" {
# source = "./localai"
# tls_secret_name = var.tls_secret_name
# }
2023-10-29 23:36:18 +00:00
module "vaultwarden" {
source = "./vaultwarden"
tls_secret_name = var.tls_secret_name
2023-11-24 11:08:25 +00:00
smtp_password = var.vaultwarden_smtp_password
2023-10-29 23:36:18 +00:00
}
module "reverse-proxy" {
source = "./reverse_proxy"
tls_secret_name = var.tls_secret_name
}
2023-11-04 00:51:01 +00:00
# Selfhosted Firefox send
module "send" {
source = "./send"
tls_secret_name = var.tls_secret_name
}
module "redis" {
source = "./redis"
tls_secret_name = var.tls_secret_name
}
2023-11-11 02:26:25 +00:00
module "ytdlp" {
source = "./youtube_dl"
tls_secret_name = var.tls_secret_name
}
2023-11-18 14:54:55 +00:00
module "immich" {
source = "./immich"
tls_secret_name = var.tls_secret_name
postgresql_password = var.immich_postgresql_password
}
module "nginx-ingress" {
source = "./nginx-ingress"
honeypotapikey = var.ingress_honeypotapikey
crowdsec_api_key = var.ingress_crowdsec_api_key
crowdsec_captcha_secret_key = var.ingress_crowdsec_captcha_secret_key
crowdsec_captcha_site_key = var.ingress_crowdsec_captcha_site_key
}
2023-11-24 11:08:25 +00:00
module "crowdsec" {
source = "./crowdsec"
tls_secret_name = var.tls_secret_name
}
2023-11-24 17:38:49 +00:00
# Seems like it needs S3 even if pg is local...
# module "resume" {
# source = "./resume"
# tls_secret_name = var.tls_secret_name
# redis_url = var.resume_redis_url
# database_url = var.resume_database_url
# }
2023-12-17 12:22:29 +00:00
module "uptime-kuma" {
source = "./uptime-kuma"
tls_secret_name = var.tls_secret_name
}
2023-12-27 13:49:48 +00:00
module "calibre" {
source = "./calibre"
tls_secret_name = var.tls_secret_name
}
2023-12-29 11:59:36 +00:00
# Audiobooks are served using audiobookshelf; still looking for a usecawe for JF
# module "jellyfin" {
# source = "./jellyfin"
# tls_secret_name = var.tls_secret_name
# }
module "audiobookshelf" {
source = "./audiobookshelf"
tls_secret_name = var.tls_secret_name
}
module "frigate" {
source = "./frigate"
tls_secret_name = var.tls_secret_name
}