Programar y ejecutar una tarea cron con Terraform
En esta guía de inicio rápido se muestra cómo usar Terraform para crear un trabajo cron de Cloud Scheduler. Terraform es una herramienta de infraestructura como código (IaC) que te permite crear, cambiar y mejorar tu infraestructura de nube de forma predecible mediante código. Puedes consultar más información sobre cómo usar Terraform para aprovisionar infraestructura en Google Cloud.
Cloud Scheduler tiene un nivel gratuito y, por lo tanto, no deberías incurrir en ningún coste al completar esta guía de inicio rápido. Para obtener más información, consulta los precios.
En esta guía de inicio rápido, harás lo siguiente:
- Usa Terraform para crear un trabajo cron para Cloud Scheduler.
- Define una programación periódica para la tarea.
- Especifica un tema de Pub/Sub como destino del trabajo.
- Ejecuta la tarea.
- Comprueba que el trabajo se haya ejecutado correctamente.
Antes de empezar
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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 Terraform integrado. Si necesitas instalar Terraform, consulta la documentación de HashiCorp Terraform.
Abre una terminal y crea un directorio:
mkdir terraform
Ve al directorio
terraform
:cd terraform
Añade un archivo nuevo,
main.tf
, al directorio:nano main.tf
Añade los siguientes recursos del proveedor de Terraform para Google Cloud al archivo
main.tf
:Habilita las APIs Cloud Scheduler y Pub/Sub:
Crea un tema de Pub/Sub como recurso al que los editores pueden enviar mensajes:
De esta forma, se 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
:En el ejemplo se usan los siguientes argumentos:
name
: el nombre del puesto.description
: una descripción del puesto.schedule
: la frecuencia del trabajo, con un formato basado en cron de Unix.En este ejemplo,
30 16 * * 7
significa que el trabajo se ejecutará a las 16:30 los domingos. Para obtener más información, consulta Formato de las tareas cron y zona horaria.region
: la región en la que se encuentra el trabajo.pubsub_target
: el tema de Pub/Sub de destino, incluido el nombre completo del recurso del tema (topic_name
) en el que se publica la carga útil del mensaje (data
) cuando se ejecuta el trabajo.
Se admiten otros argumentos. Para obtener más información, consulta la referencia de argumentos de Terraform Registry.
Abre una terminal y, en el directorio
terraform
, inicializa Terraform:terraform init
Comprueba que los cambios que propones con Terraform coinciden con el plan esperado:
terraform plan
Puedes ignorar la nota sobre no usar la opción
-out
.Crea la tarea cron:
terraform apply
En la petición Introduce un valor, escribe
yes
para continuar con la creación de recursos.Confirma que se ha creado un trabajo:
gcloud scheduler jobs describe test-job --location=us-central1
La salida debería ser similar a la siguiente:
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
Para extraer mensajes de Pub/Sub de una suscripción, sigue estos pasos:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
Si no se extraen mensajes al principio, vuelve a ejecutar el comando.
Consulta los resultados de la ejecución del trabajo. La salida debería ser similar a la siguiente:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
- Al eliminar tu proyecto Google Cloud , se detendrá la facturación de todos los recursos utilizados en ese proyecto. Ten en cuenta que, de forma predeterminada, los archivos de tu directorio principal de Cloud Shell (por ejemplo, los archivos de Terraform) se conservan de una sesión a otra.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
También puedes eliminar todos los recursos que hayas creado con Terraform.
El comando
terraform destroy
finaliza todos los recursos especificados en tu estado de Terraform. No destruye los recursos que no gestiona el proyecto de Terraform actual. Tu archivo de configuración de Terraform no se elimina. Para obtener más información, consulta Destruir infraestructura.terraform destroy
Crear un archivo de configuración de Terraform
Para usar Terraform con Cloud Scheduler, debes crear un archivo de configuración que describa tu infraestructura y crear un plan de ejecución. A continuación, aplica el archivo de configuración a tu plataforma o servicio para realizar operaciones que aprovisionen tu infraestructura.
Sigue estos pasos para crear un archivo de configuración de Terraform llamado main.tf
:
Crear la tarea cron
Despliega tus recursos de Terraform para crear la tarea cron.
Has creado un trabajo que envía un mensaje a un tema de Pub/Sub a las 16:30 los domingos. Ahora puedes ejecutar el trabajo.
Ejecutar una tarea
Además de ejecutarse según la programación especificada, puedes forzar que tu trabajo se ejecute inmediatamente con el siguiente comando.
gcloud scheduler jobs run test-job --location=us-central1
Ten en cuenta que, debido a la configuración inicial, la primera tarea creada en un proyecto puede tardar unos minutos en ejecutarse.
Verificar los resultados
Comprueba que tu tema de Pub/Sub recibe mensajes de tu trabajo.
Limpieza
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.