Pianificare ed eseguire un cron job utilizzando Terraform
Questa guida rapida mostra come utilizzare Terraform per creare un cron job Cloud Scheduler. Terraform è uno strumento Infrastructure as Code (IaC) che consente di creare, modificare e migliorare in modo prevedibile l'infrastruttura cloud utilizzando il codice. Puoi scoprire di più sull'utilizzo di Terraform per il provisioning dell'infrastruttura su Google Cloud.
Cloud Scheduler prevede un Livello gratuito e l'esecuzione di questa guida rapida non dovrebbe comportare alcun costo. Per ulteriori informazioni, consulta la sezione Prezzi.
In questa guida rapida:
- Utilizza Terraform per creare un cron job per Cloud Scheduler.
- Imposta una programmazione ricorrente per il job.
- Specificare un argomento Pub/Sub come target del job.
- Esegui il job.
- Verificare che il job sia stato eseguito correttamente.
Prima di iniziare
-
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.
-
- Terraform è già integrato in Cloud Shell. Se devi installare Terraform, consulta la documentazione di HashiCorp Terraform.
Crea un file di configurazione Terraform
Per utilizzare Terraform con Cloud Scheduler, devi creare un file di configurazione per descrivere l'infrastruttura e creare un piano di esecuzione. Poi applichi il file di configurazione alla tua piattaforma o al tuo servizio per eseguire operazioni di provisioning dell'infrastruttura.
Completa i seguenti passaggi per creare un file di configurazione Terraform denominato
main.tf
:
Apri un terminale e crea una directory:
mkdir terraform
Vai alla directory
terraform
:cd terraform
Aggiungi un nuovo file,
main.tf
, alla directory:nano main.tf
Aggiungi il seguente provider Terraform per le risorse Google Cloud al file
main.tf
:Abilita le API Cloud Scheduler e Pub/Sub:
Crea un argomento Pub/Sub come risorsa a cui i publisher possono inviare messaggi:
Viene creato un argomento denominato
pubsub_topic
.Crea una sottoscrizione per ricevere i messaggi pubblicati nell'argomento Pub/Sub:
Crea un cron job utilizzando la risorsa
google_cloud_scheduler_job
:Nel sample vengono utilizzati i seguenti argomenti:
name
: il nome del job.description
: una descrizione del lavoro.schedule
: la frequenza del job, utilizzando un formato basato su unix-cron.In questo esempio,
30 16 * * 7
indica che il job verrà eseguito alle 16:30 la domenica. Per ulteriori informazioni, consulta Formato e fuso orario dei job cron.region
: la regione in cui si trova il job.pubsub_target
: l'argomento Pub/Sub di destinazione, incluso il nome completo della risorsa dell'argomento (topic_name
) a cui viene pubblicato il payload del messaggio (data
) quando viene eseguito il job.
Sono supportati altri argomenti. Per maggiori dettagli, consulta il riferimento all'argomento Terraform Registry.
Crea il cron job
Esegui il deployment delle risorse Terraform per creare il job cron.
Apri un terminale e inizializza Terraform nella directory
terraform
:terraform init
Verifica che le modifiche proposte con Terraform corrispondano al piano previsto:
terraform plan
Puoi ignorare la nota relativa all'utilizzo dell'opzione
-out
.Crea il cron job:
terraform apply
Al prompt Inserisci un valore, digita
yes
per procedere con la creazione delle risorse.Verifica che sia stato creato un job:
gcloud scheduler jobs describe test-job --location=us-central1
L'output dovrebbe essere simile al seguente:
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
Hai creato un job che invia un messaggio a un argomento Pub/Sub alle 16:30 di domenica. Ora puoi eseguire il job.
Esegui il job
Oltre a eseguirlo in base alla pianificazione specificata, puoi forzare l'esecuzione immediata del job eseguendo il seguente comando.
gcloud scheduler jobs run test-job --location=us-central1
Tieni presente che, a causa della configurazione iniziale, l'esecuzione del primo job creato in un progetto può richiedere alcuni minuti.
Verifica i risultati
Verifica che l'argomento Pub/Sub riceva messaggi dal tuo job.
Esegui il pull dei messaggi Pub/Sub da una sottoscrizione:
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
Se inizialmente non vengono estratti messaggi, esegui di nuovo il comando.
Visualizza i risultati dell'esecuzione del job. L'output dovrebbe essere simile al seguente:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
Esegui la pulizia
Per evitare che al tuo Google Cloud account vengano addebitati costi per le risorse utilizzate su questa pagina, elimina il progetto Google Cloud con le risorse.
- L'eliminazione del progetto Google Cloud interrompe la fatturazione per tutte le risorse utilizzate al suo interno. Tieni presente che per impostazione predefinita, tutti i file nella home directory di Cloud Shell (ad esempio i file Terraform) persistono tra le sessioni.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
In alternativa, puoi eliminare tutte le risorse create con Terraform.
Il comando
terraform destroy
termina tutte le risorse specificate nel stato Terraform. Non elimina le risorse non gestite dall'attuale progetto Terraform. Il file di configurazione Terraform non viene eliminato. Per ulteriori informazioni, consulta la sezione Distruggere l'infrastruttura.terraform destroy