Guia d'Infraestructura com a Codi (IaC): Eines i Pràctiques
Clasificado en Informática
Escrito el en
catalán con un tamaño de 3,83 KB
Què és l'Infraestructura com a Codi (IaC)?
La IaC (Infrastructure as Code) combina estàndards, pràctiques, eines i processos per subministrar, configurar i gestionar la infraestructura mitjançant codi. Aquest enfocament aporta consistència, documentació, repetibilitat i escalabilitat, automatitzant el desplegament, la configuració, el manteniment i els recursos.
L'ús d'IaC permet reduir entre un 60% i un 80% el temps de desplegament i un 50% els errors de configuració.
Enfocaments principals
- Declaratiu: És funcional; descriu l'estat final desitjat i el sistema determina els passos necessaris per assolir-lo.
- Imperatiu: Descriu detalladament tots els passos a seguir.
Categories d'eines
- Configuració: Gestió de programari en servidors.
- Subministrament (Provisioning): Creació i gestió de recursos d'infraestructura.
- Orquestració: Gestió de contenidors.
Exemples: Ansible (configura sistemes), Terraform (multi-cloud, infraestructura), Vagrant (entorns locals de desenvolupament) i Docker Compose (contenidors locals).
Mètodes de comunicació
- Push: El servidor central envia la configuració als nodes. És un control centralitzat i simple (ex: Ansible).
- Pull: Els nodes obtenen la configuració dels servidors. És més escalable i resilient (ex: Chef, Puppet).
Característiques clau
L'IaC destaca per la seva idempotència, versionat, capacitat de testatge, velocitat, control de versions, coherència, agilitat, reutilització i generalització.
Funcionament
El flux de treball consisteix en: desenvolupadors → especificació → fitxers al servidor master → la plataforma executa els passos i gestiona els recursos.
Eines destacades
Ansible
Eina de codi obert per automatitzar el provisioning de programari, la gestió de configuracions i el desplegament d'aplicacions. Utilitza SSH i és agentless.
- Conceptes: Node controlador i gestionat, protocol JSON, llenguatge YAML reutilitzable, tasques comunes (mòduls), consistència, seguretat i alta disponibilitat (HA). Inclou inventari, col·leccions i playbooks.
Vagrant
Crea i gestiona entorns de desenvolupament virtualitzats, portàtils, reproduïbles i aïllats. Ofereix facilitat de configuració, productivitat i flexibilitat.
Terraform
Eina oberta per definir i desplegar infraestructura al núvol amb HCL (HashiCorp Configuration Language). Permet un desenvolupament segur i repetible mitjançant CLI. Cicle: write, init, plan, apply.
- Funcionament: Crea un fitxer d'estat en inicialitzar, utilitza l'estat local per crear un pla i aplicar canvis, i actualitza l'estat. Desa l'estat en un fitxer
.tfstateo backend remot (S3, Cloud). Detecta automàticament les dependències entre recursos.
Integracions i bones pràctiques
- Terraform + Ansible: Terraform crea la infraestructura (IaC, estat gestionat, multi-cloud, declaratiu) i Ansible la configura (Config as Code, sense estat, sense agent, procedimental).
- Vagrant + Ansible: Vagrant provisiona la màquina virtual i Ansible la configura.
- Terraform + Kubernetes: Terraform crea la infraestructura i Kubernetes gestiona les càrregues de treball.
Bones pràctiques: Realitzar el versionat del codi, utilitzar variables, provar el codi i mantenir una documentació actualitzada.