Planifier et exécuter un job Cron à l'aide de Terraform
Ce guide de démarrage rapide explique comment utiliser Terraform pour créer un job cron Cloud Scheduler. Terraform est un outil Infrastructure as Code (IaC) qui vous permet de créer, de modifier et d'améliorer de manière prévisible votre infrastructure cloud en utilisant du code. Pour en savoir plus sur l'utilisation de Terraform pour provisionner l'infrastructure sur Google Cloud,
Une version sans frais de Cloud Scheduler est disponible. Par conséquent, l'exécution de ce démarrage rapide ne vous coûtera rien. Pour en savoir plus, reportez-vous à la section Tarification.
Dans le cadre de ce guide démarrage rapide, vous allez effectuer les étapes suivantes :
- Utilisez Terraform pour créer un job Cron pour Cloud Scheduler.
- Définissez un calendrier récurrent pour le job.
- spécifier un sujet Pub/Sub comme cible de la tâche ;
- Exécuter la tâche.
- vérifier que la tâche a bien été exécutée.
Avant de commencer
-
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 vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
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 vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
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.
- Terraform est déjà intégré à Cloud Shell. Si vous devez installer Terraform, consultez la documentation HashiCorp Terraform.
Ouvrez un terminal et créez un répertoire :
mkdir terraform
Accédez au répertoire
terraform
:cd terraform
Ajoutez un nouveau fichier,
main.tf
, au répertoire:nano main.tf
Ajoutez les ressources fournisseur Terraform pour Google Cloud suivantes au fichier
main.tf
:Activez les API Cloud Scheduler et Pub/Sub :
Créez un sujet Pub/Sub en tant que ressource à laquelle les éditeurs peuvent envoyer des messages :
Cette opération crée un sujet appelé
pubsub_topic
.Créez un abonnement pour recevoir les messages publiés dans le sujet Pub/Sub :
Créez un job Cron à l'aide de la ressource
google_cloud_scheduler_job
:Les arguments suivants sont utilisés dans l'exemple :
name
: nom du job.description
: description du job.schedule
: fréquence du job, à l'aide d'un format basé sur unix-cron.Dans cet exemple,
30 16 * * 7
signifie que le job s'exécutera à 16h30 le dimanche. Pour en savoir plus, consultez Format et fuseau horaire des tâches Cron.region
: région dans laquelle se trouve le job.pubsub_target
: sujet Pub/Sub cible, y compris le nom complet de la ressource du sujet (topic_name
) dans lequel la charge utile du message (data
) est publiée lorsque le job est exécuté.
D'autres arguments sont acceptés. Pour en savoir plus, consultez la documentation de référence sur les arguments du registre Terraform.
Ouvrez un terminal et, dans le répertoire
terraform
, initialisez Terraform :terraform init
Vérifiez que les modifications que vous proposez avec Terraform correspondent au plan attendu :
terraform plan
Vous pouvez ignorer la note indiquant que l'option
-out
n'est pas utilisée.Créez la job Cron :
terraform apply
Lorsque l'invite Saisir une valeur s'affiche, saisissez
yes
pour procéder à la création des ressources.Vérifiez qu'un job a été créé :
gcloud scheduler jobs describe test-job --location=us-central1
La sortie devrait ressembler à ce qui suit :
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
Extrayez des messages Pub/Sub d'un abonnement :
gcloud pubsub subscriptions pull pubsub_subscription --limit 5
Si aucun message n'a été initialement récupéré, exécutez de nouveau la commande.
Consultez les résultats de l'exécution de votre tâche. Le résultat doit ressembler à ce qui suit :
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
- La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources utilisées dans ce projet. Notez que, par défaut, tous les fichiers de votre répertoire d'accueil Cloud Shell (par exemple, les fichiers Terraform) sont conservés entre les sessions.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Vous pouvez également supprimer toutes les ressources que vous avez créées avec Terraform.
La commande
terraform destroy
met fin à toutes les ressources spécifiées dans votre état Terraform. Il ne détruit pas les ressources qui ne sont pas gérées par le projet Terraform actuel. Votre fichier de configuration Terraform n'est pas détruit. Pour en savoir plus, consultez Détruire l'infrastructure.terraform destroy
Créer un fichier de configuration Terraform
Pour utiliser Terraform avec Cloud Scheduler, vous devez créer un fichier de configuration pour décrire votre infrastructure et créer un plan d'exécution. Vous appliquez ensuite le fichier de configuration à votre plate-forme ou service pour effectuer des opérations qui provisionnent votre infrastructure.
Pour créer un fichier de configuration Terraform appelé main.tf
, procédez comme suit :
Créer la job Cron
Déployez vos ressources Terraform pour créer le job cron.
Vous avez créé une tâche qui envoie un message à un sujet Pub/Sub à 16h30 le dimanche. Vous pouvez maintenant exécuter le job.
Exécuter votre tâche
En plus de l'exécution selon la planification spécifiée, vous pouvez forcer l'exécution immédiate de votre job en exécutant la commande suivante.
gcloud scheduler jobs run test-job --location=us-central1
Notez qu'en raison d'une configuration initiale, l'exécution de la première tâche créée dans un projet peut prendre quelques minutes.
Vérifier les résultats
Vérifiez que votre sujet Pub/Sub reçoit des messages de votre job.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud qui les contient.