¿Qué es IaC?

Las herramientas de infraestructura como código (IaC) le permiten administrar la infraestructura con archivos de configuración en lugar de a través de una interfaz gráfica de usuario.

IaC permite construir, cambiar y administrar su infraestructura de una manera segura, consistente y repetible mediante la definición de configuraciones de recursos que puede versionar, reutilizar y compartir.

Terraform es la infraestrcutura de HashoCorp como herramienta de código. Le permite definir recursos e infraestructura en archivos de configuración declarativa legibles por humanos y administra el ciclo de vida de su infraestructura.

¿Qué es Infraestructura como Código?

El uso de Terraform tiene varias ventajas sobre la administración manual de su infraestructura:

  • Terraform puede administrar la infraestructura en múltiples plataformas en la nube.
  • El lenguaje de configuración legible por humanos le ayuda a escribir código de infraestructura rápidamente.
  • El estado de Terraform le permite realizar un seguimiento de los cambios de recursos a lo largo de sus implementaciones.
  • Puede asignar sus configuraciones al control de versiones para colaborar de forma segura en la infraestructura.

Gestiona cualquier infraestructura

Los complementos de Terraform llamados proveedores permiten que Terraform interactúe con plataformas en la nube y otros servicios a través de sus interfaces de programación de aplicaciones (API).

HashiCorp y la comunidad Terraform han escrito a más de 1000 proveedores para administrar recursos en Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk y DataLog, solo por nombrar algunos.

Encuentre proveedores para muchas de las plataformas y servicios que ya usan en Terraform Registry. Si no encuentra el proveedor que está buscando, puede escribir el suyo.

Estandarice su flujo de trabajo de implementación

Los proveedores definen unidades individuales de infraestructura, por ejemplo, instancias informáticas o redes privadas, como recursos. Puede componer recursos de diferentes proveedores en configuraciones reutilizables de Terrafom denominadas módulos y administrarlos con un lenguaje y un flujo de trabajo coherentes.

El lenguaje de configuración de Terraform es declarativo, lo que significa que describe el estado final deseado para su infraestructura, en contraste con los lenguajes de programación procedimientales, que requieren instrucciones paso a paso para realizar tareas.

Los proveedores de Terraform calculan automáticamente las dependencias entre los recursos para crearlos o destruirlos en el orden correcto.

¿Por qué la IaC?

A medida que aumenta el número de proveedores de nube y sus servicios se vuelven más flexibles, se vuelven más importante poder administrar los recursos de su infraestructura de nube.

Terraform trabaja en el concepto de I_nfraestructura como Código (IaC)_. En términos simples, la IaC es la capacidad de representar su infraestructura en el código del formulario.

Tenemos como ejemplo cualquier recurso informático, en una nube determinada, como EC2 en AWS. Solicitar una instancia EC2 de AWS es cuestión de registrarse en AWS, proporcionar una serie de valores y hacer click en el botón “iniciar”. El “recurso” estará listo en unos minutos.

Siempre que podemos proporcionar esos valores a AWS, vivirán en ese proveedor de nube. Por supuesto, esta es la forma tradicional de hacer esto.

¿Por qué la Infraestructura como Código?

Terraform proporciona una forma de tomar estas credenciales y entradas en forma de configuraciones y procesarlas para crear un recurso en la nube de destino.

Estas configuraciones describen el recurso en un lenguaje que Terraform entiende. Las configuraciones son la forma en que puede declarar el estado deseado de su infraestructura, básicamente, la sintaxis “declarativa”.

Terraform utiliza las API del proveedor de la nube para crear el recurso.

Ventajas de Terraform

Terraform es un producto de HashiCorp y utiliza la sintaxis del lenguaje de configuración de HashiCorp (HCL) para representar la configuraciones.

En el siguiente ejemplo puede ver la representación de la instancia EC2 en su forma más simple.

provider "aws" { region = "us-west-1" } resource "aws_instance" "myec2" { ami = "ami-12345qwer" instance_type = "t2.micro" }

Ese simple ejemplo es suficiente para que comprendamos la capacidad de Terraform.

Ventajas de la Infraestructura como Código

El código anterior contiene dos bloques: el provider y resource.

El bloque provider le permite a Terraform saber que queremos utilizar el proveedor AWS en la región “us-west-1”.

El bloque resource le permite a Terraform saber que de todos los recursos de infraestructura que ofrece AWS, queremos crear un recurso de tipo “instancia” (EC2).

El primer parámetro lo representa en el bloque de recursos como “aws_instance”. El segundo parámetro es lo que hemos llamado el recurso, en este caso “myec2”.

El bloque de recursos tiene un par de argumentos que establecen la imagen de la máquina de AWS y el tipo de instancia utilizada para crear este recurso.

Aquí hemos logrado expresar nuestra infraestructura en forma de código. Repasemos algunas de las ventajas de IaC…

Dado que la creación de infraestructura ahora está condensada en archivos de configuración ( código, es más fácil de mantener, ya que ahora podemos aprovechar los sistemas de control de versiones como Git para colaborar y mantenerlos.

El tiempo necesario para la fase de planificación de la infraestructura se reduce ya que podemos escribir las configuraciones en poco tiempo. Terraform consume fácilmente estas configuraciones para crear recursos en la nube en el asunto durante unos minutos.

Los cambios en la infraestructura son más fáciles y comparables a los cambios en el código de la aplicación.

Las ventajas para el ciclo de vida de la gestión de aplicaciones en el caso del desarrollo de software también son aplicables a la infraestructura. Esto lo hace más eficiente.

Características de Terraform

  • Orquestación: Al implementar varios servicios de un extremo a otro, Terraform actúa como núcleo del proceso de orquestación cuando se trata de crear recursos en la nube.
  • Agnóstico de la nube: Dado que Terraform es compatible con la mayoría de las nubes, incluidas AWS, MS Azure y GCP, no tiene que preocuparse por los problemas de bloqueo de proveedores. El registro de Terraform proporciona la documentación para todos los proveedores de nube compatibles. Los patrones de sintaxis utilizados para codificar la infraestructura en varias nubes son los mismos, por lo que la curva de aprendizaje relacionada con las API específicas del proveedor está es un segundo plano, pero no se olvida.
  • Sintaxis declarativa: La infraestructura expresada en los archivos de Terraform es declarativa, por lo que, como desarrolladores, no debemos preocuparnos por hacer que Terraform comprenda los pasos necesarios para crear un recurso. Más bien, todo lo que tenemos que hacer es informar a Terraform sobre el estado deseado y Terraform se encarga de los pasos internamente.