GithubHelp home page GithubHelp logo

globalic / ws-terraform-gce Goto Github PK

View Code? Open in Web Editor NEW

This project forked from containersolutions/ws-terraform-gce

0.0 1.0 0.0 8 KB

Workshop: Manage GCE with Terraform

License: Apache License 2.0

HCL 100.00%

ws-terraform-gce's Introduction

Google Cloud con Terraform

¿Qué es Terraform?

¿En dónde está la documentación de Terraform?

Arando el terreno

  • 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

Verificando la instalación

$ terraform
$ terraform version

Conceptos clave

  • Configuration Files
  • State Files
  • Providers
  • Provisioners
  • Modules
  • Variables & Interpolation
  • Execution Plans

¿Cómo se organizan las cosas en Terraform?

Explicar el orden en el que Terraform carga los archivos en un directorio.

  • El orden no importa
  • Subdirectorios no se cargan.

Ejercicio #1

Objetivo: familiarizarse con Terraform. Aprender cómo crear una configuración de Terraform, crear un plan de ejecución y aplicarlo.

  1. 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
  2. En consola

    $ terraform plan
    

Explicar qué hace el plan execution.

  1. En consola

    $ terraform apply
    
  2. Analizar el archivo terraform.tfstate

  3. 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

Ejercicio #2

Objetivo: Destruir recursos en Google Cloud

  1. En consola

    $ terraform destroy
    

Ejercicio #3

Objetivo: aprender que no importa en dónde se definan los recursos en Terraform, Terraform hala todo lo que haya en un directorio.

  1. Extraer la configuración del proveedor de Google del archivo main.tf a un archivo llamado providers.tf

  2. En consola

    $ terraform plan
    
  3. En consola

    $ terraform apply
    
  4. Renombrar el archivo main.tf a compute_instances.tf y verificar con terraform plan

Ejercicio #4

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.

  1. Escribir la definición del recurso en el archivo compute_instances.tf con el nombre del environment quemado en el código

    resource "google_compute_instance" "web" {
       name = "dev-web001"
    }
    
  2. En consola

    $ terraform plan
    
  3. En consola

    $ terraform apply
    
  4. Crear un archivo llamado vars.tf y definir ahí la variable environment

    variable "environment" {
       description = "The target environment that we're targetting with this Terraform plan"
    }
    
  5. Interpolar la variable environment en el nombre de la Compute Instance en el archivo compute_instances.tf

    resource "google_compute_instance" "web" {
       name = "${var.env}-web001" # se convierte en "dev-web001", "test-web001", etc.
    }
    
  6. En consola

    $ terraform plan
    
  7. En consola

    $ terraform apply
    

Ejercicio #5

Objetivo: Crear múltiples instancias de Compute Instance en Google Cloud usando la variable especial count.

  1. Agregar el campo count a la definición del recurso google_compute_instance.

  2. Aplicar los cambios

  3. Sacar el valor del campo count de una variable definida en el archivo vars.tf

Ejercicio #6

Objetivo: aprender sobre dependencias en Terraform. Crear Networks y Firewalls y asociarlos a las Compute Instances que hemos creado en los anteriores ejercicios.

  1. Crear una Network en Google Cloud
    Importante: auto_create_subnetworks = true
  2. Crear una Firewall en Google Cloud. Allow incoming ping, SSH, HTTP & HTTPS traffic. Para el campo network del google_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.

Resumen

Recursos

ws-terraform-gce's People

Contributors

mongrelion avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.