Aprovisiona recursos de Compute Engine con Terraform

HashiCorp Terraform es una herramienta de infraestructura como código (IaC) que te permite aprovisionar y administrar la infraestructura de nube. Terraform proporciona complementos llamados proveedores que te permiten interactuar con proveedores de servicios en la nube y otras APIs. Puedes usar el proveedor de Terraform para Google Cloud para aprovisionar y administrar recursos de Google Cloud, incluido Compute Engine.

Cómo funciona Terraform

Terraform tiene una sintaxis declarativa y orientada a la configuración que puedes usar para describir la infraestructura que deseas aprovisionar en tu proyecto de Google Cloud. Después de crear esta configuración en uno o más archivos de configuración de Terraform, puedes usar la CLI de Terraform para aplicarla a tus recursos de Compute Engine.

En los siguientes pasos, se explica cómo funciona Terraform:

  1. Describes la infraestructura que deseas aprovisionar en un archivo de configuración de Terraform. No es necesario que escribas código que describa cómo aprovisionar la infraestructura. Terraform aprovisiona la infraestructura por ti.
  2. Ejecuta el comando terraform plan, que evalúa tu configuración y genera un plan de ejecución. Puedes revisar el plan y realizar cambios según sea necesario.
  3. Luego, ejecuta el comando terraform apply, que realiza las siguientes acciones:

    1. Aprovisiona tu infraestructura según tu plan de ejecución mediante la invocación de las APIs de Compute Engine correspondientes en segundo plano.
    2. Crea un archivo de estado de Terraform, que es un archivo JSON que asigna los recursos del archivo de configuración a los recursos en la infraestructura del mundo real. Terraform usa este archivo para mantener un registro del estado más reciente de tu infraestructura y determinar cuándo crear, actualizar y destruir recursos.
    3. Luego, cuando ejecutes terraform apply, Terraform usa la asignación en el archivo de estado para comparar la infraestructura existente con el código y realizar actualizaciones según sea necesario:

      • Si se define un objeto de recurso en el archivo de configuración, pero no existe en el archivo de estado, Terraform lo crea.
      • Si existe un objeto de recurso en el archivo de estado, pero tiene una configuración diferente de tu archivo de configuración, Terraform actualiza el recurso para que coincida con tu archivo de configuración.
      • Si un objeto de recurso en el archivo de estado coincide con tu archivo de configuración, Terraform deja el recurso sin cambios.

Guías basadas en Terraform para Compute Engine

En la siguiente tabla, se enumeran todas las guías prácticas y los instructivos basados en Terraform para Compute Engine:

Guía Detalles
Crea y, luego, inicia una instancia de Compute Engine Se explica cómo crear una instancia de máquina virtual (VM).
Crea una VM con discos SSD locales Explica cómo puedes crear una VM con almacenamiento en disco SSD local.
Crea instantáneas de disco Explica cómo crear instantáneas estándar para crear copias de seguridad de los datos de los discos de forma periódica.
Duplica un disco con clonaciones Se explica cómo crear clonaciones de discos zonales de un disco existente.
Crea y administra discos replicados de forma síncrona Explica cómo crear y administrar discos replicados.
Crea y usa VMs Spot Se explica cómo crear y administrar VMs Spot. Las VMs Spot son instancias de VM que son un excedente de capacidad de Compute Engine. Las VMs Spot están disponibles a precios mucho más bajos en comparación con el precio según demanda de las VMs estándar.
Agrega claves SSH a las VMs Se describe cómo agregar claves SSH a instancias de VM que usan el Acceso al SO y VMs que usan claves SSH basadas en metadatos.
Ejecuta secuencias de comandos de cierre Se explica cómo crear y ejecutar secuencias de comandos de apagado que ejecutan comandos justo antes de que se detenga o reinicie una instancia de VM.
Crea una reserva para un solo proyecto Explica cómo crear una reserva de un solo proyecto, que solo pueden consumir las instancias de VM en el mismo proyecto.
Crea plantillas de instancias Describe cómo crear y administrar plantillas de instancias.
Escalamiento según los programas Describe cómo puedes crear programas de escalamiento para un MIG existente. El ajuste de escala automático basado en los programas te permite mejorar la disponibilidad de tus cargas de trabajo mediante la programación de la capacidad antes de la carga anticipada.
Agrega almacenamiento de Persistent Disk a la VM Explica cómo crear un volumen de disco persistente zonal que no sea de arranque y conectarlo a la VM.
Configura Acceso al SO Obtén información sobre cómo configurar el Acceso al SO.
Conecta un disco que no sea de arranque a una VM Se explica cómo conectar un disco zonal que no sea de arranque a la VM.
Crear una VM que use una cuenta de servicio administrada por el usuario Explica cómo crear una instancia de VM que esté configurada para usar una cuenta de servicio administrada por el usuario. Una cuenta de servicio es un tipo especial de cuenta que, por lo general, es usada por una carga de trabajo de aplicación o procesamiento para realizar llamadas autorizadas a la API.
Aumenta el tamaño de un disco persistente Explica cómo aumentar el tamaño de un disco persistente.
Habilita pantallas virtuales en una VM Se describe cómo habilitar pantallas virtuales en una instancia de VM.
Crea un MIG en una sola zona Describe cómo crear un grupo de instancias administrado (MIG) en una sola zona. Ubicar todas las VMs de tu MIG en una sola zona ayuda a minimizar la latencia, lo que es útil para ciertas cargas de trabajo, por ejemplo, cargas de trabajo por lotes.
Crea una instancia de VM con un nombre de host personalizado Se explica cómo crear una instancia de VM con un nombre de host personalizado.
Configura una verificación de estado de la aplicación y una reparación automática Se describe cómo configurar una verificación de estado basada en aplicaciones para la reparación automática de las VMs de un MIG.
Crea un MIG que use VM interrumpibles Describe cómo crear un MIG que use instancias de VMs interrumpibles. Las VMs interrumpibles son útiles si tu carga de trabajo puede tolerar interrupciones y deseas aprovechar los ahorros de costos asociados con las VM interrumpibles.
Agrega y quita VMs en un MIG Describe cómo agregar y quitar VMs de un MIG.
Crea un MIG con ajuste de escala automático habilitado Describe cómo crear un MIG con ajuste de escala automático que agrega y quita VMs de forma automática en función del uso de CPU promedio en el grupo.
Crea un MIG con discos con estado Describe cómo crear un MIG que use instancias de VMs interrumpibles. Las VMs interrumpibles son útiles si tu carga de trabajo puede tolerar interrupciones y deseas aprovechar los ahorros de costos asociados con las VM interrumpibles.
Crea instancias de VM de SQL Server Explica cómo crear instancias de VM de Microsoft SQL Server. SQL Server es un sistema de base de datos que se ejecuta en Windows Server y algunas distribuciones de Linux. Puedes usar SQL Server en Compute Engine como parte del backend de tus aplicaciones, como un entorno de desarrollo y pruebas flexible o en conjunto con tus sistemas locales de copias de seguridad y recuperación ante desastres.
Crea una asignación de política del SO Explica cómo crear una asignación de política del SO. Puedes usar las políticas del SO para mantener una configuración de software coherente en las instancias de VM de Linux y Windows.
Configura metadatos con estado en MIG Describe cómo configurar metadatos con estado en MIG. Los metadatos de instancia son útiles para configurar propiedades de las aplicaciones y comunicarse con ellas, todo esto a través del servidor de metadatos.
Configura discos persistentes con estado en MIG Explica cómo configurar discos persistentes con estado en MIG. Configurar los discos persistentes para que tengan estado te permite beneficiarte de la reparación automática y las actualizaciones automáticas de una instancia de VM y, a la vez, conservar el estado de los discos.
Configura direcciones IP con estado en MIG Describe cómo configurar direcciones IP con estado en los MIG. Mediante la configuración de direcciones IP con estado en un MIG, te aseguras de que las direcciones IP se conserven cuando las instancias de VMs del grupo se reparen de forma automática, se actualicen y se vuelvan a crear.
Establece una forma de distribución objetivo para VM en un MIG regional Se explica cómo configurar una forma de distribución objetivo para VMs.
Crea un MIG con VMs en varias zonas de una región Se describe cómo crear un MIG que tiene sus VMs distribuidas en varias zonas de una región. La distribución de la carga de la aplicación en varias zonas protege tu carga de trabajo contra fallas zonales.
Inhabilita y vuelve a habilitar la redistribución proactiva de VM en un MIG regional Se describe cómo inhabilitar y volver a habilitar la redistribución proactiva de VM en un MIG regional. En un MIG regional, para mantener una cantidad par de instancias de VM en las zonas seleccionadas de la región, usa la redistribución proactiva de instancias. Esta configuración maximiza la disponibilidad de tu aplicación en caso de una falla a nivel de zona.

Módulos y planos de Terraform para Compute Engine

Los módulos y planos te ayudan a automatizar el aprovisionamiento y la administración de los recursos de Google Cloud a gran escala. Un módulo es un conjunto reutilizable de archivos de configuración de Terraform que crea una abstracción lógica de los recursos de Terraform. Un esquema es un paquete de módulos implementables y reutilizables, y una política que implementa y documenta una solución específica.

En la siguiente tabla, se enumeran todos los módulos y los esquemas relacionados con Compute Engine:

Módulo o esquema Detalles
terraform-google-vm Colección de submódulos revisados que puedes usar como componentes básicos para aprovisionar VMs en Google Cloud.
terraform-google-startup-scripts Proporciona una biblioteca de secuencias de comandos de inicio útiles para incorporar en las VMs.
terraform-google-container-vm Implementa contenedores en instancias de Compute Engine

Recursos de Terraform para Compute Engine

Los recursos son los elementos fundamentales del lenguaje de Terraform. En cada bloque de recursos, se describe uno o más objetos de infraestructura, como redes virtuales o instancias de procesamiento.

En la siguiente tabla, se enumeran los recursos de Terraform disponibles para Compute Engine:

Recursos de Terraform Fuentes de datos

¿Qué sigue?