1. Introducción

Bienvenidos al primer post sobre Terraform de este Blog!

Veremos cómo configurar nuestras primera infraestructura como código utilizando como proveedor AWS. Levantaremos una máquina ec2 dentro de nuestra infraestructura y analizaremos la configuración mínima necesaria.
Os podéis descargar el código de mi GitHub que se encuentra aquí.

Tecnologías empleadas:

  • Terraform 0.12.0

2. Instalación

Lo primero que tenemos que hacer es descargar los binarios de Terraform, decomprimirlos y crear un enlace virtual dentro de /usr/local/bin

$ mv /Users/jorgehernandezramirez/Downloads/terraform_0.12.0_darwin_amd64.zip /opt
$ unzip /opt/terraform_0.12.0_darwin_amd64.zip
$ ln /opt/terraform /usr/local/bin/terraform
$ terraform -version
Terraform v0.12.0

3. Configuración

Configuración usuario aws

A continuación lo que tenemos que hacer es crear un usuario que llamaremos terraform dentro de la consola de amazon

tendrá permisos de administrador

Configuramos el acceso desde nuestro entorno local a través de las credenciales ACCESS_KEY_ID y SECRET_KEY_ID que obtenemos al crear el usuario. Para ello simplemente hacemos

$ aws configure
AWS Access Key ID: ****************   
AWS Secret Key ID: ****************  

Ficheros .tf

Fichero donde se especifica el proveedor aws así como la región

provider "aws" {
    region = "${var.AWS_REGION}"
}

Fichero de variables. Establecemos valores por defecto. Pueden ser cambiados a la hora de iniciar la creación de la infra.

variable "AWS_REGION" {
  default = "eu-west-1"
}
variable "AMIS" {
  type = "map"
  default = {
    us-east-1 = "ami-09693313102a30b2c"
    us-west-2 = "ami-09693313102a30b2c"
    eu-west-1 = "ami-09693313102a30b2c"
  }
}

Definición de la instancia que queremos crear. Especificamos el tipo de instancia. La ami la obtenemos de las variables de entorno.

resource "aws_instance" "example" {
  ami           = "${lookup(var.AMIS, var.AWS_REGION)}"
  instance_type = "t2.micro"
}

4. Ejecución

Inicializamos terraform para nuestros ficheros e iniciamos la creación de la infra.

$ terraform init
$ terraform apply

Pasado unos segundos deberíamos ver nuestra máquina

Para borrar la infra creada basta con

$ terraform destroy