Ir al contenido

Infraestructura como código: Terraform y Ansible

La infraestructura como código ha proporcionado el marco necesario para la aparición de DevOps. La configuración de la infraestructura y el código de las aplicaciones cada vez están más interrelacionados, fomentando la colaboración entre los desarrolladores de software y los profesionales de sistemas. Esta relación está cambiando la forma de trabajar con la infraestructura, mejorando las arquitecturas y reduciendo los tiempos de entrega de los servicios.   

Dentro de las herramientas para gestionar la infraestructura, Terraform y Ansible son dos de las más utilizadas en DevOps. En este artículo hablaremos de qué es la infraestructura como código, cuáles son sus ventajas, y qué aportan las herramientas Terraform y Ansible en la forma de trabajar con infraestructuras.  

Qué es infraestructura como código ​

La infraestructura como código (IaC) es una parte fundamental de la programación en la nube y esencial para DevOps. En IaC se considera a los servidores, bases de datos, redes y otros elementos de infraestructura como si se tratasen de software, permitiendo que, ejecutando código, se pueda configurar toda una infraestructura en muy poco tiempo. La infraestructura como código automatiza, con la ejecución de código fuente, la provisión de componentes de infraestructura (código que define cómo queda configurada la infraestructura).  

Qué es DevOps ​

DevOps es una nueva metodología de trabajo en el desarrollo de software cuyo objetivo es reducir los tiempos de entrega, a la vez que se mejora la calidad del mismo y se minimizan los riesgos asociados. DevOps cambia el paradigma de programación de software, propiciando que todos los participantes en el desarrollo de software (desarrollo, operaciones TI, ingeniería y seguridad) interactúen y colaboren para garantizar una entrega continua de calidad (de nada sirve que el desarrollo de las aplicaciones sea ágil si luego hay un tiempo de espera a que las infraestructuras estén listas). 

Qué ventajas ofrece IaC

La infraestructura como código permite la configuración de una infraestructura, que normalmente necesita muchas horas de trabajo manual, en apenas unos minutos, gracias a la ejecución de código y el uso de tecnologías de empaquetado de aplicaciones como Docker. La configuración de máquinas virtuales que tradicionalmente se realizaba de forma manual, puede ser gestionada de forma programática y automatizada lo que proporciona una serie de beneficios dentro del marco DevOps, como:   

  • Velocidad. El despliegue será mucho más rápido al realizar la configuración de la infraestructura con la ejecución de scripts (reducción del tiempo de provisión, pasando de requerir días, a solo unos minutos).  
  • Ahorro de costes. El diseño de una infraestructura puede ser copiado y luego replicado en otra infraestructura, ahorrando los costes de un nuevo diseño y mantenimiento. También puede automatizarse IaC dentro de la entrega continua, permitiendo ejecutar las pruebas dentro de entornos que finalmente son destruidos. IaC facilita recrear la infraestructura en caso de desastre, automatizando la creación de entornos de Disaster Recovery.  
  • Reducción del riesgo. El despliegue manual de una infraestructura lleva inevitablemente aparejado una serie de errores que se eliminan automatizando el proceso. IaC permite realizar los tests necesarios antes del despliegue que minimizan los posibles errores en el despliegue y proporcionan una estructura más estable. 
  • Documentación compartida. En IaC la configuración de la infraestructura es documentada y compartida con el resto de miembros del proyecto.  

Qué es Terraform

Terraform es una herramienta que se utiliza para desarrollar, modificar y versionar infraestructura como código. Fue diseñada en el año 2014 con la idea de ser modular y flexible (permite acoplar distintos proveedores simultáneamente), bajo el modelo Open Source. 

Terraform está formado por recursos, providers (como AWS, Azure o Google Cloud), state (el estado de la infraestructura) y módulos (permite reutilizar un recurso, evitando re-escribir su configuración).  

Características de Terraform

Las principales características de Terraform son: 

  • Infraestructura como código. Guarda ficheros de configuración de los proveedores de infraestructuras. 
  • Dispone de planes de ejecución, donde informa de qué se va a realizar exactamente, antes de ejecutar dicho plan (qué máquinas virtuales se crean y se destruyen, por ejemplo).  
  • Dispone de un grafo de recursos donde poder visualizar la dependencia entre los distintos componentes (máquinas, bases de datos, etc.).  
  • Con los cambios automatizados se pueden realizar muchas funciones de forma programada (ejecutar test, despliegues a producción automáticos entre otros).  

Qué es Ansible

Ansible es una herramienta desarrollada por RedHat, muy útil para los DevOps ya que permite realizar una gestión de servidores, aplicaciones y configuraciones, de forma sencilla y eficiente. Esta herramienta facilita la aplicación de configuraciones paralelas, por lo que se podrán realizar configuraciones de múltiples servidores al mismo tiempo. Ansible es una plataforma de automatización que facilita el despliegue de software y la gestión de la configuración de infraestructuras. 

Ansible permite realizar todas las tareas que hay que realizar sobre servidores de forma automática, aumentando la productividad y disminuyendo los errores humanos que se producen en las instalaciones y configuraciones manuales.  

La herramienta Ansible tiene una arquitectura basada en controladores (máquinas virtuales) y nodos (servidor web o servidor de base de datos, por ejemplo). Los controladores se conectan con los nodos (con llaves SSH) haciendo uso del lenguaje Python, que solo deberá estar instalado en los nodos.  

Ventajas de Ansible ​

  • Es una herramienta de instalación sencilla y que tiene amplia compatibilidad con los distintos elementos que conforman la infraestructura.  
  • Soporta una gran variedad de distribuciones de Linux y en Mac (puede ejecutarse en Windows a través de máquina virtual).  
  • Es sencillo de utilizar, no son necesarios grandes conocimientos en programación.  
  • Utiliza el lenguaje YAML para tareas completas (lenguaje muy descriptivo que facilita su comprensión).  
  • Es un software libre (Open Source).  
  • Dispone de una amplia comunidad y múltiples módulos “out of the box”, que aumentan su funcionalidad.  
  • Tiene como objetivo principal la simplicidad y maximizar su facilidad de uso.  

Terraform y Ansible son dos herramientas potentes y de fácil uso que permiten desarrollar infraestructura como código.  Ambas son herramientas de automatización que facilitan el trabajo de DevOps, reduciendo los tiempos de provisión de infraestructuras (permitiendo incluso instalar múltiples infraestructuras con la ejecución del mismo código), minimizando los errores que se producen al aplicar configuraciones manuales y reduciendo los costes relacionados con la configuración y mantenimiento de la infraestructura. 

Terraform es más potente que Ansible, pues se trata de una herramienta de orquestación que permite acoplar distintos proveedores a la vez, mientras que Ansible se utiliza principalmente como herramienta de gestión de configuraciones (configuration management tool).  

Compartir esta publicación
Nuestros blogs
Qué es el vendor lock-in en Cloud Computing y cómo eliminar este riesgo