devops/infra/clusters/bridge/main.tf

125 lines
3.5 KiB
HCL

locals {
server_dns = "bridge.fourlights.dev"
}
module "postgresql" {
source = "../../modules/postgresql"
namespace = "postgresql"
k8s_config_yaml = data.minio_s3_object.k8s_yaml.content
username = "bridge"
}
module "redis" {
source = "../../modules/redis"
wait_on = true
namespace = "redis"
k8s_config_yaml = data.minio_s3_object.k8s_yaml.content
}
module "fusionauth-db" {
source = "../../modules/postgresql/tenant"
wait_on = module.postgresql.installed
name = "fusionauth"
root_password = module.postgresql.root_password
k8s_config_yaml = data.minio_s3_object.k8s_yaml.content
}
resource "null_resource" "fusionauth-wait" {
depends_on = [module.fusionauth-db.installed, module.redis.installed]
}
module "fusionauth" {
source = "../../modules/fusionauth"
wait_on = null_resource.fusionauth-wait.id
namespace = "fusionauth"
k8s_config_yaml = data.minio_s3_object.k8s_yaml.content
server_dns = local.server_dns
database_password = module.fusionauth-db.password
}
module "fusionauth-tenant-devops" {
source = "../../modules/fusionauth/tenant"
wait_on = module.fusionauth.installed
fusionauth_api_key = module.fusionauth.api_key
fusionauth_uri = module.fusionauth.uri
tenant_name = "devops"
theme_id = "cafafa30-c8de-40f1-b666-12d3fe361a0a"
}
module "fusionauth-application-argocd" {
source = "../../modules/fusionauth/application"
wait_on = module.fusionauth-tenant-devops.installed
fusionauth_api_key = module.fusionauth.api_key
fusionauth_uri = module.fusionauth.uri
tenant_id = module.fusionauth-tenant-devops.tenant_id
rbac_lambda_id = module.fusionauth-tenant-devops.rbac_lambda_id
oauth_redirect_uri = "https://argocd.${local.server_dns}/api/dex/callback"
name = "ArgoCD"
}
output "fusionauth-admin-password" {
value = module.fusionauth.admin_password
sensitive = true
}
output "fusionauth-api-key" {
value = module.fusionauth.api_key
sensitive = true
}
resource "null_resource" "argocd_wait" {
depends_on = [module.fusionauth-application-argocd.installed, module.redis.installed]
}
module "argocd" {
source = "../../modules/argocd"
wait_on = null_resource.argocd_wait.id
namespace = "argocd"
k8s_config_yaml = data.minio_s3_object.k8s_yaml.content
redis_db_start_index = 0
redis_password = module.redis.password
server_dns = local.server_dns
oauth_uri = module.fusionauth.server
oauth_client_id = module.fusionauth-application-argocd.client_id
oauth_client_secret = module.fusionauth-application-argocd.client_secret
oauth_redirect_uri = module.fusionauth-application-argocd.redirect_uri
oauth_issuer = module.fusionauth-tenant-devops.issuer
}
output "argocd-root-password" {
value = module.argocd.admin_password
sensitive = true
}
# we need to add more applications here unfortunately
module "fusionauth-google" {
source = "../../modules/fusionauth/identity-provider/google"
wait_on = module.fusionauth.installed
fusionauth_uri = module.fusionauth.uri
fusionauth_api_key = module.fusionauth.api_key
google_client_id = "783390190667-0nkts50perpmhott4i7ro1ob5n7koi5i.apps.googleusercontent.com"
google_client_secret = "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"
applications = [
{
id = module.fusionauth-application-argocd.application_id,
create_registration = true,
enabled = true
}
]
}