Cronjob mit Terraform planen und ausführen
In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform einen Cloud Scheduler-Cron-Job 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 auf 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
Hinweise
-
Sign in to your Google Account.
If you don't already have one, sign up for a new account.
-
Install the 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 folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
-
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 folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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. Wenn Sie Terraform installieren müssen, lesen Sie die HashiCorp Terraform-Dokumentation.
Ö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
die folgenden Terraform-Provider für Google Cloud-Ressourcen hinzu:Aktivieren Sie die Cloud Scheduler API und die Pub/Sub API:
Erstellen Sie 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 werden:
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-Thema als Ziel, einschließlich des vollständigen Ressourcennamens des Themas (topic_name
), in dem die Nutzlast der Nachricht (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.
Ö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.Cronjob erstellen:
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
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[...]
- 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.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Alternativ können Sie alle Ressourcen löschen, die Sie mit Terraform erstellt haben.
Mit dem Befehl
terraform destroy
werden alle Ressourcen beendet, die in Ihrem Terraform-Zustand angegeben sind. Es werden keine Ressourcen zerstört, 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
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:
Cronjob erstellen
Stellen Sie Ihre Terraform-Ressourcen bereit, um den Cron-Job zu erstellen.
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 sofort ausführen lassen, indem Sie den folgenden Befehl ausführen.
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.
Bereinigen
Löschen Sie das Google Cloud -Projekt zusammen mit den Ressourcen, damit Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.