Programa y ejecuta un trabajo cron con Terraform
En esta guía de inicio rápido, se muestra cómo usar Terraform para crear un trabajo de cron de Cloud Scheduler. Terraform es una herramienta de infraestructura como código (IaC) que te permite crear, cambiar y mejorar de forma predecible tu infraestructura de nube mediante código. Puedes obtener más información sobre con Terraform para aprovisionar infraestructura en Google Cloud.
Cloud Scheduler tiene un nivel gratuito y ejecutar esta guía de inicio rápido no debería cualquier costo. Para obtener más información, consulta Precios.
En esta guía de inicio rápido, podrás hacer lo siguiente:
- Usar Terraform para crear un trabajo cron para Cloud Scheduler
- Establece un programa recurrente para el trabajo.
- Especifique un tema de Pub/Sub como destino del trabajo.
- Ejecute el trabajo.
- Verificar si el trabajo se ejecutó de forma correcta
Antes de comenzar
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
- Cloud Shell ya tiene integrado Terraform. Si necesitas instalar Terraform, consulta la documentación de Terraform de HashiCorp.
Crea un archivo de configuración de Terraform
Para usar Terraform con Cloud Scheduler, debes crear un archivo de configuración para describir tu infraestructura y crear un plan de ejecución. Luego, aplicas el archivo de configuración a tu plataforma o servicio para realizar operaciones que aprovisionen tu infraestructura.
Completa los siguientes pasos para crear un archivo de configuración de Terraform llamado
main.tf
:
Abre una terminal y crea un directorio:
mkdir terraform
Ve al directorio
terraform
:cd terraform
Agrega un archivo nuevo,
main.tf
, al directorio:nano main.tf
Agrega los siguientes recursos del proveedor de Terraform para Google Cloud al archivo
main.tf
:Habilita las APIs de Cloud Scheduler y Pub/Sub:
Crear un tema de Pub/Sub como recurso para enviar mensajes enviados por los editores:
Esto crea un tema llamado
pubsub_topic
.Crea una suscripción para recibir mensajes publicados en el tema de Pub/Sub:
Crea un trabajo cron con el recurso
google_cloud_scheduler_job
:Se usan los siguientes argumentos en la muestra:
name
: Es el nombre del trabajo.description
: Es una descripción del trabajo.schedule
: Es la frecuencia del trabajo, que se usa en un formato basado en unix-cron.En esta muestra,
30 16 * * 7
significa que el trabajo se ejecutará a las 4:30 p.m. Domingos Para obtener más información, consulta Formato y zona horaria de la tarea cron.region
: Es la región donde reside el trabajo.pubsub_target
: Es el objetivo del tema de Pub/Sub, incluido el nombre de recurso completo del tema (topic_name
) al que se publica la carga útil del mensaje (data
) cuando se ejecuta la tarea.
Se admiten otros argumentos. Para obtener más información, consulta la Referencia del argumento de Terraform Registry.
Crea el trabajo cron
Implementa tus recursos de Terraform para crear la tarea cron.
Abre una terminal y, en el directorio
terraform
, inicializa Terraform:terraform init
Verifica que los cambios que propones con Terraform coincidan con el plan esperado:
terraform plan
Puedes ignorar la nota sobre no usar la opción
-out
.Crea el trabajo cron:
terraform apply
En el mensaje Ingresa un valor, escribe
yes
para continuar con la creación de de Google Cloud.Confirma que se haya creado un trabajo:
gcloud scheduler jobs describe test-job --location=us-central1
El resultado debería ser similar al siguiente ejemplo:
description: test job lastAttemptTime: '2024-04-04T13:56:00.669530Z' name: projects/PROJECT_ID/locations/us-central1/jobs/test-job pubsubTarget: data: dGVzdA== topicName: projects/PROJECT_ID/topics/pubsub_topic schedule: '30 16 * * 7' scheduleTime: '2024-04-04T13:58:00.737907Z' state: ENABLED
Creaste un trabajo que envía un mensaje a un tema de Pub/Sub a las 4:30 p.m. los domingos. Ahora puedes ejecutar el trabajo.
Ejecuta tu trabajo
Además de ejecutarse según su programación especificada, puedes forzar a que tu tarea se ejecute de inmediato si ejecutas el siguiente comando.
gcloud scheduler jobs run test-job --location=us-central1
Ten en cuenta que, debido a la configuración inicial, el primer trabajo creado en un proyecto puede tardar unos minutos en ejecutarse.
Verifica los resultados
Verifica que el tema de Pub/Sub reciba mensajes de tu trabajo.
Extraer mensajes de Pub/Sub de una suscripción:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
Si no se muestran mensajes inicialmente, vuelve a ejecutar el comando.
Consulta los resultados de la ejecución de tu trabajo. El resultado debería ser similar al siguiente:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página, borra el proyecto de Cloud que tiene los recursos.
- Si borras tu proyecto de Google Cloud, se dejan de facturar todos los recursos que usaste en ese proyecto. Ten en cuenta que, de forma predeterminada, cualquier archivo de tu
El directorio principal de Cloud Shell (por ejemplo, cualquier archivo de Terraform) se conserva
entre sesiones.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Como alternativa, puedes borrar todos los recursos que creaste con Terraform.
El comando
terraform destroy
finaliza todos los recursos especificados en tu estado de Terraform. No destruye recursos que no administra el proyecto actual de Terraform. Tu El archivo de configuración de Terraform no se destruye. Para obtener más información, consulta Destruye la infraestructura.terraform destroy