460 lines
12 KiB
HCL
460 lines
12 KiB
HCL
# WiFi-DensePose Terraform Outputs
|
|
# This file defines outputs that can be used by other Terraform configurations or external systems
|
|
|
|
# VPC Outputs
|
|
output "vpc_id" {
|
|
description = "ID of the VPC"
|
|
value = aws_vpc.main.id
|
|
}
|
|
|
|
output "vpc_cidr_block" {
|
|
description = "CIDR block of the VPC"
|
|
value = aws_vpc.main.cidr_block
|
|
}
|
|
|
|
output "public_subnet_ids" {
|
|
description = "IDs of the public subnets"
|
|
value = aws_subnet.public[*].id
|
|
}
|
|
|
|
output "private_subnet_ids" {
|
|
description = "IDs of the private subnets"
|
|
value = aws_subnet.private[*].id
|
|
}
|
|
|
|
output "internet_gateway_id" {
|
|
description = "ID of the Internet Gateway"
|
|
value = aws_internet_gateway.main.id
|
|
}
|
|
|
|
output "nat_gateway_ids" {
|
|
description = "IDs of the NAT Gateways"
|
|
value = aws_nat_gateway.main[*].id
|
|
}
|
|
|
|
# EKS Cluster Outputs
|
|
output "cluster_id" {
|
|
description = "EKS cluster ID"
|
|
value = aws_eks_cluster.main.id
|
|
}
|
|
|
|
output "cluster_arn" {
|
|
description = "EKS cluster ARN"
|
|
value = aws_eks_cluster.main.arn
|
|
}
|
|
|
|
output "cluster_endpoint" {
|
|
description = "Endpoint for EKS control plane"
|
|
value = aws_eks_cluster.main.endpoint
|
|
}
|
|
|
|
output "cluster_security_group_id" {
|
|
description = "Security group ID attached to the EKS cluster"
|
|
value = aws_eks_cluster.main.vpc_config[0].cluster_security_group_id
|
|
}
|
|
|
|
output "cluster_iam_role_name" {
|
|
description = "IAM role name associated with EKS cluster"
|
|
value = aws_iam_role.eks_cluster.name
|
|
}
|
|
|
|
output "cluster_iam_role_arn" {
|
|
description = "IAM role ARN associated with EKS cluster"
|
|
value = aws_iam_role.eks_cluster.arn
|
|
}
|
|
|
|
output "cluster_certificate_authority_data" {
|
|
description = "Base64 encoded certificate data required to communicate with the cluster"
|
|
value = aws_eks_cluster.main.certificate_authority[0].data
|
|
}
|
|
|
|
output "cluster_primary_security_group_id" {
|
|
description = "The cluster primary security group ID created by the EKS cluster"
|
|
value = aws_eks_cluster.main.vpc_config[0].cluster_security_group_id
|
|
}
|
|
|
|
output "cluster_service_cidr" {
|
|
description = "The CIDR block that Kubernetes pod and service IP addresses are assigned from"
|
|
value = aws_eks_cluster.main.kubernetes_network_config[0].service_ipv4_cidr
|
|
}
|
|
|
|
# EKS Node Group Outputs
|
|
output "node_groups" {
|
|
description = "EKS node groups"
|
|
value = {
|
|
main = {
|
|
arn = aws_eks_node_group.main.arn
|
|
status = aws_eks_node_group.main.status
|
|
capacity_type = aws_eks_node_group.main.capacity_type
|
|
instance_types = aws_eks_node_group.main.instance_types
|
|
scaling_config = aws_eks_node_group.main.scaling_config
|
|
}
|
|
}
|
|
}
|
|
|
|
output "node_security_group_id" {
|
|
description = "ID of the EKS node shared security group"
|
|
value = aws_security_group.eks_nodes.id
|
|
}
|
|
|
|
output "node_iam_role_name" {
|
|
description = "IAM role name associated with EKS node group"
|
|
value = aws_iam_role.eks_nodes.name
|
|
}
|
|
|
|
output "node_iam_role_arn" {
|
|
description = "IAM role ARN associated with EKS node group"
|
|
value = aws_iam_role.eks_nodes.arn
|
|
}
|
|
|
|
# Database Outputs
|
|
output "db_instance_endpoint" {
|
|
description = "RDS instance endpoint"
|
|
value = aws_db_instance.main.endpoint
|
|
sensitive = true
|
|
}
|
|
|
|
output "db_instance_name" {
|
|
description = "RDS instance name"
|
|
value = aws_db_instance.main.db_name
|
|
}
|
|
|
|
output "db_instance_username" {
|
|
description = "RDS instance root username"
|
|
value = aws_db_instance.main.username
|
|
sensitive = true
|
|
}
|
|
|
|
output "db_instance_port" {
|
|
description = "RDS instance port"
|
|
value = aws_db_instance.main.port
|
|
}
|
|
|
|
output "db_subnet_group_id" {
|
|
description = "RDS subnet group name"
|
|
value = aws_db_subnet_group.main.id
|
|
}
|
|
|
|
output "db_subnet_group_arn" {
|
|
description = "RDS subnet group ARN"
|
|
value = aws_db_subnet_group.main.arn
|
|
}
|
|
|
|
output "db_instance_resource_id" {
|
|
description = "RDS instance resource ID"
|
|
value = aws_db_instance.main.resource_id
|
|
}
|
|
|
|
output "db_instance_status" {
|
|
description = "RDS instance status"
|
|
value = aws_db_instance.main.status
|
|
}
|
|
|
|
output "db_instance_availability_zone" {
|
|
description = "RDS instance availability zone"
|
|
value = aws_db_instance.main.availability_zone
|
|
}
|
|
|
|
output "db_instance_backup_retention_period" {
|
|
description = "RDS instance backup retention period"
|
|
value = aws_db_instance.main.backup_retention_period
|
|
}
|
|
|
|
# Redis Outputs
|
|
output "redis_cluster_id" {
|
|
description = "ElastiCache Redis cluster identifier"
|
|
value = aws_elasticache_replication_group.main.id
|
|
}
|
|
|
|
output "redis_primary_endpoint_address" {
|
|
description = "Address of the endpoint for the primary node in the replication group"
|
|
value = aws_elasticache_replication_group.main.primary_endpoint_address
|
|
sensitive = true
|
|
}
|
|
|
|
output "redis_reader_endpoint_address" {
|
|
description = "Address of the endpoint for the reader node in the replication group"
|
|
value = aws_elasticache_replication_group.main.reader_endpoint_address
|
|
sensitive = true
|
|
}
|
|
|
|
output "redis_port" {
|
|
description = "Redis port"
|
|
value = aws_elasticache_replication_group.main.port
|
|
}
|
|
|
|
output "redis_subnet_group_name" {
|
|
description = "ElastiCache subnet group name"
|
|
value = aws_elasticache_subnet_group.main.name
|
|
}
|
|
|
|
# S3 Outputs
|
|
output "s3_bucket_id" {
|
|
description = "S3 bucket ID for application data"
|
|
value = aws_s3_bucket.app_data.id
|
|
}
|
|
|
|
output "s3_bucket_arn" {
|
|
description = "S3 bucket ARN for application data"
|
|
value = aws_s3_bucket.app_data.arn
|
|
}
|
|
|
|
output "s3_bucket_domain_name" {
|
|
description = "S3 bucket domain name"
|
|
value = aws_s3_bucket.app_data.bucket_domain_name
|
|
}
|
|
|
|
output "s3_bucket_regional_domain_name" {
|
|
description = "S3 bucket region-specific domain name"
|
|
value = aws_s3_bucket.app_data.bucket_regional_domain_name
|
|
}
|
|
|
|
output "alb_logs_bucket_id" {
|
|
description = "S3 bucket ID for ALB logs"
|
|
value = aws_s3_bucket.alb_logs.id
|
|
}
|
|
|
|
output "alb_logs_bucket_arn" {
|
|
description = "S3 bucket ARN for ALB logs"
|
|
value = aws_s3_bucket.alb_logs.arn
|
|
}
|
|
|
|
# Load Balancer Outputs
|
|
output "alb_id" {
|
|
description = "Application Load Balancer ID"
|
|
value = aws_lb.main.id
|
|
}
|
|
|
|
output "alb_arn" {
|
|
description = "Application Load Balancer ARN"
|
|
value = aws_lb.main.arn
|
|
}
|
|
|
|
output "alb_dns_name" {
|
|
description = "Application Load Balancer DNS name"
|
|
value = aws_lb.main.dns_name
|
|
}
|
|
|
|
output "alb_zone_id" {
|
|
description = "Application Load Balancer zone ID"
|
|
value = aws_lb.main.zone_id
|
|
}
|
|
|
|
output "alb_security_group_id" {
|
|
description = "Application Load Balancer security group ID"
|
|
value = aws_security_group.alb.id
|
|
}
|
|
|
|
# Security Group Outputs
|
|
output "security_groups" {
|
|
description = "Security groups created"
|
|
value = {
|
|
eks_cluster = aws_security_group.eks_cluster.id
|
|
eks_nodes = aws_security_group.eks_nodes.id
|
|
rds = aws_security_group.rds.id
|
|
redis = aws_security_group.redis.id
|
|
alb = aws_security_group.alb.id
|
|
}
|
|
}
|
|
|
|
# KMS Key Outputs
|
|
output "kms_key_ids" {
|
|
description = "KMS Key IDs"
|
|
value = {
|
|
eks = aws_kms_key.eks.id
|
|
rds = aws_kms_key.rds.id
|
|
s3 = aws_kms_key.s3.id
|
|
cloudwatch = aws_kms_key.cloudwatch.id
|
|
secrets = aws_kms_key.secrets.id
|
|
}
|
|
}
|
|
|
|
output "kms_key_arns" {
|
|
description = "KMS Key ARNs"
|
|
value = {
|
|
eks = aws_kms_key.eks.arn
|
|
rds = aws_kms_key.rds.arn
|
|
s3 = aws_kms_key.s3.arn
|
|
cloudwatch = aws_kms_key.cloudwatch.arn
|
|
secrets = aws_kms_key.secrets.arn
|
|
}
|
|
}
|
|
|
|
# Secrets Manager Outputs
|
|
output "secrets_manager_secret_id" {
|
|
description = "Secrets Manager secret ID"
|
|
value = aws_secretsmanager_secret.app_secrets.id
|
|
}
|
|
|
|
output "secrets_manager_secret_arn" {
|
|
description = "Secrets Manager secret ARN"
|
|
value = aws_secretsmanager_secret.app_secrets.arn
|
|
}
|
|
|
|
# CloudWatch Outputs
|
|
output "cloudwatch_log_group_name" {
|
|
description = "CloudWatch log group name for EKS cluster"
|
|
value = aws_cloudwatch_log_group.eks_cluster.name
|
|
}
|
|
|
|
output "cloudwatch_log_group_arn" {
|
|
description = "CloudWatch log group ARN for EKS cluster"
|
|
value = aws_cloudwatch_log_group.eks_cluster.arn
|
|
}
|
|
|
|
# IAM Role Outputs
|
|
output "iam_roles" {
|
|
description = "IAM roles created"
|
|
value = {
|
|
eks_cluster = aws_iam_role.eks_cluster.arn
|
|
eks_nodes = aws_iam_role.eks_nodes.arn
|
|
rds_monitoring = aws_iam_role.rds_monitoring.arn
|
|
}
|
|
}
|
|
|
|
# Region and Account Information
|
|
output "aws_region" {
|
|
description = "AWS region"
|
|
value = var.aws_region
|
|
}
|
|
|
|
output "aws_account_id" {
|
|
description = "AWS account ID"
|
|
value = data.aws_caller_identity.current.account_id
|
|
}
|
|
|
|
# Kubernetes Configuration
|
|
output "kubeconfig" {
|
|
description = "kubectl config as generated by the module"
|
|
value = {
|
|
apiVersion = "v1"
|
|
kind = "Config"
|
|
current_context = "terraform"
|
|
contexts = [{
|
|
name = "terraform"
|
|
context = {
|
|
cluster = "terraform"
|
|
user = "terraform"
|
|
}
|
|
}]
|
|
clusters = [{
|
|
name = "terraform"
|
|
cluster = {
|
|
certificate_authority_data = aws_eks_cluster.main.certificate_authority[0].data
|
|
server = aws_eks_cluster.main.endpoint
|
|
}
|
|
}]
|
|
users = [{
|
|
name = "terraform"
|
|
user = {
|
|
exec = {
|
|
apiVersion = "client.authentication.k8s.io/v1beta1"
|
|
command = "aws"
|
|
args = [
|
|
"eks",
|
|
"get-token",
|
|
"--cluster-name",
|
|
aws_eks_cluster.main.name,
|
|
"--region",
|
|
var.aws_region,
|
|
]
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
sensitive = true
|
|
}
|
|
|
|
# Connection Strings (Sensitive)
|
|
output "database_url" {
|
|
description = "Database connection URL"
|
|
value = "postgresql://${aws_db_instance.main.username}:${random_password.db_password.result}@${aws_db_instance.main.endpoint}/${aws_db_instance.main.db_name}"
|
|
sensitive = true
|
|
}
|
|
|
|
output "redis_url" {
|
|
description = "Redis connection URL"
|
|
value = "redis://:${random_password.redis_auth_token.result}@${aws_elasticache_replication_group.main.primary_endpoint_address}:6379"
|
|
sensitive = true
|
|
}
|
|
|
|
# Application Configuration
|
|
output "app_config" {
|
|
description = "Application configuration values"
|
|
value = {
|
|
environment = var.environment
|
|
region = var.aws_region
|
|
vpc_id = aws_vpc.main.id
|
|
cluster_name = aws_eks_cluster.main.name
|
|
namespace = "wifi-densepose"
|
|
}
|
|
}
|
|
|
|
# Monitoring Configuration
|
|
output "monitoring_config" {
|
|
description = "Monitoring configuration"
|
|
value = {
|
|
log_group_name = aws_cloudwatch_log_group.eks_cluster.name
|
|
log_retention = var.log_retention_days
|
|
kms_key_id = aws_kms_key.cloudwatch.id
|
|
}
|
|
}
|
|
|
|
# Network Configuration Summary
|
|
output "network_config" {
|
|
description = "Network configuration summary"
|
|
value = {
|
|
vpc_id = aws_vpc.main.id
|
|
vpc_cidr = aws_vpc.main.cidr_block
|
|
public_subnets = aws_subnet.public[*].id
|
|
private_subnets = aws_subnet.private[*].id
|
|
availability_zones = aws_subnet.public[*].availability_zone
|
|
nat_gateways = aws_nat_gateway.main[*].id
|
|
internet_gateway = aws_internet_gateway.main.id
|
|
}
|
|
}
|
|
|
|
# Security Configuration Summary
|
|
output "security_config" {
|
|
description = "Security configuration summary"
|
|
value = {
|
|
kms_keys = {
|
|
eks = aws_kms_key.eks.arn
|
|
rds = aws_kms_key.rds.arn
|
|
s3 = aws_kms_key.s3.arn
|
|
cloudwatch = aws_kms_key.cloudwatch.arn
|
|
secrets = aws_kms_key.secrets.arn
|
|
}
|
|
security_groups = {
|
|
eks_cluster = aws_security_group.eks_cluster.id
|
|
eks_nodes = aws_security_group.eks_nodes.id
|
|
rds = aws_security_group.rds.id
|
|
redis = aws_security_group.redis.id
|
|
alb = aws_security_group.alb.id
|
|
}
|
|
secrets_manager = aws_secretsmanager_secret.app_secrets.arn
|
|
}
|
|
}
|
|
|
|
# Resource Tags
|
|
output "common_tags" {
|
|
description = "Common tags applied to resources"
|
|
value = {
|
|
Project = var.project_name
|
|
Environment = var.environment
|
|
ManagedBy = "Terraform"
|
|
Owner = var.owner
|
|
}
|
|
}
|
|
|
|
# Deployment Information
|
|
output "deployment_info" {
|
|
description = "Deployment information"
|
|
value = {
|
|
timestamp = timestamp()
|
|
terraform_version = ">=1.0"
|
|
aws_region = var.aws_region
|
|
environment = var.environment
|
|
project_name = var.project_name
|
|
}
|
|
} |