Tanquem la Part V amb un problema molt real que afecta tota infraestructura gestionada amb codi: el drift (deriva o desviació). Passa quan la infraestructura real deixa de coincidir amb el que diu el teu codi. En aquest subcapítol entendràs per què passa, per què és perillós, i com detectar-lo i corregir-lo automàticament. És la cirereta d’un flux d’Infraestructura com a Codi madur.

Què és el drift

Recorda la idea central de Terraform: el teu codi descriu com ha de ser la infraestructura, i Terraform fa que la realitat coincideixi amb ell (Capítol 9). El drift (deriva) és quan la infraestructura real es desvia del que diu el codi, sense que el codi hagi canviat.

El teu codi diu:        servidor amb 2 CPUs, port 443 obert
La realitat és ara:     servidor amb 4 CPUs, port 22 també obert
                        ↑ algú ho va canviar per fora = DRIFT

El codi i la realitat ja no coincideixen. Aquesta diferència és el drift.

Per què ocorre el drift

El drift apareix quan algú o alguna cosa modifica la infraestructura per fora de Terraform:

  • Canvis manuals: algú entra a la consola d’AWS i modifica un recurs «ràpidament» per resoldre una urgència (obre un port, canvia una mida...), sense actualitzar el codi.
  • Altres eines o scripts que toquen els mateixos recursos.
  • Processos automàtics d’AWS que modifiquen alguna cosa (estrany, però possible).
  • Autoescalat o altres sistemes que canvien el nombre de recursos.

El cas més comú i perillós: un canvi manual «d’emergència». A les 3 de la matinada hi ha un incident, algú entra a la consola d’AWS i canvia alguna cosa a mà per apagar el foc, i després s’oblida de reflectir-ho al codi. A partir d’aquí, el codi menteix: ja no descriu la realitat.

Analogia: el drift és com tenir els planols d’una casa que ja no coincideixen amb la casa real perquè algú ha tirat un envà sense actualitzar els planols. Si més endavant un constructor treballa guiant-se pels planols antics, pot provocar un desastre, perquè la realitat és una altra.

Per què el drift és perillós

El drift mina tota la confiança en la teva Infraestructura com a Codi:

  • El codi deixa de ser la font de la veritat: ja no pots confiar que el codi descriu el que hi ha de veritat.
  • Sorpreses en el proper apply: quan algú torni a aplicar Terraform, aquest intentarà «corregir» el canvi manual (revertir-lo al que diu el codi), cosa que pot trencar el que es va arreglar a mà, o eliminar un pedaç de seguretat!
  • Riscos de seguretat ocults: si el canvi manual va obrir un port perillós, el codi no ho reflecteix, així que les revisions de seguretat (Capítol 21) no ho detecten. El forat queda ocult.
  • Pèrdua de reproduïbilitat: si recrees la infraestructura des del codi, no obtindràs el que realment hi havia, perquè el codi està desactualitzat.

Com detectar el drift

La bona notícia és que detectar el drift és senzill, perquè Terraform ja sap comparar el codi amb la realitat. Recorda que terraform plan (subcapítol 11.4) fa exactament això: compara codi, estat i realitat. Si hi ha drift, el plan ho mostra:

terraform plan
   → si NO hi ha drift → "No changes" ✓ (codi i realitat coincideixen)
   → si HI HA drift → mostra les diferències:
       ~ aws_security_group.web: port 22 obert (no està al codi) ⚠️

Detecció automàtica i periòdica

La clau és no esperar que algú executi un plan per casualitat. La detecció de drift automàtica consisteix a executar terraform plan periòdicament (per exemple, cada nit) de forma automàtica, i avisar si detecta diferències:

Cada nit, automàticament:
   terraform plan
      → hi ha canvis inesperats?
         → SÍ → ALERTA a l’equip (Slack, email...): "hi ha drift en producció"
         → NO → tot en ordre, res a reportar

Així, si algú va fer un canvi manual, l’equip se n’assabenta l’endemà, no setmanes després quan ja ha causat un problema. Plataformes com HCP Terraform (subcapítol 22.3) ofereixen aquesta detecció de drift integrada; també la pots muntar amb un pipeline programat (recorda els schedules d’EventBridge, subcapítol 15.3, o un cron al teu CI).

La reconciliació: corregir el drift

Detectar el drift és només la meitat; després cal reconciliar (tornar a alinear codi i realitat). Hi ha dues maneres, segons quin canvi sigui el «correcte»:

Opció A: el codi és la veritat → revertir el canvi manual

Si el canvi manual no s’havia de fer, executes terraform apply perquè Terraform torni la infraestructura al que diu el codi, eliminant la desviació.

El canvi manual va ser un error → terraform apply → torna al que diu el codi

Opció B: el canvi manual era necessari → actualitzar el codi

Si el canvi manual era correcte (un ajust que cal mantenir), llavors actualitzes el codi perquè reflecteixi aquest canvi, i el puges mitjançant un PR (subcapítol 12.5). Ara el codi torna a ser la veritat.

El canvi manual era vàlid → actualitza el CODI per reflectir-ho → PR → apply

Reconciliació automàtica: alguns equips configuren que, davant certs drifts, el sistema reverteixi automàticament a l’estat del codi (opció A) sense intervenció. Això és potent per forçar que tot canvi passi per codi, però cal fer-ho amb compte: revertir automàticament un canvi que era un pedaç d’emergència legítim podria reobrir un problema. Per això molts prefereixen detecció automàtica + decisió humana sobre com reconciliar.

La lliçó de fons: tot canvi, per codi

El drift reforça el missatge central de tota la Infraestructura com a Codi: tots els canvis s’han de fer a través del codi, mai a mà. La detecció de drift és la vigilància que fa complir aquesta regla, avisant quan algú se la salta.

Exemple del món real: una empresa executa detecció de drift cada nit en producció. Un matí, l’alerta avisa: «el Security Group de la base de dades té el port 5432 obert a internet, i no està al codi». Investigen: un desenvolupador el va obrir a mà la tarda anterior per a una prova i es va oblidar de tancar-lo. Gràcies a la detecció de drift, ho descobreixen en hores (no quan un atacant ho trobi) i ho corregeixen. Sense aquesta vigilància, aquest forat podria haver passat mesos desapercebut.

El que has de recordar

  • El drift (deriva) és quan la infraestructura real deixa de coincidir amb el codi, normalment per canvis manuals fets per fora de Terraform (el clàssic pedaç d’emergència que no es reflecteix al codi).
  • És perillós: el codi deixa de ser la font de la veritat, el proper apply pot revertir canvis importants, oculta riscos de seguretat i trenca la reproduïbilitat. Com uns planols que ja no coincideixen amb la casa.
  • Es detecta amb terraform plan (compara codi i realitat); l’ideal és la detecció automàtica i periòdica (ex. cada nit) que alerta l’equip davant diferències.
  • Es reconcilia de dues maneres: revertir el canvi manual amb apply (si el codi és la veritat) o actualitzar el codi via PR (si el canvi manual era vàlid).
  • La lliçó de fons: tots els canvis s’han de fer per codi; la detecció de drift és la vigilància que fa complir aquesta regla.

Has acabat el Capítol 22 i la Part V! Ja domines Terraform a nivell avançat: mòduls, entorns, estat, testing i CI/CD. A la Part VI canviem el focus cap als aspectes transversals d’AWS que distingeixen un professional: començarem per la seguretat en profunditat.

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