Qué es Terraform y cómo instalarlo y utilizarlo en AWS EC2

Terraform es la herramienta «Infraestructura como Código (IaC)». Se utiliza para construir, gestionar y cambiar la infraestructura de forma segura y repetible manera.

Se utiliza para gestionar entornos con un lenguaje de configuración llamado HashiCorp Configuration Language (HCL) para realizar despliegues automatizados y legibles por humanos.

Terraform puede utilizarse para gestionar infraestructuras en múltiples nubes como AWS, GCP y otras. Terraform crea un archivo de estado que es la fuente de verdad para las configuraciones de los recursos. Esto significa que cada vez que se crean recursos, este archivo de estado se actualiza con el estado de los recursos que se están creando.

En este artículo veremos los pasos para instalar Terraform en Ubuntu y utilizarlo para crear una VPC en la nube de AWS.

Para aprender y saber más sobre Terraform haz clic aquí.

Requisitos previos

  1. Cuenta de AWS (Crea si no tienes una).
  2. Una Instancia EC2 (Haz clic aquí para aprender a crear una Instancia EC2)
  3. El acceso raíz a los servidores.
  4. ‘access_key’ & ‘secret_key’ de un Usuario IAM de AWS. (Haz clicaquí para aprender a crear un usuario IAM con ‘access_key& ‘secret_key’en AWS,)

Qué vamos a hacer

  1. Instalar Terraform
  2. Escribir los archivos de configuración de Terraform.
  3. Crear una VPC utilizando los archivos de configuración de Terraform
  4. Eliminar la VPC creada utilizando Terraform

Instalar Terraform

La instalación de Terraform es bastante sencilla y directa. Puedes encontrar el paquete adecuado para tu sistema desde aquí.

Antes de descargar el archivo vamos a instalar el paquete ‘wget’ y ‘unzip’ si no está disponible en el sistema utilizando los siguientes comandos.

apt-get update -y
apt-get install wget unzip -y

Actualizar paquetes

Vamos a crear un directorio dedicado ‘terraform’ en ‘/opt/’ donde podamos descargar el paquete

cd /opt/
mkdir terraform
cd terraform/

Descarga el paquete terraform con el comando ‘wget’ y descomprímelo.

wget https://releases.hashicorp.com/terraform/0.12.18/terraform_0.12.18_linux_amd64.zip
unzip terraform_0.12.18_linux_amd64.zip
ls -lt

Descargar Terraform

Una vez descomprimido el paquete que has descargado, verás un binario ‘terraform’. Mueve este binario a /usr/local/bin/.

Puedes verificar si la instalación se ha realizado con éxito o no utilizando el comando terraform pero comprobando su versión.

mv terraform /usr/local/bin/
terraform -v

Versión de Terraform

Escribe los archivos de configuración de Terraform

Crea un directorio dedicado donde puedas crear los archivos de configuración de terraform

mkdir terraform
cd terraform/

Utiliza un editor de tu elección y copia-pega las siguientes configuraciones para crear variables.tf, terraform.tfvars y main.tf

Crea ‘main.tf’, que es el responsable de crear la VPC en AWS. La siguiente configuración creará una VPC, una pasarela de Internet, una tabla de rutas, una zona de disponibilidad y un grupo de seguridad. Este main.tf leerá los valores de las variables devariables.tf yterraform.tfvars.

vim main.tf

provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}
resource "aws_vpc" "vpc" {
     cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "gateway" {
     vpc_id = "${aws_vpc.vpc.id}"
}
resource "aws_route" "route" {
     route_table_id         = "${aws_vpc.vpc.main_route_table_id}"
     destination_cidr_block = "0.0.0.0/0"
     gateway_id             = "${aws_internet_gateway.gateway.id}"
}
data "aws_availability_zones" "available" {}
resource "aws_subnet" "main" {
    count                   = "${length(data.aws_availability_zones.available.names)}"
    vpc_id                  = "${aws_vpc.vpc.id}"
    cidr_block              = "10.0.${count.index}.0/24"
    map_public_ip_on_launch = true
    availability_zone       = "${element(data.aws_availability_zones.available.names, count.index)}"
}
resource "aws_security_group" "default" {
     name        = "http-https-allow"
     description = "Allow incoming HTTP and HTTPS and Connections"
     vpc_id      = "${aws_vpc.vpc.id}"
     ingress {
         from_port = 80
         to_port = 80
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
     ingress {
         from_port = 443
         to_port = 443
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
}

Creavariables.tf’ que contiene la declaración de las variables.

vim variables.tf

variable "access_key" {
     description = "Access key to AWS console"
}
variable "secret_key" {
     description = "Secret key to AWS console"
}
variable "region" {
     description = "Region of AWS VPC"
}

Crea ‘terraform.tfvars’ que contienela definición de la variable definida en el archivoanterior.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XDX32PVJ6"
secret_key = "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"

Ahora deberías tener 3 archivos, a saber, variables.tf, terraform.tfvars y main.tf

Crea una VPC utilizando los archivos de configuración de Terraform

El primer comando a utilizar es «terraform init». Este comandodescarga e instala los plugins de los proveedores utilizados en la configuración. En nuestro caso es aws.

terraform init

Crear VPS con Terraform

El segundo comando a utilizar es ‘terraform plan’. Este comando se utiliza para ver los cambios que se producirán en la infraestructura.

terraformar plan

Plan de Terraformación

El comando «terraformar aplicar» creará los recursos en las aws mencionadas en el archivo main.tf. Se te pedirá que proporciones tus datos para crear los recursos.

terraformar aplicar

Terraformar Aplicar

Puedes ir a la consola de la VPC de AWS para verificar si se ha creado la VPC.

VPS creado con Terraform

Eliminar la VPC creada mediante Terraform

Si conoces más recursos necesarios que hayas creado utilizando la configuración mencionada en el archivo main.tf, puedes utilizar el comando «terraform destroy» para eliminar todos esos recursos.

terraform destruir

Destruye la terraformación

Conclusión

En este artículo hemos visto los pasos para instalar Terraform. También vimos la configuración necesaria para crear una VPC junto con algunos otros recursos relacionados con ella. Ahora también estamos familiarizados con la declaración y definición de variables.

También te podría gustar...