Fins ara has treballat sol, executant apply des del teu ordinador. Però en una empresa, la infraestructura la gestiona un equip, i aplicar canvis al núvol de producció «a mà» és perillós. En aquest subcapítol tanquem el capítol (i la Part III) veient com els equips professionals gestionen Terraform de manera segura i col·laborativa: mitjançant Pull Requests i revisió de plans.

El problema de treballar en equip

Imagina cinc persones modificant la mateixa infraestructura des dels seus portàtils. Sorgeixen problemes immediats:

  • Qui va aplicar aquell canvi que va trencar producció? Ningú ho sap.
  • Dues persones fan apply alhora i corrompen l’estat (recorda el subcapítol 11.3).
  • Algú aplica un canvi sense que ningú el revisi, i esborra una base de dades.
  • No hi ha registre de què va canviar, quan ni per què.

La solució és tractar la infraestructura igual que el codi d’una aplicació: amb Git, branques, Pull Requests i revisió entre companys.

El flux GitOps per a infraestructura

El flux professional (sovint anomenat GitOps) funciona així:

1. Crees una branca           →  git checkout -b add-segon-servidor
2. Modifiques el codi .tf     →  (afegeixes un recurs, canvies una variable...)
3. Obres un Pull Request      →  proposes els teus canvis a l’equip
4. CI executa terraform plan  →  el pla apareix automàticament al PR
5. Un company REVISa el pla   →  fa el que esperem? alguna cosa perillosa?
6. Aprova i es fusiona        →  merge a la branca principal
7. CI executa terraform apply →  el canvi s’aplica de manera controlada

La idea central: ningú aplica canvis des del seu portàtil. Tot passa per un Pull Request revisat, i és un sistema automàtic (CI/CD) qui executa apply.

El pas clau: revisar el pla al PR

La peça més valuosa d’aquest flux és el pas 5: revisar el pla. Quan obres un Pull Request, una eina automàtica (ho veurem al Capítol 22) executa terraform plan i publica el resultat com a comentari al PR. Així, abans d’aprovar, tothom veu exactament què passarà:

Terraform Plan (comentari automàtic al PR):

  # aws_instance.web2 will be created
  + resource "aws_instance" "web2" {
      + instance_type = "t3.micro"
      + ami           = "ami-0abc123"
      ...
    }

Plan: 1 to add, 0 to change, 0 to destroy.

El revisor mira aquest pla i es pregunta:

  • Crea el que l’autor diu que volia crear?
  • Hi ha algun destroy inesperat? (Una senyal d’alarma!)
  • Toca recursos crítics com bases de dades?

Aquesta és la xarxa de seguretat definitiva. El pla al PR converteix cada canvi d’infraestructura en quelcom visible i revisable. Si algú proposa, sense voler, un canvi que destruiria la base de dades de producció, el pla ho mostrarà amb un - destroy, i el revisor ho aturarà abans que passi. Recorda el que vam veure al subcapítol 11.4: llegir el pla amb atenció evita desastres; aquí aquest hàbit esdevé un procés d’equip obligatori.

Un exemple del món real

Imagina que en una empresa de comerç electrònic, l’Ana necessita afegir un segon servidor per suportar més trànsit. En lloc d’entrar en producció i crear-lo a mà:

  1. Ana crea una branca feature/segon-servidor i afegeix el recurs al codi.
  2. Obre un Pull Request titulat «Afegir segon servidor web per al Black Friday».
  3. El sistema de CI publica el pla: Plan: 1 to add, 0 to change, 0 to destroy.
  4. Carlos, el seu company, revisa el pla. Viu que només s’afegeix una instància, res més. Tot correcte.
  5. En Carlos aprova el PR. Es fusiona.
  6. El CI executa apply automàticament. El nou servidor apareix.

Resultat: hi ha un registre permanent (el PR) de què es va canviar, qui ho va proposar, qui ho va revisar i per què. Si alguna cosa falla, només cal revertir el PR. Traçabilitat total.

Bones pràctiques del treball en equip amb Terraform

Resumim les regles d’or, que recullen molt del que hem après a la Part III:

Pràctica Per què
Estat remot amb locking (subcap. 11.3) Evita que dues persones apliquin alhora i corrompin l’estat
Ningú aplica des del seu portàtil Només el CI/CD aplica, de manera controlada i registrada
Tot canvi passa per un PR Revisió obligatòria abans de tocar el núvol
Revisar sempre el pla del PR Detectar destroy inesperats o operacions perilloses
fmt i validate al CI (subcap. 11.4) Codi net i vàlid abans de fusionar
Commits i PRs descriptius Traçabilitat: saber què va canviar i per què

El que has de recordar

  • En equip, mai s’aplica Terraform «a mà» des del portàtil: tot passa per Git, Pull Requests i CI/CD.
  • El flux GitOps: branca → canvies el codi → PR → el CI publica el pla → un company el revisa → s’aprova i es fusiona → el CI fa apply.
  • El pas estrella és revisar el pla al PR: fa cada canvi visible i permet aturar operacions perilloses (com un destroy inesperat) abans que passin.
  • Aquest flux dona traçabilitat total: qui va canviar què, quan, per què i qui ho va aprovar.
  • Es basa en el que hem après: estat remot amb locking, fmt/validate, i l’hàbit de llegir el pla amb atenció.

Enhorabona! Has tancat la Part III i tens les bases sòlides de Terraform: llenguatge, providers, estat, comandes, una infraestructura real construïda i el flux de treball en equip. A la Part IV farem un salt: arquitectures més avançades a AWS, començant pel balanceig de càrrega i l’autoescalat (Capítol 13).

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