Aprovisionar recursos de Compute Engine con Terraform

HashiCorp Terraform es una herramienta de infraestructura como código (IaC) que te permite aprovisionar y gestionar la infraestructura en la 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 aprovisionar y gestionar Google Cloud recursos, incluido Compute Engine.

En esta página se explica cómo usar Terraform con Compute Engine, se describe cómo funciona Terraform y se ofrecen algunos recursos para ayudarte a empezar a usar Terraform con Google Cloud. También encontrarás enlaces a documentos de referencia de Terraform para Compute Engine, ejemplos de código y guías para usar Terraform con el fin de aprovisionar recursos de Compute Engine.

Para obtener instrucciones sobre cómo empezar a usar Terraform para Google Cloud, consulta Instalar y configurar Terraform o la guía de inicio rápido de Terraform para Google Cloud .

Cómo funciona Terraform

Terraform tiene una sintaxis declarativa y orientada a la configuración que puedes usar para describir la infraestructura que quieres aprovisionar en tu Google Cloud proyecto. Una vez que hayas creado esta configuración en uno o varios archivos de configuración de Terraform, puedes usar la CLI de Terraform para aplicar esta configuración a tus recursos de Compute Engine.

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

  1. Describe la infraestructura que quieres 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 hacer los cambios que necesites.
  3. Ejecutas el comando terraform apply, que realiza las siguientes acciones:

    1. Aprovisiona tu infraestructura en función de tu plan de ejecución invocando 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 de la infraestructura real. Terraform usa este archivo para mantener un registro del estado más reciente de tu infraestructura y para determinar cuándo crear, actualizar y eliminar recursos.
    3. Cuando ejecutas terraform apply, Terraform usa la asignación del archivo de estado para comparar la infraestructura actual con el código y hacer las actualizaciones necesarias:

      • 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 un objeto de recurso existe en el archivo de estado, pero tiene una configuración diferente a la de tu archivo de configuración, Terraform actualiza el recurso para que coincida con tu archivo de configuración.
      • Si un objeto de recurso del archivo de estado coincide con el archivo de configuración, Terraform no lo modifica.

Recursos de Terraform para Compute Engine

Los recursos son los elementos fundamentales del lenguaje de Terraform. Cada bloque de recursos describe uno o varios objetos de infraestructura, como redes virtuales o instancias de computación.

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

Recursos de Terraform Fuentes de datos de Terraform

Guías basadas en Terraform para Compute Engine

En la siguiente tabla se indican guías prácticas y tutoriales basados en Terraform para Compute Engine:

Guía Detalles
Crear e iniciar una instancia de Compute Engine Explica cómo crear una instancia de máquina virtual.
Crear una VM con discos SSD locales Explica cómo crear una VM con almacenamiento en disco SSD local.
Crear capturas de disco Explica cómo crear capturas estándar para hacer copias de seguridad de los datos de los discos de forma periódica.
Duplicar un disco con clones Explica cómo crear clones de discos de zona de un disco.
Crear y gestionar discos regionales Explica cómo crear y gestionar discos regionales.
Crear y usar máquinas virtuales de acceso puntual Explica cómo crear y gestionar máquinas virtuales de Spot. Las máquinas virtuales de acceso puntual son instancias de VM que representan el exceso de capacidad de Compute Engine. Las VMs de acceso puntual están disponibles a precios mucho más bajos que los de las VMs estándar bajo demanda.
Añadir claves SSH a máquinas virtuales Describe cómo añadir claves SSH a instancias de VM que usan OS Login y a VMs que usan claves SSH basadas en metadatos.
Ejecutar secuencias de comandos de apagado Explica cómo crear y ejecutar secuencias de comandos de apagado que ejecuten comandos justo antes de que se detenga o reinicie una instancia de VM.
Crear una reserva para un solo proyecto Explica cómo crear una reserva de un solo proyecto, que solo pueden usar las instancias de VM del mismo proyecto.
Crear plantillas de instancia Describe cómo crear y gestionar plantillas de instancia.
Escalar según programaciones Describe cómo puedes crear programaciones de escalado para un MIG. El autoescalado basado en programaciones te permite mejorar la disponibilidad de tus cargas de trabajo programando la capacidad antes de la carga prevista.
Añadir almacenamiento en disco persistente a una máquina virtual Explica cómo crear un volumen de disco persistente de zona en blanco que no sea de arranque y cómo adjuntarlo a tu VM.
Configurar OS Login Describe cómo configurar OS Login.
Conectar un disco que no sea de arranque a una máquina virtual Explica cómo adjuntar un disco de zona que no sea de arranque a una VM.
Crear una VM que use una cuenta de servicio gestionada por el usuario Explica cómo crear una instancia de VM configurada para usar una cuenta de servicio gestionada por el usuario. Una cuenta de servicio es un tipo especial de cuenta que suelen usar las aplicaciones o las cargas de trabajo de computación para hacer llamadas a la API autorizadas.
Aumentar el tamaño de un disco persistente Explica cómo aumentar el tamaño de un disco persistente.
Habilitar pantallas virtuales en una máquina virtual Describe cómo habilitar pantallas virtuales en una instancia de VM.
Crear un MIG en una sola zona Describe cómo crear un grupo de instancias gestionado (MIG) en una sola zona. Si colocas todas las VMs de tu MIG en una sola zona, se minimiza la latencia, lo que resulta útil para determinadas cargas de trabajo, como las cargas de trabajo por lotes.
Crear una instancia de VM con un nombre de host personalizado Explica cómo crear una instancia de VM con un nombre de host personalizado.
Configurar una comprobación de estado basada en aplicaciones y la reparación automática Describe cómo configurar una comprobación de estado basada en aplicaciones para reparar automáticamente las VMs de un MIG.
Crear un MIG que use VMs interrumpibles Describe cómo crear un MIG que use instancias de VM interrumpibles. Las máquinas virtuales interrumpibles son útiles si tu carga de trabajo puede tolerar interrupciones y quieres aprovechar los ahorros de costes asociados a las máquinas virtuales interrumpibles.
Añadir y quitar VMs de un MIG Describe cómo añadir y quitar VMs de un MIG.
Crea un MIG con el autoescalado habilitado Describe cómo crear un MIG con autoescalado que añada y elimine automáticamente VMs en función del uso medio de la CPU en todo el grupo.
Crear un MIG con discos con reconocimiento del estado Describe cómo crear un MIG que use instancias de VM interrumpibles. Las máquinas virtuales interrumpibles son útiles si tu carga de trabajo puede tolerar interrupciones y quieres aprovechar los ahorros de costes asociados a las máquinas virtuales interrumpibles.
Crear instancias de VM de SQL Server Explica cómo crear instancias de VM de Microsoft SQL Server. SQL Server es un sistema de bases de datos que se ejecuta en Windows Server y en algunas distribuciones de Linux. Puedes usar SQL Server en Compute Engine como parte del backend de tus aplicaciones, como entorno de desarrollo y pruebas flexible o como complemento de tus sistemas locales para crear copias de seguridad y recuperarte tras un desastre.
Crear una asignación de política de SO Explica cómo crear una asignación de política de SO. Puedes usar políticas de SO para mantener configuraciones de software coherentes en instancias de VM de Linux y Windows.
Configurar metadatos con reconocimiento del estado en grupos de instancias gestionados Describe cómo configurar metadatos con reconocimiento del estado en grupos de instancias gestionados. Los metadatos de instancia son útiles para definir propiedades y comunicarse con tus aplicaciones a través del servidor de metadatos.
Configurar discos persistentes con reconocimiento del estado en grupos de instancias gestionados Explica cómo configurar discos persistentes con reconocimiento del estado en grupos de instancias gestionados. Configurar discos persistentes con reconocimiento del estado te permite beneficiarte de la reparación automática y las actualizaciones automatizadas de las instancias de VM, al tiempo que conservas el estado de los discos.
Configurar direcciones IP con estado en grupos de instancias gestionados Describe cómo configurar direcciones IP con estado en grupos de instancias gestionados. Si configuras direcciones IP con reconocimiento del estado en un MIG, te aseguras de que las direcciones IP se conserven cuando las instancias de VM del grupo se reparen automáticamente, se actualicen y se vuelvan a crear.
Definir una forma de distribución objetivo para las VMs de un MIG regional Explica cómo definir una forma de distribución del destino para las VMs.
Crear un MIG con VMs en varias zonas de una región Describe cómo crear un MIG cuyas VMs se distribuyan en varias zonas de una región. Distribuir la carga de tu aplicación en varias zonas protege tu carga de trabajo frente a fallos de zona.
Inhabilitar y volver a habilitar la redistribución proactiva de VMs en un MIG regional Describe cómo inhabilitar y volver a habilitar la redistribución proactiva de VMs en un MIG regional. En un MIG regional, para mantener un número uniforme de instancias de VM en las zonas seleccionadas de la región, usa la redistribución proactiva de instancias. Esta opción de configuración maximiza la disponibilidad de tu aplicación en caso de que se produzca un fallo a nivel de zona.

Módulos y planos de Terraform para Compute Engine

Los módulos y los planos te ayudan a automatizar el aprovisionamiento y la gestión de Google Cloud recursos 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 blueprint es un paquete de módulos desplegables y reutilizables, así como una política que implementa y documenta una solución específica.

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

Módulo o plano Detalles
terraform-google-vm Colección de submódulos con opiniones que puedes usar como elementos de creación para aprovisionar VMs en Google Cloud.
terraform-google-startup-scripts Proporciona una biblioteca de secuencias de comandos de inicio útiles para insertar en las VMs.
terraform-google-container-vm Despliega contenedores en instancias de Compute Engine.

Siguientes pasos