Cronjob mit Terraform erstellen und planen

In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform einen Cloud Scheduler-Cronjob erstellen. Terraform ist ein IaC-Tool (Infrastruktur als Code), mit dem Sie Ihre Cloud-Infrastruktur mithilfe von Code vorhersehbar erstellen, ändern und verbessern können. Weitere Informationen finden Sie unter Mit Terraform die Infrastruktur in Google Cloud bereitstellen.

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

In dieser Kurzanleitung werden folgende Schritte erläutert:

  1. Verwenden Sie Terraform, um einen Cronjob für Cloud Scheduler zu 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

Hinweise

  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Installieren Sie die Google Cloud CLI.
  3. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    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. Installieren Sie die Google Cloud CLI.
  6. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    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. Terraform ist in Cloud Shell 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 zum Beschreiben Ihrer Infrastruktur und einen Ausführungsplan erstellen. Anschließend wenden Sie die Konfigurationsdatei auf Ihre Plattform oder Ihren Dienst an, um Vorgänge zum Bereitstellen Ihrer Infrastruktur auszuführen.

Führen Sie die folgenden Schritte aus, um eine Terraform-Konfigurationsdatei mit dem Namen 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 die folgenden Terraform-Anbieter für Google Cloud 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. Erstellen Sie 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 erhalten, die im Pub/Sub-Thema veröffentlicht werden:

      # 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 des Jobs.
      • schedule: Die Häufigkeit 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 Cron-Jobformat und Zeitzone.

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

      • pubsub_target: das Ziel des Pub/Sub-Themas, einschließlich des vollständigen Ressourcennamens des Themas (topic_name), in dem die Nachrichtennutzlast (data) beim Ausführen des Jobs veröffentlicht wird.

      Andere Argumente werden unterstützt. Weitere Informationen finden Sie in der Argumentreferenz für Terraform Registry.

Cronjob erstellen

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

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

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

    terraform plan
    

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

  3. Erstellen Sie den Cronjob:

    terraform apply
    
  4. Geben Sie in der Eingabeaufforderung Wert eingeben yes ein, um mit dem Erstellen von 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

Mit dem folgenden Befehl können Sie den Job nicht nur nach dem angegebenen Zeitplan, sondern auch sofort ausführen lassen.

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 das 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 im Cloud Shell-Basisverzeichnis (z. B. Terraform-Dateien) zwischen den Sitzungen erhalten.

    Google Cloud-Projekt löschen:

    gcloud projects delete PROJECT_ID
  2. Alternativ können Sie alle Ressourcen löschen, die Sie mit Terraform erstellt haben.

    Der Befehl terraform destroy beendet alle im Terraform-Zustand angegebenen Ressourcen. 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