Cronjobs mit Terraform planen und ausführen

In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform einen Cloud Scheduler-Cronjob erstellen. Terraform ist ein IaC-Tool (Infrastructure as Code), mit dem Sie die Cloud-Infrastruktur mithilfe von Code vorhersehbar erstellen, ändern und verbessern können. Weitere Informationen zur Verwendung von Terraform zur Bereitstellung von Infrastruktur in Google Cloud

Cloud Scheduler hat eine kostenlose Stufe. Die Ausführung dieser Kurzanleitung sollte daher keine Kosten verursachen. Weitere Informationen finden Sie unter Preise.

In dieser Kurzanleitung werden folgende Schritte erläutert:

  1. Mit Terraform einen Cronjob für Cloud Scheduler erstellen
  2. Legen Sie einen wiederkehrenden Zeitplan für den Job fest.
  3. ein Pub/Sub-Thema als Jobziel angeben
  4. Führen Sie den Job aus.
  5. prüfen, ob der Job erfolgreich ausgeführt wurde

Hinweis

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. 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.

  8. Cloud Shell ist in Terraform bereits integriert. Informationen zum Installieren von Terraform finden Sie in der HashiCorp Terraform-Dokumentation.

Terraform-Konfigurationsdatei erstellen

Wenn Sie Terraform mit Cloud Scheduler verwenden möchten, müssen Sie eine Konfigurationsdatei erstellen, um Ihre Infrastruktur zu beschreiben und einen Ausführungsplan zu erstellen. Anschließend wenden Sie die Konfigurationsdatei auf Ihre Plattform oder Ihren Dienst an, um Vorgänge zur Bereitstellung Ihrer Infrastruktur auszuführen.

Führen Sie die folgenden Schritte aus, um eine Terraform-Konfigurationsdatei namens main.tf zu erstellen:

  1. Öffnen Sie ein Terminal und erstellen Sie ein Verzeichnis:

    mkdir terraform
  2. Wechseln Sie in das Verzeichnis terraform:

    cd terraform
  3. Fügen Sie dem Verzeichnis die neue Datei main.tf hinzu:

    nano main.tf
  4. Fügen Sie der Datei main.tf den folgenden Terraform-Anbieter für Google Cloud-Ressourcen hinzu:

    1. Aktivieren Sie die Cloud Scheduler API und die Pub/Sub API:

      # 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. Erstelle ein Pub/Sub-Thema als Ressource, an die Nachrichten von Publishern gesendet werden können:

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

      Dadurch wird ein Thema namens pubsub_topic erstellt.

    3. Erstellen Sie ein Abo, um Nachrichten zu empfangen, die im Pub/Sub-Thema veröffentlicht wurden:

      # Create Pub/Sub subscription
      resource "google_pubsub_subscription" "default" {
        name  = "pubsub_subscription"
        topic = google_pubsub_topic.default.name
      }
    4. Erstellen Sie einen Cronjob mit der 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!")
        }
      }

      Im Beispiel werden die folgenden Argumente verwendet:

      • name: Der Name des Jobs.
      • description: Eine Beschreibung der Stelle.
      • schedule: Häufigkeit der Ausführung des Jobs in einem Format, das auf Unix-Cron basiert.

        In diesem Beispiel bedeutet 30 16 * * 7, dass der Job sonntags um 16:30 Uhr ausgeführt wird. Weitere Informationen finden Sie unter Format und Zeitzone für Cronjobs.

      • region: die Region, in der sich der Job befindet.

      • pubsub_target: das Pub/Sub-Thema, einschließlich des vollständigen Ressourcennamens des Themas (topic_name), unter dem die Nachrichtenn-Nutzlast (data) veröffentlicht wird, wenn der Job ausgeführt wird.

      Andere Argumente werden unterstützt. Weitere Informationen finden Sie in der Referenz zu Terraform-Registry-Argumenten.

Cronjob erstellen

Stellen Sie Ihre Terraform-Ressourcen bereit, um den Cron-Job zu erstellen.

  1. Öffnen Sie ein Terminal und initialisieren Sie Terraform im Verzeichnis terraform:

    terraform init
  2. Prüfen Sie, ob die vorgeschlagenen Änderungen mit Terraform dem erwarteten Plan entsprechen:

    terraform plan

    Sie können die Notiz zum Verwenden der Option -out ignorieren.

  3. Erstellen Sie den Cronjob:

    terraform apply
  4. Geben Sie bei der Eingabeaufforderung Wert eingeben yes ein, um mit dem Erstellen der Ressourcen fortzufahren.

  5. Prüfen Sie, ob ein Job erstellt wurde:

    gcloud scheduler jobs describe test-job --location=us-central1

    Die Ausgabe sollte in etwa so aussehen:

    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

Sie haben einen Job erstellt, der sonntags um 16:30 Uhr eine Nachricht an ein Pub/Sub-Thema sendet. Sie können den Job jetzt ausführen.

Job ausführen

Sie können den Job nicht nur gemäß dem angegebenen Zeitplan ausführen, sondern auch mit dem folgenden Befehl sofort starten.

gcloud scheduler jobs run test-job --location=us-central1

Aufgrund der Erstkonfiguration kann es einige Minuten dauern, bis der erste Job, der in einem Projekt erstellt wurde, ausgeführt wird.

Die Ergebnisse prüfen

Prüfen Sie, ob Ihr Pub/Sub-Thema Nachrichten von Ihrem Job empfängt.

  1. Rufen Sie mit dem folgenden Befehl Pub/Sub-Nachrichten aus einem Abo ab:

    gcloud pubsub subscriptions pull pubsub_subscription --limit 5
    

    Wenn keine Nachrichten abgerufen werden, führen Sie den Befehl noch einmal aus.

  2. Sehen Sie sich die Ergebnisse des ausgeführten Jobs an. Die Ausgabe sollte ungefähr so aussehen:

    DATA: Hello world!
    MESSAGE_ID: 5028933846601543
    ORDERING_KEY:
    ATTRIBUTES:
    DELIVERY_ATTEMPT:
    ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
    

Bereinigen

Löschen Sie das Google Cloud-Projekt mit den Ressourcen, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.

  1. Wenn Sie Ihr Google Cloud-Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet. Standardmäßig bleiben alle Dateien in Ihrem Cloud Shell-Basisverzeichnis (z. B. Terraform-Dateien) zwischen den Sitzungen erhalten.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID
  2. Alternativ können Sie alle mit Terraform erstellten Ressourcen löschen.

    Mit dem Befehl terraform destroy werden alle Ressourcen beendet, die in Ihrem Terraform-Status angegeben sind. Ressourcen, die nicht vom aktuellen Terraform-Projekt verwaltet werden, werden nicht gelöscht. Ihre Terraform-Konfigurationsdatei wird nicht gelöscht. Weitere Informationen finden Sie unter Infrastruktur löschen.

    terraform destroy

Nächste Schritte