terraform { required_providers { kubectl = { source = "gavinbunney/kubectl" version = "1.19.0" } helm = { source = "hashicorp/helm" version = "3.0.2" } kubernetes = { source = "hashicorp/kubernetes" version = "2.38.0" } kustomization = { source = "kbst/kustomization" version = "0.9.6" } } } provider "kubernetes" { config_path = "./kubeconfig" } provider "kubectl" { config_path = "./kubeconfig" } provider "kustomization" { kubeconfig_path = "./kubeconfig" } provider "helm" { kubernetes = { config_path = "./kubeconfig" } } module "storage" { source = "${path.module}/modules/storage" } module "loadbalancer" { source = "${path.module}/modules/metallb" depends_on = [module.storage] metallb_ip_range = var.metallb_ip_range } module "cert-manager" { source = "${path.module}/modules/cert-manager" } module "cloudflare" { source = "${path.module}/modules/cloudflare" depends_on = [module.cert-manager] cloudflare_api_token = var.cloudflare_api_token cloudflare_tunnel_name = var.cloudflare_tunnel_name cloudflare_email = var.cloudflare_email cloudflare_domain = var.cloudflare_domain cloudflare_account_id = var.cloudflare_account_id } module "database" { source = "${path.module}/modules/maxscale" depends_on = [module.storage, module.loadbalancer, module.cloudflare] mariadb_password = var.mariadb_password mariadb_root_password = var.mariadb_root_password mariadb_user_name = var.mariadb_user_name mariadb_user_host = var.mariadb_user_host mariadb_user_password = var.mariadb_user_password maxscale_ip = var.metallb_maxscale_ip service_ip = var.metallb_service_ip primary_ip = var.metallb_primary_ip secondary_ip = var.metallb_secondary_ip phpmyadmin_enabled = var.phpmyadmin_enabled cloudflare_domain = var.cloudflare_domain } module "argocd" { source = "${path.module}/modules/argocd" depends_on = [module.storage, module.loadbalancer, module.cloudflare] argocd_admin_password = var.argocd_admin_password cloudflare_domain = var.cloudflare_domain }