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" } time = { source = "hashicorp/time" version = "0.13.1" } } } provider "kubernetes" { config_path = "./kubeconfig" } provider "kubectl" { config_path = "./kubeconfig" } provider "kustomization" { kubeconfig_path = "./kubeconfig" } provider "helm" { kubernetes = { config_path = "./kubeconfig" } } module "storage" { source = "./modules/storage" } module "metrics_server" { source = "./modules/metrics-server"# } module "loadbalancer" { source = "./modules/metallb" depends_on = [module.storage] metallb_ip_range = var.metallb_ip_range } module "cert-manager" { source = "./modules/cert-manager" depends_on = [module.loadbalancer] } module "cloudflare" { source = "./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 "monitoring" { source = "./modules/prometheus" depends_on = [module.cloudflare] cloudflare_domain = var.cloudflare_domain } module "database" { source = "./modules/maxscale" depends_on = [module.monitoring] 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 #} #module "redis" { # source = "${path.module}/modules/redis" # depends_on = [module.storage] # cloudflare_base_domain = var.cloudflare_domain #} module "rabbitmq" { source = "./modules/rabbitmq" depends_on = [module.database] base_domain = var.cloudflare_domain rabbitmq-password = var.rabbitmq-password }