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.
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.
Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.
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
Generar un módulo para la creación de una máquina virtual en AWS y destruirla.
Requisitos:
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
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