mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 06:57:47 +01:00
Some checks are pending
Deploy Prod / Run Python Tests (push) Waiting to run
Deploy Prod / Build and push image (reusable) (push) Blocked by required conditions
Deploy Prod / Generate Production URLs (push) Blocked by required conditions
Deploy Prod / Frontend - Build and Deploy to Cloudflare Pages (prod) (push) Blocked by required conditions
Deploy Prod / Helm upgrade/install (prod) (push) Blocked by required conditions
120 lines
2.7 KiB
HCL
120 lines
2.7 KiB
HCL
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
|
|
|
|
s3_enabled = var.s3_enabled
|
|
s3_bucket = var.s3_bucket
|
|
s3_region = var.s3_region
|
|
s3_endpoint = var.s3_endpoint
|
|
s3_key_id = var.s3_key_id
|
|
s3_key_secret = var.s3_key_secret
|
|
}
|
|
|
|
#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
|
|
}
|