Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Infraestructura como código con Terraform

Infraestructura como código con Terraform

En un mundo donde la infraestructura de TI se mueve rápidamente hacia soluciones basadas en la nube y donde la automatización es esencial, la gestión manual de recursos se ha vuelto impráctica e ineficiente. Entra en escena Terraform, una herramienta de código abierto que permite a los equipos definir y proporcionar infraestructura de manera declarativa, usando un lenguaje de configuración simple. En esta charla, exploraremos cómo Terraform está revolucionando la forma en que implementamos y administramos infraestructuras, permitiendo a los equipos modelar, compartir y versionar sus configuraciones de infraestructura de manera coherente. Discutiremos conceptos clave como el ciclo de vida de la infraestructura, la planificación y el estado. Además, abordaremos mejores prácticas y demostraremos cómo Terraform se integra perfectamente con las principales plataformas de nube.

Nacho Álvarez

February 26, 2021
Tweet

More Decks by Nacho Álvarez

Other Decks in Programming

Transcript

  1. ÍNDICE • ¿Infraestructura como código? • Gestión de configuración vs

    orquestación • Introducción general a Terraform • Ciclo de vida • Funcionamiento de Terraform • Conceptos clave en Terraform • Ejemplos de uso • Utilizando Terraform con AWS EKS • Conclusiones • Webgrafía
  2. ¿Infraestructura como código? • Infrastructure as Code (IaC) es la

    automatización de los cambios y el despliegue de infraestructura mediante la definición del estado de los recursos y sus relaciones en código • Los recursos en la nube se crean o modifican cuando ejecutas el código • El código puede ejecutarse en cualquier momento y la herramienta que usemos se preocupará de encontrar las diferencias entre la infraestructura deseada en el código y la infraestructura actual en la nube, estructurando los pasos para hacer el estado actual igual al estado deseado • Para que esto tenga sentido, los recursos creados no deben modificarse después a mano (inmutable infraestructure) 3
  3. ¿Infraestructura como código? • Beneficios de IaC o Despliegue: eliminar

    el provisionamiento manual con los proveedores de la nube conforman una velocidad de despliegue superior o Recuperación: identificar problemas en la configuración conlleva rápida recuperación de posibles errores o Consistencia: desplegar recursos es lo mismo cada vez o Modificación: modificar recursos puede tener un rápido tiempo de respuesta o Reusabilidad: reusar partes de la infraestructura en proyectos futuros o Control de versiones: almacenar el código de la infraestructura en SCV o Visibilidad: escribir configuración como código actúa como documentación 4
  4. Gestión de configuración vs orquestación • Ansible, Puppet y Chef

    se consideran herramientas de Gestión de la Configuración y sirven para instalar y gestionar software en instancias de servidores existentes • Herramientas como Terraform o CloudFormation se consideran orquestadores. Sirven para provisionar las instancias de servidores, dejando el trabajo de config a las otras herramientas. • Estas dos categorías no se excluyen, las herramientas de gestión de configuración pueden realizar cierto grado de aprovisionamiento y las herramientas de orquestación pueden realizar cierto grado de gestión de configuración. • Ambas tareas, gestión de configuración y orquestación forman parte del ciclo de vida de las aplicaciones y la infraestructura en un equipo DevOps. Ambas son tareas de automatización, pero con enfoques distintos. 5
  5. Introducción general a Terraform • Terraform es una herramienta de

    HashiCorp para construir, combinar y poner en marcha de manera segura y eficiente la infraestructura. • Desde servidores físicos a contenedores hasta productos SaaS (Software como un Servicio), Terraform es capaz de crear y componer todos los componentes necesarios para ejecutar cualquier servicio o aplicación. • Se define la infraestructura completa como código, incluso si se extiende a múltiples proveedores de servicios. Por ejemplo, los servidores pueden estar en Openstack, el DNS en Google Cloud, los contenedores en AWS... • Terraform construirá todos los recursos a través de estos proveedores en paralelo 6
  6. Ciclo de vida • Init => inicializa el directorio de

    trabajo que albergará todos los ficheros de configuración. • Plan => crea un plan de ejecución para alcanzar un estado deseado en la infraestructura. Se muestran los cambios en los ficheros de configuración que lograrían el estado deseado. • Apply => Realiza los cambios en la infraestructura tal y como se definieron en el plan, y la infraestructura alcanza entonces el estado deseado. • Destroy => Elimina todos los recursos de la infraestructura. 7
  7. Conceptos clave en Terraform • Variables: par clave-valor utilizado por

    los módulos para personalización. • Provider: un plugin para interaccionar con APIs de servicio y acceder a sus recursos relacionados. • Module: una carpeta con plantillas Terraform en la que se definen las configuraciones. • State: información cacheada sobre la infraestructura gestionada por Terraform y sus configuraciones relacionadas. • Resources: bloque de uno o más objetos de infraestructura (instancias, VPCs, etc.) que se utilizan para la configuración y gestión de la infraestructura. • Data Source: los implementan los Providers para devolver información en objetos externos a Terraform. • Output Values: valores de retorno de un módulo Terraform que puede ser utilizado por otras configuraciones. • Plan: una de las etapas donde se determina qué se necesita crear, actualizar o destruir para moverse del estado actual al deseado en la infraestructura. 9
  8. Ejemplos de uso PRIMER ROUND 1. Creamos una máquina en

    EC2 2. Añadimos configuración vía grupo de seguridad 3. Ejecutamos comandos dentro de la máquina 11
  9. 12 Ejemplos de uso SEGUNDO ROUND 1) https://github.com/wheelq/tf-aws-lab-modules/tree/main/s3/basic/examples/01_basic VS Official

    Registry https://registry.terraform.io/modules/chgangaraju/cloudfront-s3-website/aws/latest 2) CUSTOM SOLUTION! Outputs – Ampliación de salidas para utilizar módulo
  10. 13 Utilizando Terraform con AWS EKS TERCER ROUND 1. Revisamos

    solución propuesta 2. Acoplamiento con CI/CD 3. Puntos de mejora
  11. Conclusiones • Eficiencia: X máquinas en Producción vs 2 nodos

    en entornos previos • Autoescala asegurada – necesario realizar pruebas de carga • Probable ahorro de costes • Acoplamiento con CI/CD asegura homogeneidad en el flujo completo • Necesidad de reescribir algunas partes en HCL • Elimina síndrome “And where was that?” • La generación de una nueva infraestructura es trivial • La modificación de parámetros de configuración para la infraestructura se simplifica enormemente 15
  12. Webgrafía • https://www.digitalocean.com/community/tutorials/how-to-structure-a-terraform-project • https://www.digitalocean.com/community/conceptual_articles/infrastructure-as-code-explained • https://geekflare.com/terraform-for-beginners/ • https://galvarado.com.mx/post/tutorial-infraestructura-como-c%C3%B3digo-con-terraform/ •

    https://www.adictosaltrabajo.com/2020/06/19/primeros-pasos-con-terraform-crear-instancia- ec2-en-aws/ • https://www.ibm.com/cloud/blog/chef-ansible-puppet-terraform • https://linoxide.com/tools/upload-files-to-s3-using-terraform/ • https://registry.terraform.io/modules/chgangaraju/cloudfront-s3-website/aws/latest 16