arrow_back

Aspectos básicos de Terraform

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Aspectos básicos de Terraform

Lab 35 minutos universal_currency_alt 1 crédito show_chart Introductorio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP156

Labs de autoaprendizaje de Google Cloud

Descripción general

Terraform te permite crear, cambiar y mejorar infraestructura de forma segura y predecible. Es una herramienta de código abierto que codifica las APIs en archivos de configuración declarativa que se pueden compartir entre compañeros de trabajo, tratar como código, editar, revisar o cambiar de versión.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Comenzar a usar Terraform en Google Cloud
  • Instalar Terraform desde objetos binarios de instalación
  • Crear una infraestructura de instancia de VM con Terraform

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

¿Qué es Terraform?

Terraform es una herramienta para compilar y modificar infraestructuras, así como controlar sus versiones, de forma segura y eficiente. Permite administrar proveedores de servicios existentes y populares, además de soluciones internas personalizadas.

Los archivos de configuración le brindan a Terraform una descripción de los componentes necesarios para ejecutar desde una sola aplicación hasta un centro de datos completo. Terraform genera un plan de ejecución que describe lo que hará para alcanzar el estado deseado y, luego, lo ejecuta para compilar la infraestructura descrita. Cuando se producen cambios en la configuración, Terraform puede determinar qué se modificó y crear planes de ejecución incrementales que se puedan aplicar.

La infraestructura que puede administrar Terraform incluye componentes de niveles bajos (como instancias de procesamiento, almacenamientos y herramientas de redes) y altos (como entradas de DNS y funciones de SaaS).

Características clave

Infraestructura como código

La infraestructura se describe a través de una sintaxis de configuración de alto nivel. Esto permite que se controlen las versiones de un plano de tu centro de datos y que se lo trate de la misma forma que a cualquier otro fragmento de código. Además, la infraestructura se puede compartir y reutilizar.

Planes de ejecución

Terraform tiene un paso de planificación en el que se genera un plan de ejecución. El plan de ejecución muestra qué hará Terraform cuando se ejecute el comando apply. De esa forma, no habrá sorpresas cuando Terraform manipule infraestructura.

Gráfico de recursos

Terraform compila un gráfico de todos tus recursos y paraleliza la creación y modificación de todos los recursos no dependientes. Debido a esto, Terraform compila infraestructura de la forma más eficiente posible, y los operadores obtienen una mayor comprensión de las dependencias de sus infraestructuras.

Automatización de cambios

Se requiere muy poca interacción humana para poder aplicar conjuntos complejos de cambios en tu infraestructura. Con el plan de ejecución y el gráfico de recursos mencionados anteriormente, sabrás con exactitud qué cambios realizará Terraform y en qué orden, lo que ayudará a evitar una gran cantidad de posibles errores humanos.

Tarea 1: Verifica la instalación de Terraform

Terraform se incluye preinstalado en Cloud Shell.

  • Abre una pestaña nueva de Cloud Shell y verifica que Terraform esté disponible:
terraform

El resultado de ayuda debería ser similar a este:

Usage: terraform [--version] [--help] [args] The available commands for execution are listed below. The most common, useful commands are shown first, followed by less common or more advanced commands. If you're just getting started with Terraform, stick with the common commands. For the other commands, please read the help and docs before usage. Common commands: apply Builds or changes infrastructure console Interactive console for Terraform interpolations destroy Destroy Terraform-managed infrastructure env Workspace management fmt Rewrites config files to canonical format get Download and install modules for the configuration graph Create a visual graph of Terraform resources import Import existing infrastructure into Terraform init Initialize a Terraform working directory output Read an output from a state file plan Generate and show an execution plan providers Prints a tree of the providers used in the configuration push Upload this Terraform module to Atlas to run refresh Update local state file against real resources show Inspect Terraform state or plan taint Manually mark a resource for recreation untaint Manually unmark a resource as tainted validate Validates the Terraform files version Prints the Terraform version workspace Workspace management All other commands: debug Debug output management (experimental) force-unlock Manually unlock the terraform state state Advanced state management

Tarea 2: Crea infraestructura

Una vez que se haya instalado Terraform, podrás comenzar a crear infraestructura inmediatamente.

Configuración

El conjunto de archivos que se usa para describir la infraestructura en Terraform se conoce como Terraform configuration. En esta sección, escribirás tu primer archivo de configuración para iniciar una única instancia de VM. El formato de los archivos de configuración se puede encontrar en la Documentación del lenguaje de Terraform. Recomendamos usar JSON para crear los archivos de configuración.

  1. En Cloud Shell, crea un archivo de configuración vacío denominado instance.tf con el siguiente comando:
touch instance.tf
  1. En la barra de herramientas de Cloud Shell, haz clic en Abrir editor.
    Para pasar de Cloud Shell al editor de código, haz clic en Abrir editor o Abrir terminal según sea necesario, o bien haz clic en Abrir en una nueva ventana para dejar el editor abierto en una pestaña distinta.

  2. Haz clic en el archivo instance.tf, agrégale el siguiente contenido y reemplaza <PROJECT_ID> por el ID del proyecto de Google Cloud:

resource "google_compute_instance" "terraform" { project = "{{{project_0.project_id}}}" name = "terraform" machine_type = "e2-medium" zone = "{{{project_0.default_zone}}}" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } }

Esta es una configuración completa y Terraform está listo para aplicarla. La estructura general debe ser intuitiva y directa.

El bloque "resource" en el archivo instance.tf define un recurso que existe dentro de la infraestructura. Un recurso puede ser un componente físico, como una instancia de VM.

El bloque "resource" tiene dos cadenas antes de la apertura del bloque: tipo de recurso y nombre del recurso. Para este lab, el tipo de recurso es google_compute_instance y el nombre es terraform. El prefijo del tipo se asigna al proveedor: google_compute_instance le indica automáticamente a Terraform que lo administra el proveedor Google.

En el bloque “resource”, se encuentra la configuración necesaria para el recurso.

  1. En Cloud Shell, verifica que se haya agregado tu archivo nuevo y que no haya otros archivos *.tf en el directorio, ya que Terraform los cargará todos:
ls

Inicialización

El primer comando que se debe ejecutar para obtener un archivo de configuración nuevo (o después de verificar uno existente desde el control de versiones) es terraform init, que inicializará diversos parámetros de configuración y datos locales que se usarán en comandos posteriores.

Terraform usa una arquitectura basada en complementos para admitir la gran cantidad de proveedores de servicios y de infraestructura disponibles. Cada “proveedor” es su propio objeto binario encapsulado distribuido independientemente de Terraform. El comando terraform init descargará e instalará automáticamente cualquier objeto binario de proveedor para que los proveedores lo usen en la configuración, que en este caso es solo el de Google.

  1. Descarga el objeto binario y, luego, instálalo con el siguiente comando:
terraform init

Se descargará y se instalará el complemento de proveedor de Google en un subdirectorio del directorio de trabajo actual, junto con varios archivos de contabilidad. Verás el mensaje "Initializing provider plugins". Terraform sabrá que estás realizando la ejecución desde un proyecto de Google y obtendrá los recursos correspondientes.

Installing hashicorp/google v4.77.0... Nota: El número de tu versión puede ser más alto.

En el resultado, se especifica qué versión del complemento se instalará y se sugiere especificar esa versión en archivos de configuración futuros para asegurarse de que terraform init instale una versión compatible.

  1. Crea un plan de ejecución con el siguiente comando:
terraform plan

Terraform realiza una actualización (salvo que esté explícitamente inhabilitada) y, luego, determina las acciones necesarias para lograr el estado deseado que se especifica en los archivos de configuración. Este comando es un modo conveniente de comprobar si un plan de ejecución de un conjunto de cambios coincide con tus expectativas sin que debas modificar el estado o los recursos reales. Por ejemplo, puedes ejecutar el comando antes de confirmar un cambio en el control de versiones para garantizar que se comportará según lo esperado.

Nota: Se puede usar el argumento opcional -out para guardar el plan generado en un archivo y ejecutarlo más tarde con terraform apply.

Aplica cambios

  1. Ejecuta este comando en el mismo directorio que el archivo instance.tf que creaste:
terraform apply

En este resultado, se muestra el plan de ejecución, que describe las acciones que Terraform realizará para cambiar la infraestructura real de modo que coincida con la configuración. El formato del resultado es similar al formato diff que generan herramientas como Git.

El signo + junto a google_compute_instance.terraform significa que Terraform creará ese recurso. A continuación, se encuentran los atributos que se configurarán. Cuando el valor que se muestra es <computed>, no se sabrá el valor hasta que se cree el recurso.

Resultado de ejemplo:

An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_instance.default will be created + resource "google_compute_instance" "default" { + can_ip_forward = false + cpu_platform = (known after apply) + deletion_protection = false + guest_accelerator = (known after apply) + id = (known after apply) + instance_id = (known after apply) + label_fingerprint = (known after apply) + machine_type = "e2-medium" + metadata_fingerprint = (known after apply) + name = "terraform" + project = "qwiklabs-gcp-42390cc9da8a4c4b" + self_link = (known after apply) + tags_fingerprint = (known after apply) + zone = "us-west1-c" + boot_disk { + auto_delete = true + device_name = (known after apply) + disk_encryption_key_sha256 = (known after apply) + kms_key_self_link = (known after apply) + source = (known after apply) + initialize_params { + image = "debian-cloud/debian-11" + labels = (known after apply) + size = (known after apply) + type = (known after apply) } } + network_interface { + address = (known after apply) + name = (known after apply) + network = "default" + network_ip = (known after apply) + subnetwork = (known after apply) + subnetwork_project = (known after apply) + access_config { + assigned_nat_ip = (known after apply) + nat_ip = (known after apply) + network_tier = (known after apply) } } + scheduling { + automatic_restart = (known after apply) + on_host_maintenance = (known after apply) + preemptible = (known after apply) + node_affinities { + key = (known after apply) + operator = (known after apply) + values = (known after apply) } } } Plan: 1 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:

Si se creó correctamente el plan, Terraform se pausará y esperará a obtener la aprobación antes de continuar. En un entorno de producción, si alguna parte del plan de ejecución parece incorrecta o peligrosa, lo más seguro es cancelar la operación en esta instancia. No se realizaron cambios en tu infraestructura.

  1. En este caso, el plan parece aceptable, así que escribe yes cuando recibas la solicitud de confirmación para continuar.
    Ejecutar el plan tardará algunos minutos porque Terraform espera a que esté disponible la instancia de VM.

Después de eso, Terraform habrá terminado.

Prueba la tarea completada

Haz clic en Revisar mi progreso para verificar la tarea realizada. Si la completaste correctamente, recibirás una puntuación de evaluación.

Crear una instancia de VM en la zona con Terraform.
  1. En el menú de navegación de la consola de Google Cloud, haz clic en Compute Engine > Instancias de VM. Se abrirá la página Instancias de VM y verás la instancia que acabas de crear en la lista Instancias de VM.

Terraform escribió datos en el archivo terraform.tfstate. Este archivo de estado es de extrema importancia, ya que lleva un registro de los ID de los recursos creados para que Terraform sepa qué está administrando.

  1. En Cloud Shell, inspecciona el estado actual con el siguiente comando:
terraform show

Resultado de ejemplo:

# google_compute_instance.default: resource "google_compute_instance" "default" { can_ip_forward = false cpu_platform = "Intel Haswell" deletion_protection = false guest_accelerator = [] id = "terraform" instance_id = "3408292216444307052" label_fingerprint = "42WmSpB8rSM=" machine_type = "e2-medium" metadata_fingerprint = "s6I5s2tjfKw=" name = "terraform" project = "qwiklabs-gcp-42390cc9da8a4c4b" self_link = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/instances/terraform" tags_fingerprint = "42WmSpB8rSM=" zone = "{{{project_0.default_zone}}}" boot_disk { auto_delete = true device_name = "persistent-disk-0" source = "https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-42390cc9da8a4c4b/zones/{{{project_0.default_zone}}}/disks/terraform" ....

Podrás ver que, con la creación de este recurso, también pudiste recopilar bastante información sobre él. Estos valores podrán tomarse como referencia para configurar recursos o resultados adicionales.

¡Felicitaciones! Compilaste tu primera infraestructura con Terraform. Revisaste la sintaxis de configuración y un ejemplo de un plan de ejecución básico, y examinaste el archivo de estado.

Tarea 3: Pon a prueba tus conocimientos

Las siguientes preguntas de opción múltiple deberían reforzar tus conocimientos de los conceptos de este lab. Trata de responderlas lo mejor posible.

¡Felicitaciones!

¡Felicitaciones por completar este lab! Aprendiste a usar Terraform para crear y administrar la infraestructura en Google Cloud.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de las Quests Managing Cloud Infrastructure with Terraform y Automating Infrastructure on Google Cloud with Terraform. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas una Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en cualquier Quest que contenga este lab y obtén un crédito inmediato de finalización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Infraestructura como código con Terraform. También puedes consultar estos labs de Google Cloud Skills Boost:

Próximos pasos y más información

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 26 de enero de 2024

Prueba más reciente del lab: 10 de agosto de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.