Contenido

Objetivo

Comprender la importancia de los espacios de trabajo (workspaces), para el adecuado manejo de diversos ambientes con un mismo set de archivos de configuración de infraestructuras, así como el uso y aprovechamiento de módulos para reutilizar configuraciones que puedan ser utilizadas en diversos entornos.

Descripción

Terraform al ser programado por desarrolladores experimentados viene con esta filosofía en mente, y para esto nos ofrece dos características muy útiles al momento de escribir los archivos de configuración para nuestras infraestructuras, los espacios de trabajo (workspaces) y los módulos. Las dos características que nos ayudan a reducir la duplicidad de código al manejar distintos entornos usando los mismos archivos de configuración, pero diferentes valores para los recursos de la infraestructura al momento de crearlas para diversos ambientes, por ejemplo, desarrollo y producción.

También vas a aprender todo lo que necesitas para desarrollar módulos de Terraform de tal forma, que vas a poder diseñarlos, así como utilizar el ya existente mundo de módulos disponibles desarrollados por Terraform o la comunidad. Los módulos puedes llegar a verlos como una especie de métodos o funciones con un propósito en particular.

Explicación

Haz clic para revisar la explicación.

IaC usando Terraform (workspaces y módulos)

Recursos adicionales

Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.

Revisa el siguiente video:

Para conocer más sobre laC usando Terraform (workspaces y módulos), revisa el siguiente video:

Will Brock. (2020, 2 de julio). Workspaces | Terraform Tutorial | #16 [Archivo de video]. Recuperado de https://youtu.be/JmfEKEYdxKU

Actividad

Objetivo

Generar un módulo para la creación de una máquina virtual en AWS y destruirla.

Instrucciones

Requisitos:

  • Tener una cuenta gratuita o de paga de AWS con perfil configurado
El siguiente enlace es externo a la Universidad Tecmilenio,
al acceder a éste considera que debes apegarte a sus términos y condiciones.



  • Tener instalado Terraform
El siguiente enlace es externo a la Universidad Tecmilenio,
al acceder a éste considera que debes apegarte a sus términos y condiciones.


  • Tener un editor compatible como Visual Studio Code https://code.visualstudio.com/ con plugin instalado para Terraform
El siguiente enlace es externo a la Universidad Tecmilenio,
al acceder a éste considera que debes apegarte a sus términos y condiciones.


El siguiente enlace es externo a la Universidad Tecmilenio,
al acceder a éste considera que debes apegarte a sus términos y condiciones.


  • Acceso a Internet

Paso 1.

Hacer una carpeta llamada terraform que contenga un archivo llamado “main.tf” y un archivo llamado “prod.tfvars” y una carpeta llamada “vm” con un archivo llamado “main.tf”.

Paso 2.

En el archivo terraform/main.tf vas a escribir la variable de entrada para pasar el ambiente como parámetro, las variables necesarias para generar la máquina virtual, y el bloque del módulo “vm” para la generación de una máquina virtual.

 

# terraform/main.tf

variable "ambiente" {}
variable "ami_id" {}

module "vm" {
source = "./vm"

  ambiente = var.ambiente
ami_id = var.ami_id
}


Tabla 15. Bloque de invocación de módulo

 

Paso 3.

En el archivo terraform/prod.tfvars vas a escribir las variables que vas a necesitar para crear la máquina virtual y sus valores por defecto. El nombre de la AMI lo puedes encontrar en https://cloud-images.ubuntu.com/locator/ec2/ pero te recomiendo utilizar la ami-0d73480446600f555

 

# terraform/prod.tfvars
ambiente = "prod"
ami_id   = "ami-0d73480446600f555"


Tabla 16. Variables para configuración de módulo.

 

El uso y descarga del software deberá apegarse a los términos y condiciones del sitio oficial del fabricante y su uso será responsabilidad de quien lo descargue. Tecmilenio no tiene licencia ni posee los derechos sobre dicho software.

 

Paso 4.

En el archivo terraform/vm/main.tf vas a ingresar el siguiente bloque, para la generación de una máquina virtual en AWS.

 

# terraform/vm/main.tf
variable "ambiente" {}
variable "ami_id" {}

resource "aws_instance" "maquina-virtual" {
ami           = var.ami_id
instance_type = "t2.micro"

  tags = {
Name = "Hola Mundo [${var.ambiente}]"
}
}

 

Tabla 17. Archivo de configuración de módulo

 

Paso 5.

En la consola, correr terraform init y revisar que Terraform se inicialice correctamente con el proveedor “aws” y el módulo “vm”.

Paso 6.

En la consola correr terraform plan -var-file=prod.tfvars y terraform apply -var-file=prod.tfvars para generar la máquina virtual, al revisar la consola de AWS debería de verse así.


Imagen 1. Consola de AWS con listado de instancias de EC2
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

 

Paso 7.

Ejecuta terraform destroy para eliminar el bucket que ya no vas a utilizar. Recuerda que tener recursos que no necesitas en las nubes informáticas puede incurrir en costos no deseados

Checklist
  • Crear los archivos necesarios para el módulo “vm” y la creación de la máquina virtual usando Terraform.
  • Aprovisionar una máquina virtual en AWS y la viste corriendo en la consola de AWS.
  • Eliminar la máquina virtual recién creada