Planteamos el tema: Terraform: definición, ventajas y características, lo cual puede ser útil para ofrecer servicios para administrar recursos de empresas.
Terraform: definición
Es una herramienta que ayuda a administrar varios servicios de infraestructura en la nube en forma de código, se debe de codificar la infraestructura, por lo que también se conoce como Infraestructura como código (IaC por sus siglas en inglés).
En términos simples, IaC es la capacidad de representar la infraestructura en el código del formulario.
Se puede tomar como ejemplo cualquier recurso informático en una nube determinada, como EC2 en AWS. Solicitar una instancia EC2 de AWS es una cuestión de registrarse en AWS, proporcionar una serie de valores e “Iniciar”. El “recurso” estará listo en unos minutos.
Siempre que podamos proporcionar esos valores a AWS, vivirán en ese proveedor de nube. Por su parte, 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 es 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 Hashicorp (HCL) para representar las 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-12345qwert”
instance_type = “t2.micro”
}
En este ejemplo se puede observar las capacidades de Terraform.
El código contiene dos bloques: el provider y resource. El bloque provider le permite a Terraform saber que se desea utilizar el awsproveedor en la región “us-west-1”.
Por otro lado, el bloque resource le permite a Terraform saber que de todos los recursos de infraestructura que ofrece AWS, se quiere 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í, se ha logrado expresar nuestra infraestructura en forma de código.
Características de Terraform
Orquestación
Al implementar varios servicios de un extremo a otro, Terraform actúa como el núcleo del proceso de orquestación cuando se trata de crear recursos en la nube.
Sintaxis declarativa
La infraestructura expresada en archivos de Terraform es declarativa, por lo que, los desarrolladores, no deben de comprender el proceso sino informar a Terraform sobre el estado deseado y Terraform se encarga de los pasos internamente.
Libertad en la nube
Dado que Terraform es compatible con diversas nubes, incluidas AWS, MS Azure y GCP, no hay 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á en un segundo plano, pero no se olvida.
Módulos
Terraform proporciona módulos que ayudan a reutilizar el código Terraform. Una infraestructura compleja se divide en varios módulos y cada módulo se puede reutilizar en diferentes proyectos.
Administración del Estado
Mientras Terraform crea y planifica la infraestructura, se mantiene el estado. Esto se puede compartir con otros miembros del equipo con fines de colaboración.
Terraform permite administrar el estado de forma remota, lo que ayuda a evitar confusiones entre los miembros del equipo en caso de que intenten recrear la infraestructura.
Aprovisionamiento
Terraform no es una herramienta de aprovisionamiento completa, pero ayuda con las actividades de aprovisionamiento. De bloques locales-ejecutivo y remota-exec permite ejecutar secuencias de comandos en línea. Los scripts en línea ayudan a instalar componentes de software después de la creación exitosa del recurso.
Esto es especialmente útil para ayudar a las herramientas de administración de configuración como Chef, Ansible y Salt Stack a instalar sus respectivos agentes.
Fuente abierta
Terraform está disponible para su uso como software de código abierto. También tiene una versión Enterprise.
Leíste: Terraform: definición, ventajas y características, te recomendamos: Declaración Switch en JavaScript: con ejemplo de código
Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode