Terraform: infraestructura como código

noviembre 19, 2019

Por Alejandro Nieto

Si queremos empezar, que sea por el principio. En el pleistoceno de nuestro mundo, cuando el fallo de una impresora desencadenaba la creación de movimientos sociales ligados al desarrollo software... Vale, quizás no debamos retroceder tanto en el tiempo, la cuestión es que para empezar a trabajar se requiere mucha infraestructura: servidores, switches, firewalls o balanceadores de carga, por indicar algunos ejemplos.

El proceso para adquirir todo esto para empezar con nuestro proyecto era el más costoso en tiempo; la adquisición podría llevar meses, la instalación de los sistemas, la configuración inicial, todo esto se realizaba de una forma totalmente manual y arcaica y todo eso está muy mal visto, ¿verdad? (se trata de demonizar esto). 

El siguiente paso evolutivo fueron las máquinas virtuales, lo que nos permitía aprovechar mejor nuestros recursos y mejoraba en gran medida la creación de recursos necesarios para comenzar a trabajar. Donde antes había que comprar un equipo físico, ahora bastaba con crearlo de forma virtual a golpe de click (o de cli para los aventureros) en nuestro entorno virtualizado. Pero, aun así, la gestión de estos recursos seguía siendo manual, propensa a errores (consecuencia directa de lo mencionado anteriormente) y estaba desalineada totalmente con los tiempos que manejaba el equipo de desarrollo; cuando el equipo de desarrollo necesitaba recursos, abría un ticket y esperaba la respuesta del equipo de infraestructura, como hemos dicho; todo manual. 

Luego surgió la era del Cloud Computing y desde ese momento los proveedores cloud comenzaron a proporcionarnos una API para poder gestionar todos nuestros recursos virtualizados de una forma más ágil. Para trabajar con estas APIs necesitamos una herramienta, y cada proveedor cloud nos proporcionará la suya. Podemos utilizar cualquiera de ellas o utilizar una que nos abstraiga totalmente y nos permita trabajar con cualquier proveedor de forma sencilla; solo queremos aprender una, no mil, ¿verdad? Para eso existe Terraform. Con Terraform podemos desarrollar código para la creación y mantenimiento de nuestra infraestructura desplegada en varios clouds, es más, con Terraform podemos controlar el estado de la infraestructura y verificar los cambios antes de que estos sean aplicados, todo va a ser controlado por nosotros, desde ampliar la memoria de nuestra máquina hasta crear una nueva política de seguridad para abrir un puerto. Por supuesto, no dejaremos que nadie manipule nuestros recursos de forma manual, hemos dicho que eso es cosa del pasado. 

Como último apunte, podemos subirnos al atril cultural y señalar los cambios culturales que puede sufrir nuestro equipo. Si hemos dicho que nuestra infraestructura va a ser código, podrá ser incluida en el ciclo de vida habitual de nuestras aplicaciones, es decir, podremos automatizar la creación de ésta, realizar tests, manejar dependencias de versiones entre aplicación e infraestructura. ¿Os suena esto? El equipo de infraestructura está trabajando como el equipo de desarrollo y esto le permitirá formar parte en el proyecto desde el inicio, conocer las necesidades del equipo de desarrollo (y viceversa) y ya estaréis un paso más cerca de decir que estáis aplicando DevOps, que de cara a la galería no está tan mal. 

Si queréis un detalle más técnico sobre IaC y Terraform, contáis con una serie de posts sobre el tema en nuestro blog más técnico: En mi Local Funciona.

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.