Hearth is the infrastructure home for the letemcook ecosystem. Ported from coherence-mcp/infra: - Terraform modules (VPC, EKS, IAM, NLB, S3, storage) - Kubernetes manifests (Forgejo, ingress, cert-manager, karpenter) - Deployment scripts (phased rollout) Status: Not deployed. EKS cluster needs to be provisioned. Next steps: 1. Bootstrap terraform backend 2. Deploy phase 1 (foundation) 3. Deploy phase 2 (core services including Forgejo) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
146 lines
3.4 KiB
HCL
146 lines
3.4 KiB
HCL
# Foundation Infrastructure - Outputs
|
|
# RFC 0039: ADR-Compliant Foundation Infrastructure
|
|
|
|
# VPC Outputs
|
|
output "vpc_id" {
|
|
description = "VPC ID"
|
|
value = module.vpc.vpc_id
|
|
}
|
|
|
|
output "vpc_cidr" {
|
|
description = "VPC CIDR block"
|
|
value = module.vpc.vpc_cidr
|
|
}
|
|
|
|
output "private_subnet_ids" {
|
|
description = "Private subnet IDs"
|
|
value = module.vpc.private_subnet_ids
|
|
}
|
|
|
|
output "public_subnet_ids" {
|
|
description = "Public subnet IDs"
|
|
value = module.vpc.public_subnet_ids
|
|
}
|
|
|
|
output "database_subnet_ids" {
|
|
description = "Database subnet IDs"
|
|
value = module.vpc.database_subnet_ids
|
|
}
|
|
|
|
# EKS Outputs
|
|
output "cluster_name" {
|
|
description = "EKS cluster name"
|
|
value = module.eks.cluster_name
|
|
}
|
|
|
|
output "cluster_endpoint" {
|
|
description = "EKS cluster API endpoint"
|
|
value = module.eks.cluster_endpoint
|
|
}
|
|
|
|
output "cluster_certificate_authority_data" {
|
|
description = "EKS cluster CA certificate"
|
|
value = module.eks.cluster_certificate_authority_data
|
|
sensitive = true
|
|
}
|
|
|
|
output "cluster_oidc_issuer_url" {
|
|
description = "OIDC issuer URL for IRSA"
|
|
value = module.eks.cluster_oidc_issuer_url
|
|
}
|
|
|
|
# Storage Outputs
|
|
output "efs_id" {
|
|
description = "EFS filesystem ID"
|
|
value = module.storage.efs_id
|
|
}
|
|
|
|
output "backup_bucket_name" {
|
|
description = "S3 bucket for backups"
|
|
value = module.storage.backup_bucket_name
|
|
}
|
|
|
|
output "blob_bucket_name" {
|
|
description = "S3 bucket for blob storage"
|
|
value = module.storage.blob_bucket_name
|
|
}
|
|
|
|
# NLB Outputs
|
|
output "nlb_dns_name" {
|
|
description = "NLB DNS name"
|
|
value = module.nlb.dns_name
|
|
}
|
|
|
|
output "nlb_zone_id" {
|
|
description = "NLB Route53 zone ID"
|
|
value = module.nlb.zone_id
|
|
}
|
|
|
|
output "nlb_arn" {
|
|
description = "NLB ARN"
|
|
value = module.nlb.arn
|
|
}
|
|
|
|
# IAM Outputs
|
|
output "karpenter_role_arn" {
|
|
description = "Karpenter IAM role ARN"
|
|
value = module.iam.karpenter_role_arn
|
|
}
|
|
|
|
output "ebs_csi_role_arn" {
|
|
description = "EBS CSI driver IAM role ARN"
|
|
value = module.iam.ebs_csi_role_arn
|
|
}
|
|
|
|
output "efs_csi_role_arn" {
|
|
description = "EFS CSI driver IAM role ARN"
|
|
value = module.iam.efs_csi_role_arn
|
|
}
|
|
|
|
# kubectl Configuration
|
|
output "kubectl_config" {
|
|
description = "kubectl configuration command"
|
|
value = "aws eks update-kubeconfig --region ${var.aws_region} --name ${module.eks.cluster_name}"
|
|
}
|
|
|
|
# S3 Module Outputs
|
|
output "email_blobs_bucket_id" {
|
|
description = "S3 bucket ID for email blobs"
|
|
value = module.s3.email_blobs_bucket_id
|
|
}
|
|
|
|
output "loki_chunks_bucket_id" {
|
|
description = "S3 bucket ID for Loki log chunks"
|
|
value = module.s3.loki_chunks_bucket_id
|
|
}
|
|
|
|
output "tempo_traces_bucket_id" {
|
|
description = "S3 bucket ID for Tempo traces"
|
|
value = module.s3.tempo_traces_bucket_id
|
|
}
|
|
|
|
output "git_lfs_bucket_id" {
|
|
description = "S3 bucket ID for Git LFS objects"
|
|
value = module.s3.git_lfs_bucket_id
|
|
}
|
|
|
|
# IAM Policies for IRSA
|
|
output "loki_s3_policy_arn" {
|
|
description = "IAM policy ARN for Loki S3 access"
|
|
value = module.s3.loki_s3_policy_arn
|
|
}
|
|
|
|
output "tempo_s3_policy_arn" {
|
|
description = "IAM policy ARN for Tempo S3 access"
|
|
value = module.s3.tempo_s3_policy_arn
|
|
}
|
|
|
|
output "stalwart_s3_policy_arn" {
|
|
description = "IAM policy ARN for Stalwart S3 access"
|
|
value = module.s3.stalwart_s3_policy_arn
|
|
}
|
|
|
|
output "forgejo_s3_policy_arn" {
|
|
description = "IAM policy ARN for Forgejo S3 access"
|
|
value = module.s3.forgejo_s3_policy_arn
|
|
}
|