Terraform Associate

Deep Dive

Practicar ahora
D3 · Núcleo de Terraform

Terraform Registry: providers y módulos públicos

El Terraform Registry es el repositorio centralizado de providers y módulos reutilizables. Entender su estructura, niveles de soporte y cómo hacer referencia a módulos es esencial para el examen.

Terraform Registry

registry.terraform.io es el repositorio oficial y público donde se publican todos los providers y módulos de Terraform.

Cuando defines source = "hashicorp/aws" en required_providers, Terraform busca ese provider en registry.terraform.io/hashicorp/aws. El registry también alberga miles de módulos reutilizables listos para usar.

Providers

Plugins que conectan Terraform con APIs externas. Sección /providers del registry.

Módulos

Configuraciones reutilizables y parametrizadas. Sección /modules del registry.

Acceso

Público y gratuito. Solo necesitas internet y terraform init para descargar.

Versiones

Cada provider y módulo tiene múltiples versiones semánticas disponibles.

Niveles de providers en el registry

OfficialMantenido directamente por HashiCorp

Namespace

hashicorp/

Ejemplos

aws, azurerm, google, kubernetes, helm, vault, random, null, local, tls

Garantía de soporte

Máxima — seguimiento de issues, parches de seguridad, compatibilidad garantizada

PartnerMantenido por empresa tecnológica con acuerdo comercial con HashiCorp

Namespace

namespace-de-la-empresa/

Ejemplos

DataDog/datadog, mongodb/mongodbatlas, pagerduty/pagerduty, snowflake-labs/snowflake

Garantía de soporte

Alta — empresa comprometida a mantener el provider

CommunityMantenido por individuos u organizaciones de la comunidad

Namespace

cualquiera/

Ejemplos

kreuzwerker/docker, hashicorp/dns (legacy), integrado por la comunidad

Garantía de soporte

Variable — depende del mantenedor, puede quedar sin mantenimiento

Módulos en el registry público

Los módulos del registry tienen un formato de source estándar de tres partes: namespace/nombre/provider.

# Formato: "namespace/nombre-modulo/provider"
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 5.0"              # SIEMPRE versionar módulos del registry

  name = "my-vpc"
  cidr = "10.0.0.0/16"
  azs  = ["us-east-1a", "us-east-1b"]
}

# Otros ejemplos de módulos del registry
module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 20.0"
}

module "security_group" {
  source  = "terraform-aws-modules/security-group/aws"
  version = "~> 5.0"
}
Parte del sourceDescripciónEjemplo
namespaceOrganización o usuario que publica el móduloterraform-aws-modules, hashicorp
nombreNombre descriptivo del módulovpc, eks, security-group, rds
providerProvider principal que usa el móduloaws, azurerm, google

💡 Verified modules

Los módulos con insignia Verified en el registry han sido revisados por HashiCorp. Son módulos de calidad alta mantenidos activamente. Los módulos de terraform-aws-modules son los más usados para AWS y todos tienen la insignia Verified.

⚠️ Siempre pinea la versión de módulos del registry

A diferencia de los módulos locales, los módulos del registry deben tener un argumento version. Sin él, Terraform instalará la última versión en cada terraform init, lo que puede romper tu config en futuras ejecuciones.

Registry privado en HCP Terraform

HCP Terraform (antes Terraform Cloud) incluye un registry privado para que las organizaciones publiquen módulos internos de forma similar al registry público.

Registry público

  • registry.terraform.io
  • • Acceso público y gratuito
  • • source = "namespace/module/provider"
  • • Para módulos y providers de la comunidad

Registry privado (HCP Terraform)

  • app.terraform.io
  • • Solo accesible con token de la organización
  • • source = "app.terraform.io/ORG/module/provider"
  • • Para módulos internos corporativos
# Módulo del registry privado de HCP Terraform
module "vpc" {
  source  = "app.terraform.io/mi-empresa/vpc/aws"
  version = "~> 2.0"

  # Los argumentos son los mismos que el módulo define
  environment = var.environment
  cidr        = var.vpc_cidr
}

terraform providers lock

El comando terraform providers lock actualiza el lock file (.terraform.lock.hcl) con hashes para múltiples plataformas, sin tener que estar en cada plataforma.

# Añadir hashes para múltiples plataformas al lock file
# Útil cuando los devs usan Mac pero CI/CD usa Linux
terraform providers lock   -platform=linux_amd64   -platform=linux_arm64   -platform=darwin_amd64   -platform=darwin_arm64   -platform=windows_amd64

# Ver qué providers usa la configuración actual
terraform providers

🎯 Para el examen

  • • El registry público está en registry.terraform.io
  • • Los módulos del registry usan el formato namespace/module/provider
  • • Los módulos del registry privado de HCP usan app.terraform.io/org/module/provider
  • • Los módulos del registry SIEMPRE deben incluir el argumento version
  • terraform providers lock actualiza el lock file para nuevas plataformas

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Un equipo quiere usar el módulo VPC de terraform-aws-modules desde el registry público de Terraform. ¿Cuál es el formato correcto para el argumento source?