Créer et planifier une job Cron à l'aide de Terraform

Ce guide de démarrage rapide explique comment utiliser Terraform pour créer une 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. Vous pouvez en savoir plus sur l'utilisation de Terraform pour provisionner une infrastructure sur Google Cloud.

Cloud Scheduler propose une version gratuite. L'exécution de ce guide de démarrage rapide ne génère aucun coût. Pour en savoir plus, reportez-vous à la section Tarification.

Dans le cadre de ce guide démarrage rapide, vous allez effectuer les étapes suivantes :

  1. Créez un job Cron pour Cloud Scheduler à l'aide de Terraform.
  2. Définissez un calendrier récurrent pour la tâche.
  3. spécifier un sujet Pub/Sub comme cible de la tâche ;
  4. Exécuter la tâche.
  5. vérifier que la tâche a bien été exécutée.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Installez Google Cloud CLI.
  3. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  4. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  5. Installez Google Cloud CLI.
  6. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init
  7. Créez ou sélectionnez un projet Google Cloud.

    • Créez un projet Google Cloud :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud.

  8. Terraform est déjà intégré dans Cloud Shell. Si vous devez installer Terraform, consultez la documentation pour HashiCorp Terraform.

Créer un fichier de configuration Terraform

Pour utiliser Terraform avec Cloud Scheduler, vous devez créer un fichier de configuration décrivant votre infrastructure et créer un plan d'exécution. Vous appliquez ensuite le fichier de configuration à votre plate-forme ou à votre 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:

  1. Ouvrez un terminal et créez un répertoire:

    mkdir terraform
  2. Accédez au répertoire terraform :

    cd terraform
  3. Ajoutez un nouveau fichier, main.tf, au répertoire:

    nano main.tf
  4. Ajoutez les ressources fournisseur Terraform pour Google Cloud suivantes au fichier main.tf:

    1. Activez les API Cloud Scheduler et Pub/Sub:

      # Enable Cloud Scheduler API
      resource "google_project_service" "scheduler" {
        service            = "cloudscheduler.googleapis.com"
        disable_on_destroy = false
      }
      # Enable Pub/Sub API
      resource "google_project_service" "pubsub" {
        service            = "pubsub.googleapis.com"
        disable_on_destroy = false
      }
    2. Créez un sujet Pub/Sub en tant que ressource à laquelle les éditeurs peuvent envoyer des messages:

      # Create Pub/Sub topic
      resource "google_pubsub_topic" "default" {
        name = "pubsub_topic"
      }

      Cette opération crée un sujet appelé pubsub_topic.

    3. Créez un abonnement pour recevoir les messages publiés dans le sujet Pub/Sub:

      # Create Pub/Sub subscription
      resource "google_pubsub_subscription" "default" {
        name  = "pubsub_subscription"
        topic = google_pubsub_topic.default.name
      }
    4. Créez une job Cron à l'aide de la ressource google_cloud_scheduler_job:

      # Create a cron job using Cloud Scheduler
      resource "google_cloud_scheduler_job" "default" {
        name        = "test-job"
        description = "test job"
        schedule    = "30 16 * * 7"
        region      = "us-central1"
      
        pubsub_target {
          topic_name = google_pubsub_topic.default.id
          data       = base64encode("Hello world!")
        }
      }

      Les arguments suivants sont utilisés dans l'exemple:

      • name: nom de la tâche.
      • description: description du poste.
      • schedule: fréquence de la tâche, en utilisant un format basé sur unix-cron.

        Dans cet exemple, 30 16 * * 7 signifie que la tâche sera exécutée à 16h30 les dimanches. Pour en savoir plus, consultez la section Format de tâche Cron et fuseau horaire.

      • region: région où se trouve le job.

      • pubsub_target: cible du sujet Pub/Sub, y compris le nom complet de la ressource du sujet (topic_name) dans lequel la charge utile du message (data) est publiée lors de l'exécution de la tâche.

      D'autres arguments sont acceptés. Pour en savoir plus, consultez la documentation de référence sur les arguments Terraform.

Créer la job Cron

Déployez vos ressources Terraform pour créer le job Cron.

  1. Ouvrez un terminal et, dans le répertoire terraform, initialisez Terraform:

    terraform init
    
  2. 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.

  3. Créez la job Cron:

    terraform apply
    
  4. Lorsque l'invite Saisir une valeur s'affiche, saisissez yes pour créer les ressources.

  5. Vérifiez qu'une tâche a bien été créée:

    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
    

Vous avez créé une tâche qui envoie un message à un sujet Pub/Sub à 16h30 les dimanches. Vous pouvez maintenant exécuter le job.

Exécuter votre tâche

En plus de s'exécuter selon la planification spécifiée, vous pouvez forcer l'exécution immédiate de votre tâche 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 les messages de votre tâche.

  1. 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.

  2. 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[...]
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, supprimez le projet Google Cloud contenant les ressources.

  1. 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, tous les fichiers Terraform) sont conservés entre les sessions.

    Supprimez un projet Google Cloud :

    gcloud projects delete PROJECT_ID
  2. Vous pouvez également supprimer toutes les ressources que vous avez créées avec Terraform.

    La commande terraform destroy arrête toutes les ressources spécifiées dans votre état Terraform. Elle 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 la section Détruire l'infrastructure.

    terraform destroy

Étapes suivantes