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 Ihre Cloud-Infrastruktur mithilfe von Code vorhersehbar erstellen, ändern und verbessern können. Weitere Informationen zur Verwendung von Terraform zum Bereitstellen von Infrastruktur in Google Cloud.
Cloud Scheduler hat ein kostenloses Kontingent. 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
Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud -Umgebung entwickeln.
-
Melden Sie sich in Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.
Aktivieren Sie die Resource Manager API und die Service Usage API, falls sie noch nicht aktiviert sind:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Google Cloud Projekt erstellen oder auswählen
Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Wenn Sie für diese Anleitung ein vorhandenes Projekt verwenden, prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Wenn Sie ein neues Projekt erstellt haben, haben Sie bereits die erforderlichen Berechtigungen.
Aktivieren Sie die Resource Manager API und die Service Usage API, falls sie noch nicht aktiviert sind:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Inhaberrolle (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable cloudresourcemanager.googleapis.com
serviceusage.googleapis.com - In Cloud Shell ist Terraform bereits integriert. Wenn Sie Terraform installieren müssen, lesen Sie die HashiCorp Terraform-Dokumentation.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Kurzanleitung benötigen:
- Cloud Scheduler-Administrator (
roles/cloudscheduler.admin) - Pub/Sub-Bearbeiter (
roles/pubsub.editor)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
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 auszuführen, die Ihre Infrastruktur bereitstellen.
Führen Sie die folgenden Schritte aus, um eine Terraform-Konfigurationsdatei mit dem Namen main.tf zu erstellen:
Öffnen Sie ein Terminal und erstellen Sie ein Verzeichnis:
mkdir terraformWechseln Sie in das Verzeichnis
terraform:cd terraform
Fügen Sie dem Verzeichnis die neue Datei
main.tfhinzu:nano main.tfFügen Sie der Datei
main.tfdie folgenden Terraform-Anbieter für Google Cloud-Ressourcen hinzu:Aktivieren Sie die Cloud Scheduler und Pub/Sub APIs:
Erstellen Sie ein Pub/Sub-Thema als Ressource, an die Publisher Nachrichten senden können:
Dadurch wird ein Thema namens
pubsub_topicerstellt.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 des Jobs.schedule: Die Häufigkeit für den Job 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 Cronjob-Format und Zeitzone.region: Die Region, in der sich der Job befindet.pubsub_target: das Pub/Sub-Themenziel, einschließlich des vollständigen Ressourcennamens des Themas (topic_name), in dem die Nachrichtennutzlast (data) veröffentlicht wird, wenn der Job ausgeführt wird.
Andere Argumente werden unterstützt. Weitere Informationen finden Sie in der Argumentreferenz für die Terraform-Registry.
Ein weiteres Beispiel für die Verwendung von Terraform mit Cloud Scheduler finden Sie unter Cloud Run-Dienste nach einem Zeitplan ausführen.
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 initPrüfen Sie, ob die vorgeschlagenen Änderungen mit Terraform dem erwarteten Plan entsprechen:
terraform planSie können die Notiz zum Verwenden der Option
-outignorieren.Cronjob erstellen:
terraform applyGeben Sie bei der Aufforderung Geben Sie einen Wert ein den Wert
yesein, um mit dem Erstellen von Ressourcen fortzufahren.Prüfen Sie, ob ein Job erstellt wurde:
gcloud scheduler jobs describe test-job --location=us-east1
Die Ausgabe sollte in etwa so aussehen:
description: test job lastAttemptTime: '2024-04-04T13:56:00.669530Z' name: projects/PROJECT_ID/locations/us-east1/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 Ihren Job nicht nur gemäß dem angegebenen Zeitplan ausführen, sondern auch erzwingen, dass er sofort ausgeführt wird. Verwenden Sie dazu den folgenden Befehl.
gcloud scheduler jobs run test-job --location=us-east1
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 5Wenn 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 Projekt von Google Cloud zusammen mit den Ressourcen, damit Ihrem Konto von Google Cloud 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. alle Terraform-Dateien) zwischen den Sitzungen erhalten.
Google Cloud -Projekt löschen:
gcloud projects delete PROJECT_ID
Alternativ können Sie alle Ressourcen löschen, die Sie mit Terraform erstellt haben.
Mit dem Befehl
terraform destroywerden alle Ressourcen beendet, die in Ihrem Terraform-Zustand angegeben sind. Es werden keine Ressourcen gelöscht, die nicht vom aktuellen Terraform-Projekt verwaltet werden. Ihre Terraform-Konfigurationsdatei wird nicht gelöscht. Weitere Informationen finden Sie unter Infrastruktur zerstören.terraform destroy