Comencem la Part V: Terraform avançat. Fins ara escrivies tota la teva infraestructura en fitxers solts. Funciona per a alguna cosa petita, però quan creixes, aquest enfocament es torna repetitiu i ingovernable. La solució són els mòduls, la peça clau per reutilitzar i organitzar el teu codi Terraform com un professional. En aquest subcapítol entendràs què són i com s’estructuren.

El problema: la repetició

Imagina que necessites crear la mateixa infraestructura una vegada i una altra. Per exemple, a la teva empresa cada nou projecte necessita una VPC amb subxarxes públiques i privades, igual que la del Capítol 12. Sense mòduls, hauries de copiar i enganxar tot aquest codi a cada projecte:

Projecte A: 200 línies de codi de VPC (copiades)
Projecte B: 200 línies de codi de VPC (copiades, una altra vegada)
Projecte C: 200 línies de codi de VPC (copiades, i una altra vegada)

Això és un desastre: si trobes un error o vols millorar la VPC, has de canviar-ho a tots els llocs. És just el problema que la programació va resoldre fa dècades amb les funcions: escriure alguna cosa una vegada i reutilitzar-la.

Què és un mòdul

Un mòdul de Terraform és un conjunt de recursos agrupats i reutilitzables, empaquetats com una unitat amb una entrada i una sortida ben definides. És l’equivalent a una funció en programació: el defineixes una vegada i el «crides» tantes vegades com necessitis, canviant només els detalls.

   Mòdul "vpc" (definit una vegada)
        │
        ├──► usat al Projecte A (amb els seus valors)
        ├──► usat al Projecte B (amb altres valors)
        └──► usat al Projecte C (amb altres valors)

Analogia: un mòdul és com una recepta de cuina reutilitzable. Escrius una vegada la recepta de «pizza» indicant quins ingredients admet (els ingredients són els paràmetres). Després la fas servir moltes vegades canviant els ingredients: una pizza de pernil, una altra de xampinyons, una altra vegetariana. La recepta (el mòdul) és la mateixa; els ingredients (les variables) canvien.

L’anatomia: els tres fitxers clau

Un mòdul és, senzillament, una carpeta amb fitxers .tf. Per convenció, s’organitzen en tres fitxers principals (recorda els blocs del Capítol 10):

modul-vpc/
 ├── variables.tf   ← les ENTRADES (què es pot configurar)
 ├── main.tf        ← els RECURSOS (què crea el mòdul)
 └── outputs.tf     ← les SORTIDES (quina informació retorna)

  1. variables.tf — les entrades

Defineix què es pot configurar al mòdul des de fora. Són com els «paràmetres» de la recepta. Per exemple, el rang de la VPC o el nom del projecte:

variable "cidr_vpc" {
  description = "Rang d’adreces de la VPC"
  type        = string
}

variable "nom" {
  description = "Nom del projecte"
  type        = string
}

  1. main.tf — els recursos

Conté els recursos que el mòdul crea, usant les variables d’entrada. És el «cos» de la recepta:

resource "aws_vpc" "aquesta" {
  cidr_block = var.cidr_vpc      # fa servir la variable d’entrada

  tags = {
    Name = var.nom
  }
}
# ... més recursos (subxarxes, gateway, rutes...) ...

  1. outputs.tf — les sortides

Defineix quina informació retorna el mòdul perquè altres la puguin utilitzar (recorda els outputs del subcapítol 12.4). Per exemple, l’ID de la VPC creada:

output "id_vpc" {
  description = "ID de la VPC creada"
  value       = aws_vpc.aquesta.id
}

El contracte: entrades i sortides

L’elegància d’un mòdul és que funciona com una caixa amb un «contracte» clar:

              ┌──────────────────────┐
  Entrades ──►│       MÒDUL            │──► Sortides
 (variables)  │  (crea els recursos)   │  (outputs)
              └──────────────────────┘

Qui fa servir el mòdul no necessita saber com està fet per dins: només li dóna les entrades que necessita i rep les sortides que li interessen. Això és abstracció: amagar la complexitat darrere d’una interfície senzilla. Igual que fas servir una funció sense saber com està programada per dins.

Exemple del món real: l’equip de plataforma d’una empresa crea un mòdul xarxa-corporativa que munta una VPC amb totes les bones pràctiques de seguretat i connectivitat de l’empresa. Els altres equips només han de utilitzar aquest mòdul donant-li un nom i un rang; obtenen una xarxa perfecta sense ser experts en xarxes. Tota la complexitat està encapsulada al mòdul.

El que has de recordar

  • Sense mòduls, acabes copiant i enganxant el mateix codi d’infraestructura, cosa que és repetitiva i insostenible (canviar alguna cosa obliga a tocar-la a molts llocs).
  • Un mòdul és un conjunt de recursos agrupats i reutilitzables, l’equivalent a una funció en programació: el defineixes una vegada i l’utilitzes moltes. Com una recepta de cuina reutilitzable.
  • Un mòdul és una carpeta amb fitxers .tf, organitzats per convenció en tres: variables.tf (entrades), main.tf (recursos) i outputs.tf (sortides).
  • Funciona com una caixa amb un contracte: li dónes entrades (variables) i reps sortides (outputs), sense necessitat de saber com està fet per dins. Això és abstracció.

Al següent subcapítol aprofundirem en com es connecta un mòdul amb el món exterior: les seves variables d’entrada, els seus outputs i com s’estableixen les dependències entre mòduls.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats