Según la Wikipedia, la Infraestructura como Código (Infrastructure as Code, en Inglés) es: el proceso de gestión y aprovisionamiento de centros de datos informáticos a través de archivos de definición legibles por máquina, en lugar de configuración de hardware físico o herramientas de configuración interactiva.
Básicamente:
- Es la capacidad de aprovisionar y respaldar su infraestructura de computación a través de código en lugar de procesos y configuraciones manuales.
- Permite definir el estado deseado de su infraestructura sin incluir todos los pasos para llegar a ese estado.
- Automatiza la administración de la infraestructura para que los desarrolladores puedan centrarse en crear y mejorar las aplicaciones en lugar de administrar los entornos.
Enfoques diferentes de la infraestructura como código
Declarativa
La IaC declarativa permite al desarrollador describir los recursos y la configuración que componen el estado final de un sistema deseado.
A continuación, la solución de IaC crea este sistema a partir del código de infraestructura. Esto hace que la IaC declarativa sea fácil de usar, siempre que el desarrollador sepa qué componentes y configuraciones necesita para ejecutar su aplicación.
Imperativa
La IaC imperativa permite al desarrollador describir todos los pasos para configurar los recursos y llegar al sistema y al estado de ejecución deseados.
Si bien no es tan sencillo escribir la IaC imperativa como la IaC declarativa, el enfoque imperativo se hace necesario en las implementaciones de infraestructuras complejas. Esto es especialmente cierto cuando el orden de los eventos es crítico.
¿Qué es Terraform?
Terraform es una herramienta de Infraestructura como Código (IaC) que permite definir, provisionar y gestionar infraestructura en la nube o en entornos locales mediante archivos de configuración.
Estos archivos, escritos en un lenguaje declarativo llamado HashiCorp Configuration Language (HCL), describen los recursos y servicios que se quieren desplegar, como servidores, redes, bases de datos, entre otros.
Terraform es capaz de interactuar con múltiples proveedores de servicios en la nube (como AWS, Azure, Google Cloud) y otras plataformas, facilitando la creación y modificación de infraestructuras complejas de forma eficiente.
Se relaciona con IaC porque permite automatizar y versionar la infraestructura de la misma manera que se gestiona el código de software, asegurando que las configuraciones sean reproducibles, auditables y escalables.
Instalando Terraform
En Linux:
Abrimos una terminal y escribimos estos comandos:
# Actualizar paquetes sudo apt-get update && sudo apt-get install -y gnupg software-properties-common # Añadir repositorio oficial de HashiCorp: wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list # Instalar Terraform sudo apt-get update && sudo apt-get install terraform # Verificar instalación terraform -v
Tendremos instalado Terraform en Linux.
En Mac OS:
Abrimos una terminal y escribimos estos comandos:
# Instala Terraform con Homebrew: brew tap hashicorp/tap brew install hashicorp/tap/terraform terraform -v
Tendremos instalado Terraform en Mac OS.
En Windows:
Para esto es necesario contar con Chocolatey instalado en nuestras máquinas:
choco install terraform
Verificamos la instalación:
terraform -v
Tendremos Terraform instalado.
Ahora imaginemos que queremos crear una instancia de EC2 en AWS. Usaremos Terraform para lograrlo. La extensión del programa será *.tf
main.tf
# Especifica el proveedor de nube, en este caso AWS provider "aws" { region = "us-east-1" # Región donde se va a desplegar la infraestructura } # Definir una clave SSH para conectarse a la instancia resource "aws_key_pair" "example" { key_name = "example-key" public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..." # Llave pública SSH } # Crear una instancia de EC2 en AWS resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" # Identificador de la AMI (Amazon Machine Image) instance_type = "t2.micro" # Tipo de la instancia # Configurar la clave SSH para la instancia key_name = aws_key_pair.example.key_name tags = { Name = "Terraform Example Instance" # Etiqueta para identificar la instancia } } # Salida para ver la IP pública de la instancia creada output "instance_public_ip" { value = aws_instance.example.public_ip }
1. Inicializamos el proyecto:
$ terraform init
2. Previsualizar los cambios (plan):
$ terraform plan
3. Aplicar cambios:
$ terraform apply
4. Destruir la infraestructura (cuando ya no sea necesaria):
$ terraform destroy
Hemos dado una breve explicación de lo que es IaC y cómo se relaciona con Terraform.
Enlaces:
https://chocolatey.org/https://www.terraform.io/
No hay comentarios:
Publicar un comentario