20 abril, 2020

Infraestructura com a codi: Terraform i Ansible

La infraestructura com a codi ha proporcionat el context necessari per a l’aparició de DevOps. La configuració de la infraestructura i el codi de les aplicacions cada vegada estan més interrelacionats, fomentant la col·laboració entre els desenvolupadors de programari i els professionals de sistemes. Aquesta relació està canviant la manera de treballar amb la infraestructura, millorant les arquitectures i reduint els temps de lliurament dels serveis. 

Dins de les eines per a gestionar la infraestructura, Terraform i Ansible són dues de les més utilitzades en DevOps. En aquest article parlarem de què és la infraestructura com a codi, quins són els seus avantatges, i què aporten les eines Terraform i Ansible en la manera de treballar amb infraestructures. 

Què és infraestructura com a codi

La infraestructura com a codi (IaC) és una part fonamental de la programació en el núvol i essencial per a DevOps. En IaC es considera als servidors, bases de dades, xarxes i altres elements d’infraestructura com si es tractessin de programari, permetent que, executant  codi, es pugui configurar tota una infraestructura en molt poc temps. La infraestructura com a codi automatitza, amb l’execució de codi font, la provisió de components d’infraestructura (codi que defineix com queda configurada la infraestructura). 

Què éDevOps

DevOps és una nova metodologia de treball en el desenvolupament de software amb l’objectiu de reduir els temps de lliurament, alhora que es millora la qualitat del mateix i es minimitzen els riscos associats. DevOps canvia el paradigma de programació de programari, propiciant que tots els participants en el desenvolupament de programari (desenvolupament, operacions TI, enginyeria i seguretat) interactuïn i col·laborin per a garantir un lliurament continu de qualitat (de res serveix que el desenvolupament de les aplicacions sigui àgil si després hi ha un temps d’espera perquè les infraestructures estiguin llestes). 

Quins avantatges ofereix IaC

La infraestructura com a codi permet la configuració d’una infraestructura, que normalment necessita moltes hores de treball manual, en tan sols uns minuts, gràcies a l’execució de codi i a l’ús de tecnologies d’empaquetament d’aplicacions com Docker. La configuració de màquines virtuals que tradicionalment es realitzava de manera manual, pot ser gestionada de manera programàtica i automatitzada, això proporciona una sèrie de beneficis dins del context DevOps, com:  

• Velocitat. El desplegament serà molt més ràpid en realitzar la configuració de la infraestructura amb l’execució de scripts (reducció del temps de provisió, passant de requerir dies, a només uns minuts). 

• Estalvi de costos. El disseny d’una infraestructura pot ser copiat i després replicat en una altra infraestructura, estalviant els costos d’un nou disseny i manteniment. També pot automatitzar-se IaC dins del lliurament continu, permetent executar les proves dins d’entorns que finalment són destruïts. IaC facilita recrear la infraestructura en cas de desastre, automatitzant la creació d’entorns de Disaster Recovery. 

• Reducció del risc. El desplegament manual d’una infraestructura porta inevitablement aparellat una sèrie d’errors que s’eliminen automatitzant el procés. IaC permet realitzar els tests necessaris abans del desplegament que minimitzen els possibles errors en el desplegament i proporcionen una estructura més estable. 

• Documentació compartida. En IaC la configuració de la infraestructura és documentada i compartida amb la resta de membres del projecte. 

Què és Terraform

Terraform és una eina que s’utilitza per a desenvolupar, modificar i versionar infraestructura com a codi. Va ser dissenyada l’any 2014 amb la idea de ser modular i flexible (permet acoblar diferents proveïdors simultàniament), sota el model Open Source. 

Terraform està format per recursos, providers (com AWS, Azure o Google Cloud), state (l’estat de la infraestructura) i mòduls (permet reutilitzar un recurs, evitant reescriure la seva configuració). 

Característiques de Terraform

Les principals característiques de Terraform són: 

• Infraestructura com a codi. Guarda fitxers de configuració dels proveïdors d’infraestructures. 

• Disposa de plans d’execució, on informa que es realitzarà exactament, abans d’executar aquest pla (quines màquines virtuals es creen i es destrueixen, per exemple). 

• Disposa d’un graf de recursos on poder visualitzar la dependència entre els diferents components (màquines, bases de dades, etc.). 

• Amb els canvis automatitzats es poden realitzar moltes funcions de forma programada (executar test, desplegaments a producció automàtics entre altres). 

Què és Ansible

Ansible és una eina desenvolupada per RedHat, molt útil per als DevOps, ja que permet realitzar una gestió de servidors, aplicacions i configuracions, de manera senzilla i eficient. Aquesta eina facilita l’aplicació de configuracions paral·leles, per la qual cosa es podran realitzar configuracions de múltiples servidors al mateix temps. Ansible és una plataforma d’automatització que facilita el desplegament de programari i la gestió de la configuració d’infraestructures. 

Ansible permet executar totes les tasques que cal realitzar sobre servidors de manera automàtica, augmentant la productivitat i disminuint els errors humans que es produeixen en les instal·lacions i configuracions manuals. 

L’eina Ansible té una arquitectura basada en controladors (màquines virtuals) i nodes (servidor web o servidor de base de dades, per exemple). Els controladors es connecten amb els nodes (amb claus SSH) fent ús del llenguatge Python, que només haurà d’estar instal·lat en els nodes. 

Avantatges d’Ansible

• És una eina d’instal·lació senzilla i que té àmplia compatibilitat amb els diferents elements que conformen la infraestructura. 

• Suporta una gran varietat de distribucions de Linux i en Mac (pot executar-se en Windows a través de màquina virtual). 

• És senzill d’utilitzar, no són necessaris grans coneixements en programació. 

• Utilitza el llenguatge YAML per a tasques completes (llenguatge molt descriptiu que facilita la seva comprensió). 

• És un software lliure (Open Source). 

• Disposa d’una àmplia comunitat i múltiples mòduls “out of the box”, que augmenten la seva funcionalitat. 

• Té com a objectiu principal la simplicitat i maximitzar la seva facilitat d’ús. 

Terraform i Ansible són dues eines potents i de fàcil ús que permeten desenvolupar infraestructura com a codi. Ambdues són eines d’automatització que faciliten el treball de DevOps, reduint els temps de provisió d’infraestructures (permetent fins i tot instal·lar múltiples infraestructures amb l’execució del mateix  codi), minimitzant els errors que es produeixen en aplicar configuracions manuals i reduint els costos relacionats amb la configuració i manteniment de la infraestructura. 

Terraform és més potent que Ansible, perquè es tracta d’una eina d’orquestració que permet acoblar diferents proveïdors alhora, mentre que Ansible s’utilitza principalment com a eina de gestió de configuracions (configuration management tool). 

Encara estàs despert?

Nosaltres també. Posa't en contacte amb nosaltres i t'ajudarem en el que necessitis.
Contáctanos