Terraform II
Después de una breve introducción a Terraform, creo que la mejor manera de entender como funciona es con un ejemplo simple.
Pues vamos a ello con un ejemplo utilizando un provider , en este caso Docker.
Necesitamos:
Preparación
Para empezar lo haremos con algo sencillo. Como somos gente organizada vamos a crear un directorio para nuestra receta con dos archivos ( container.tf y provider.tf )
mkdir -p terraform/docker && cd terraform/docker && touch container.tf && touch provider.tf
Abrimos con nuestro editor provider.tf y en el dreclaramos el proveedor de la siguiente manera:
# provider
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "2.15.0"
}
}
}
provider "docker" {
host = "unix:///var/run/docker.sock"
}
A continuación editamos container.tf y colocaremos el siguiente contenido:
# Contenedor
resource "docker_container" "hello_world" {
name = "cduser_hello_world"
image = "tutum/hello-world"
# Puerto del contenedor que vamos a exponer
ports {
internal = 80
external = 80
}
}
Como se puede observar, se ejecutaran las siguientes tareas:
- Descargamos la imagen de Docker “tutum/hello-world”
- Exponemos el puerto 80 del contenedor en el puerto 80 local de nuestra maquina
Desplegamos
Una vez que tenemos todo preparado vamos al lio:
Iniciamos:
terraform init
Planificamos:
terraform plan
Aplicamos:
terraform apply
Comprobamos:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0282aeb3e121 tutum/hello-world "/bin/sh -c 'php-fpm…" 18 seconds ago Up 16 seconds 0.0.0.0:80->80/tcp cduser_hello_world
Vamos al navegador y ejecutamos http://localhost y debería aparece la imagen de Hello World del contenedor:
Como ya vemos que todo funciona, damos por terminada la practica. Destruimos la infraestructura.
terraform destroy
Comprobamos:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Aqui podemos ver el proceso completo:
Bueno pues por ahora ya hemos terminado, espero vernos en la próxima.