Thanks to visit codestin.com
Credit goes to github.com

Skip to content

somospragma/cloudops-ref-repo-aws-route53-terraform

 
 

Repository files navigation

Módulo de Referencia AWS Route 53 Terraform

Este módulo permite la creación y gestión de zonas hospedadas de Route 53 (públicas y privadas) siguiendo las mejores prácticas y estándares de Pragma CloudOps.

Características

✅ Creación de zonas hospedadas públicas y privadas
✅ Soporte para múltiples zonas en una sola aplicación del módulo
✅ Etiquetado estandarizado con soporte para etiquetas adicionales
✅ Validación de parámetros de entrada
✅ Nomenclatura estandarizada para recursos
✅ Ejemplos de implementación incluidos

Estructura del Módulo

cloudops-ref-repo-aws-route53-terraform/
├── data.tf                # Data sources
├── locals.tf              # Variables locales
├── main.tf                # Recursos principales
├── outputs.tf             # Salidas del módulo
├── providers.tf           # Configuración de proveedores
├── variables.tf           # Variables de entrada
└── sample/                # Directorio con ejemplos de uso
    └── route53/           # Ejemplo específico para Route 53
        ├── data.tf        # Data sources para los ejemplos
        ├── main.tf        # Configuración principal de los ejemplos
        ├── outputs.tf     # Salidas de los ejemplos
        ├── providers.tf   # Configuración de proveedores para los ejemplos
        ├── terraform.auto.tfvars.sample # Ejemplo de variables
        └── variables.tf   # Variables para los ejemplos

## Uso

### Ejemplo Básico

```hcl
module "route53_zones" {
  source = "git::https://github.com/somospragma/cloudops-ref-repo-aws-route53-terraform.git"
  
  providers = {
    aws.project = aws.principal
  }

  client      = "acme"
  project     = "dns"
  environment = "dev"
  
  route_53_config = {
    "main" = {
      name        = "example.com"
      comment     = "Zona pública para example.com"
      vpc_id      = null  # null para zona pública
      application = "website"
      ticket      = "TICKET-123"
      accessclass = "public"
      additional_tags = {
        purpose = "website-hosting"
      }
    }
  }
}

Ejemplo Avanzado

module "route53_zones" {
  source = "git::https://github.com/somospragma/cloudops-ref-repo-aws-route53-terraform.git"
  
  providers = {
    aws.project = aws.principal
  }

  client      = "acme"
  project     = "dns"
  environment = "dev"
  
  route_53_config = {
    # Zona pública
    "public" = {
      name        = "example.com"
      comment     = "Zona pública para example.com"
      vpc_id      = null
      application = "website"
      ticket      = "TICKET-123"
      accessclass = "public"
      additional_tags = {
        purpose = "website-hosting"
        team    = "frontend"
      }
    },
    
    # Zona privada
    "private" = {
      name        = "internal.example.com"
      comment     = "Zona privada para servicios internos"
      vpc_id      = "vpc-12345678"
      application = "internal-services"
      ticket      = "TICKET-124"
      accessclass = "private"
      additional_tags = {
        purpose = "internal-services"
        team    = "backend"
      }
    }
  }
}

Inputs

Nombre Descripción Tipo Requerido
client Nombre del cliente asociado a las zonas Route 53 string
project Nombre del proyecto asociado a las zonas Route 53 string
environment Entorno en el que se desplegarán las zonas Route 53 (develop, dev, qa, pdn) string
route_53_config Configuración de zonas hospedadas de Route 53 map(object)

Estructura de route_53_config

route_53_config = {
  "key" = {
    name        = string           # Nombre de la zona (ej: "example.com")
    comment     = string           # Comentario descriptivo
    vpc_id      = string (opcional) # ID de la VPC para zonas privadas, null para zonas públicas
    application = string           # Nombre de la aplicación asociada
    ticket      = string           # ID del ticket asociado
    accessclass = string           # "public" o "private"
    additional_tags = map(string)  # Etiquetas adicionales
  }
}

Outputs

Nombre Descripción
route53_info Mapa con información de las zonas Route 53 creadas

Mejores Prácticas Implementadas

  • Uso de mapas de objetos para configuraciones de recursos
  • Sistema de etiquetado estandarizado
  • Validación de variables de entrada
  • Nomenclatura estandarizada para recursos
  • Documentación completa

Notas Importantes

  • Para zonas privadas, es necesario especificar un vpc_id válido
  • El campo accessclass debe coincidir con el tipo de zona (public/private)
  • Las etiquetas transversales se definen en el proveedor AWS usando default_tags
  • El nombre de la zona debe ser un dominio válido (ej: example.com, sub.example.co, internal.local)

Este módulo ha sido desarrollado siguiendo los estándares de Pragma CloudOps, garantizando una implementación segura, escalable y optimizada que cumple con todas las políticas de la organización. Pragma CloudOps recomienda revisar este código con su equipo de infraestructura antes de implementarlo en producción.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published