La gestión de infraestructura ha cambiado con Terraform. Este permite crear infraestructuras con código. Terraform es de código abierto. Ayuda a crear grandes infraestructuras usando un lenguaje sencillo.1 Se conoce esta práctica como Infraestructura como Código (IaC). Hace el proceso de crear y gestionar infraestructuras seguro y eficiente, ya sea con servidores físicos o en la nube.1

Terraform sirve para construir, combinar y poner en marcha infraestructuras de forma segura. Puede trabajar con cualquier tipo de infraestructura representada como un recurso.1 Su función de importación permite manejar infraestructura ya en uso. Esto es útil cuando se quiere empezar a usar Terraform en un proyecto existente.1

Conceptos Clave

Definición de Infraestructura en Archivos de Configuración

: Terraform deja definir toda la infraestructura en archivos. Esto facilita compartir y reutilizar blueprints de infraestructura.

Despliegue Multiplataforma

: Terraform trabaja con múltiples proveedores de servicios en la nube. Así, permite un despliegue en diferentes plataformas.

Gestión de Recursos en la Nube

: Terraform maneja infraestructuras de bajo y alto nivel. Puede gestionar instancias, almacenamiento, redes y más. Incluso, trabaja con entradas de DNS y características de SaaS.

Automatización de Infraestructura

: Terraform crea un plan de ejecución para los cambios. Esto automatiza el proceso con poca necesidad de intervención humana.

Colaboración en Equipo y Gestión de Cambios

: Al usar infraestructura como código, el trabajo en equipo mejora. Además, la gestión de cambios es más fácil porque todo se documenta y se versiona.

¿Qué es la Infraestructura como Código?

La Infraestructura como Código (2) es una forma automatizada de desplegar infraestructura. Usando scripts o herramientas declarativas, se puede ejecutar en una o muchas máquinas. Esto reduce riesgos y acelera los despliegues.2

Definición y beneficios de la Infraestructura como Código

Según una fuente, es usar scripts para configurar máquinas virtuales fácilmente. Hace la gestión de la infraestructura de forma automática, evitando el trabajo manual.1 La infraestructura así creada es más estable y se actualiza mejor, gracias a una gestión más sencilla.1

Otra fuente destaca que con la Infraestructura como Código, se logra infraestructura de alta calidad. Además, esta infraestructura es muy flexible y fácil de ampliar.1 Maximiza la eficiencia y previene errores por parte de humanos.3

Diferencias entre Gestión de Configuración y Orquestación

Las herramientas de gestión de configuración, como Chef o Ansible, instalan y controlan software en servidores. Por otro lado, herramientas de orquestación como Terraform se encargan de poner en marcha servidores, sin tocar su configuración.2

Introducción a Terraform

Terraform es un software libre que crea infraestructuras complejas. Lo hace desde un lenguaje de alto nivel, conocido como Infraestructura como Código1. Esta herramienta ayuda a construir la infraestructura de forma segura. Se puede aplicar en servidores, contenedores e incluso productos SaaS4.

¿Qué es Terraform?

Terraform es una herramienta de Infraestructura como Código creada por HashiCorp4. Con ella, se puede definir y preparar infraestructuras enteras con facilidad4. Es compatible con varios proveedores como AWS, Azure y GCP4. Todo se hace con un lenguaje llamado HCL, fácil de entender4.

Principales características de Terraform

Terraform incluye funciones como Infraestructura como Código y Planes de Ejecución4. También tiene un Gráfico de recursos y Automatización de cambios4. Tiene muchos proveedores, más de cien4. Sigue un ciclo de vida y tiene componentes como Terraform Core y Proveedores4.

Además, cuenta con comandos como apply, destroy, plan, init y validate4. Terraform automatiza la creación y gestión de recursos en la nube4.

Terraform es una gran ayuda para los ingenieros. Les permite definir, desplegar y gestionar infraestructuras con facilidad1. Trabaja con muchos proveedores. Es eficaz y útil para trabajar con diversas tecnologías143.

Instalación de Terraform

Para empezar, Terraform se instala en Linux Fedora 29. Veamos cómo hacerlo.1

  1. Primero, baja el paquete Terraform para Linux 64-bit desde su sitio oficial.1
  2. Luego, crea un lugar para Terraform en /opt/terraform.1
  3. Después, mueve el archivo bajado a este nuevo directorio.1
  4. A continuación, descomprime el archivo.1
  5. Seguido, añade el directorio de Terraform a PATH.1
  6. Finalmente, revisa que todo haya ido bien con terraform –version.1

¡Listo! Con estos pasos, instalar Terraform en Linux Fedora es fácil.1

instalación Terraform

Gestión de Infraestructura con Terraform: Tutorial Paso a Paso

Archivos de configuración en Terraform

Terraform usa archivos de texto con la extensión «.tf» para definir y ajustar la infraestructura.1 Estos archivos usan el lenguaje HCL. Esto facilita compartir y reusar el código, como cualquier otro software.1

Proveedores de Terraform

Los proveedores entienden cómo Terraform se conecta con diferentes plataformas y crean los recursos necesarios.5 Hay muchos proveedores como AWS, GCP, Azure, y otros servicios conocidos.1

Inicializar el provider

Para comenzar a usar Google Cloud como proveedor, se necesita el comando terraform init. Este comando instala el plugin de Google Cloud en la carpeta .terraform del proyecto.1

Despliegue de una instancia con Terraform

Según la primera fuente, crear una instancia en Google Cloud con Terraform involucra usar el recurso google_compute_instance.5 En el ejemplo dado, se crea una máquina virtual con una dirección IP temporal.5

La fuente también explica cómo modificar el despliegue. Por ejemplo, se puede cambiar el tipo de máquina y añadir un espacio de almacenamiento.5

Para hacer los cambios, solo se necesita usar terraform apply. Al hacerlo, verás un plan con los ajustes y se aplicarán.5

Ejecutar un script de inicialización

Según la primera fuente, Terraform deja correr un script al crear una instancia. Esto permite cargar la instancia con paquetes necesarios.5 Por ejemplo, se puede crear una instancia instalando Docker y Docker Compose. Luego, se despliega una app PHP con una base de datos MySQL.5

Configurar reglas de firewall

Se establece un firewall con reglas para habilitar el tráfico de HTTP y SSH a la instancia. Esto se logra usando etiquetas asignadas a la instancia.5 Así, la instancia se hace accesible desde la red una vez configurada.

Aprovisionar una instancia con Docker y Docker Compose

El script mencionado también enseña cómo preparar la instancia con Docker y Docker Compose. Gracias a esto, se puede automatizar el despliegue de una web y su base de datos.5

script de inicialización

Importar recursos preexistentes en Terraform

La función de importar de Terraform permite tomar recursos ya en la nube y usarlos en Terraform.6 Es útil cuando ya tenemos infraestructura en uso y queremos manejarla con Terraform.

¿Por qué importar recursos de la nube?

El uso directo de la infraestructura en la nube es común debido a la complejidad de Terraform.6 Pero, importar con Terraform simplifica el proceso, actualizando el estado de los recursos.6 Además, otros sistemas de infraestructura como código también necesitan tiempo de aprendizaje.6

Importar una instancia EC2 de AWS

Para importar una instancia EC2 de AWS, primero se debe crear la configuración base. Después, con terraform import, se asocia el recurso real con Terraform.6 Esto actualiza el estado de Terraform para futuras acciones.6

En el caso de una instancia EC2, se importa con su nombre, ID, tipo y la VPC a la que pertenece.6 Luego, se muestra cómo se configura Terraform para AWS y cómo iniciar la importación.6

Ajustar la configuración para reflejar el recurso importado

Al importar con Terraform, no se crean automáticamente los archivos necesarios.6 Esto quiere decir que hay que crear manualmente la configuración correcta para los recursos nuevos.6 El método de mapeo con el comando de importación de Terraform ayuda a entender este proceso.6

Es clave modificar los atributos para evitar errores al importar.6 También, es esencial asegurar que la configuración sea correcta para no duplicar recursos.6

Provisionamiento de Infraestructura como Código

La Infraestructura como Código permite definir toda la infraestructura en archivos. Estos archivos son como texto y se pueden guardar como otros tipos de código.1 Así, es fácil compartir y reusar los planos de infraestructura. La infraestructura se describe en un lenguaje sencillo.1

1 Terraform puede crear todos los componentes que necesita cualquier servicio o app. Incluye cosas como computadoras, almacenamiento o redes, y funciones más avanzadas.7 Esto es ideal para gestionar varios servicios de nube a la vez.

Usar Infraestructura como Código mejora la calidad y consistencia de la infraestructura. Esto reduce errores y hace todo más eficiente.1 Terraform también permite cambios rápidos y apagar muchas máquinas en poco tiempo.1

1 Terraform es diferente de herramientas como Chef y Ansible, pero juntas trabajan bien. Terraform es bueno por su forma de codificar, planes antes de cambios, y su diseño de recursos.1 Esto lo coloca como herramienta exitosa para gestionar cualquier tipo de infraestructura.

Terraform es compatible con varios sistemas operativos. Puede ejecutarse en diferentes entornos de implementación.1 Igualmente, trabaja con una gran variedad de proveedores, desde servidores hasta herramientas en la nube.1 Esto hace que sea muy adaptable y flexible.

Hoy en día, Terraform es muy importante en DevOps.1

Gestión del Ciclo de Vida de la Infraestructura

La Infraestructura como Código trae las ventajas de DevOps a la infraestructura. Incluye control de versiones y pruebas avanzadas. Terraform planifica los cambios necesarios. Así, se pueden automatizar actualizaciones sin errores, todo esto aplicando una idea de trabajo en equipo.

Automatización de Cambios

Terraform hace fácil automatizar los cambios. Genera un plan claro de lo que se necesita ajustar. Esto disminuye los errores y mejora la eficiencia.1

Colaboración en Equipo

Al usar infraestructura como código, se pueden aprovechar herramientas de trabajo colaborativo. Esto mejora la colaboración entre quienes manejan la infraestructura. Todos pueden trabajar juntos fácilmente.

Gestión de Cambios

Si la infraestructura se define de esta manera, los cambios quedan registrados y visibles.4 Se facilita la aprobación y revisión de cambios. De esta forma, se mantiene el control del sistema a lo largo del tiempo.

Recursos adicionales de Terraform

Además de lo básico, Terraform tiene mucho más que ofrecer. Hay guías avanzadas, como tutoriales para usar Terraform con Google Cloud4. También hay instrucciones para hacer despliegues sin servidor en Cloud Run con Terraform4. Estas guías ayudan a los usuarios a entender mejor Terraform y a usarlo en situaciones complicadas.

Importante saber que con Terraform y Cloud Run, solo se puede acceder al puerto 8080 del contenedor4. Así que, para que las imágenes con Docker funcionen bien en Cloud Run, deben trabajar a través de ese puerto. Saber estos datos técnicos es esencial cuando se usa Terraform en plataformas específicas.

En conclusión, hay muchos recursos adicionales más allá de lo común48. Estos son útiles para los que quieran saber más sobre Terraform y usarla en situaciones más complejas. También pueden ser de gran ayuda para quien busca conectar Terraform con distintos Terraform48 servicios en la nube.

Enlaces de origen

  1. https://galvarado.com.mx/post/tutorial-infraestructura-como-código-con-terraform/
  2. https://dareplanet.tech/insights/infraestructura-como-codigo-con-terraform/
  3. https://aprenderbigdata.com/terraform/
  4. https://geekflare.com/es/terraform-for-beginners/
  5. https://ualmtorres.github.io/SeminarioTerraform/
  6. https://blog.295devops.com/importar-infraestructura-a-terraform-paso-a-paso-step-by-step
  7. https://dev.to/eduardo2307/terraform-con-aws-en-espanol-46jb
  8. https://docs.newrelic.com/es/docs/more-integrations/terraform/terraform-intro/

Deja un comentario