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:
- Mit Terraform einen Cronjob für Cloud Scheduler erstellen
- Legen Sie einen wiederkehrenden Zeitplan für den Job fest.
- ein Pub/Sub-Thema als Jobziel angeben
- Führen Sie den Job aus.
- prüfen, ob der Job erfolgreich ausgeführt wurde
Hinweis
-
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.
-
- 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:
Öffnen Sie ein Terminal und erstellen Sie ein Verzeichnis:
mkdir terraform
Wechseln Sie in das Verzeichnis
terraform
:cd terraform
Fügen Sie dem Verzeichnis die neue Datei
main.tf
hinzu:nano main.tf
Fügen Sie der Datei
main.tf
den folgenden Terraform-Anbieter für Google Cloud-Ressourcen hinzu:Aktivieren Sie die Cloud Scheduler API und die Pub/Sub API:
Erstelle ein Pub/Sub-Thema als Ressource, an die Nachrichten von Publishern gesendet werden können:
Dadurch wird ein Thema namens
pubsub_topic
erstellt.Erstellen Sie ein Abo, um Nachrichten zu empfangen, die im Pub/Sub-Thema veröffentlicht wurden:
Erstellen Sie einen Cronjob mit der Ressource
google_cloud_scheduler_job
: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.
Öffnen Sie ein Terminal und initialisieren Sie Terraform im Verzeichnis
terraform
:terraform init
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.Erstellen Sie den Cronjob:
terraform apply
Geben Sie bei der Eingabeaufforderung Wert eingeben
yes
ein, um mit dem Erstellen der Ressourcen fortzufahren.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.
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.
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.
- 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
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