- La cuenta de Google Cloud ha sido creada
- La Service Account para Terraform ha sido creada
- Los permisos para la Service Account de Terraform han sido asignados - [ ] Compute Instance Admin (v1) - [ ] Google Cloud Key Management Service (KMS) API
- La Service Account key ha sido creada (API Manager -> Credentials)
- La Google Cloud Resource Manager API ha sido habilitada
$ terraform
$ terraform version
- Configuration Files
- State Files
- Providers
- Provisioners
- Modules
- Variables & Interpolation
- Execution Plans
Explicar el orden en el que Terraform carga los archivos en un directorio.
- El orden no importa
- Subdirectorios no se cargan.
Objetivo: familiarizarse con Terraform. Aprender cómo crear una configuración de Terraform, crear un plan de ejecución y aplicarlo.
-
Crear un archivo de configuración de Terraform llamado
main.tf
en el que definamos- Un bloque de proveedor de Google
- Un recurso
google_compute_instance
-
En consola
$ terraform plan
Explicar qué hace el plan execution.
-
En consola
$ terraform apply
-
Analizar el archivo
terraform.tfstate
-
Hacer algún cambio en la definición del
google_compute_instance
y aplicar los cambios. Analizar que hay cambios que hacen que el recurso se recreado
Objetivo: Destruir recursos en Google Cloud
-
En consola
$ terraform destroy
Objetivo: aprender que no importa en dónde se definan los recursos en Terraform, Terraform hala todo lo que haya en un directorio.
-
Extraer la configuración del proveedor de Google del archivo
main.tf
a un archivo llamadoproviders.tf
-
En consola
$ terraform plan
-
En consola
$ terraform apply
-
Renombrar el archivo
main.tf
acompute_instances.tf
y verificar conterraform plan
Objetivo: Crear una Compute Instance en Google Cloud, usando un environment name
como prefijo usando variables. E.g., el nombre de la instancia debería ser dev-web001
.
-
Escribir la definición del recurso en el archivo
compute_instances.tf
con el nombre del environment quemado en el códigoresource "google_compute_instance" "web" { name = "dev-web001" }
-
En consola
$ terraform plan
-
En consola
$ terraform apply
-
Crear un archivo llamado
vars.tf
y definir ahí la variableenvironment
variable "environment" { description = "The target environment that we're targetting with this Terraform plan" }
-
Interpolar la variable
environment
en el nombre de la Compute Instance en el archivocompute_instances.tf
resource "google_compute_instance" "web" { name = "${var.env}-web001" # se convierte en "dev-web001", "test-web001", etc. }
-
En consola
$ terraform plan
-
En consola
$ terraform apply
Objetivo: Crear múltiples instancias de Compute Instance en Google Cloud usando la variable
especial count
.
-
Agregar el campo
count
a la definición del recursogoogle_compute_instance
. -
Aplicar los cambios
-
Sacar el valor del campo
count
de una variable definida en el archivovars.tf
Objetivo: aprender sobre dependencias en Terraform. Crear Networks y Firewalls y asociarlos a las Compute Instances que hemos creado en los anteriores ejercicios.
- Crear una Network en Google Cloud
Importante:auto_create_subnetworks = true
- Crear una Firewall en Google Cloud. Allow incoming ping, SSH, HTTP & HTTPS traffic.
Para el campo
network
delgoogle_compute_firewall
, halar el nombre de la network con${google_compute_firewall.the-resource.name}
syntax.
Explicar cómo funciona el Resource Graph de Terraform.