Workflow mit Terraform erstellen

In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform Ihren ersten Workflow erstellen, bereitstellen und ausführen. Terraform ist ein IaC-Tool (Infrastruktur als Code), mit dem Sie die Cloud-Infrastruktur mithilfe von Code vorhersehbar erstellen, ändern und verbessern können. Informationen zur Verwendung von Terraform

In dieser Kurzanleitung sendet der Beispielworkflow eine Anfrage an eine öffentliche API und gibt die API-Antwort zurück.

Sie müssen Folgendes tun:

  1. Aktivieren Sie die Workflows API mit Terraform.
  2. Erstellen Sie mit Terraform ein Dienstkonto für den Workflow.
  3. Workflow mit Terraform definieren und bereitstellen
  4. Führen Sie den Workflow mit der Google Cloud CLI aus.

Hinweise

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.

In Cloud Shell ist Terraform bereits integriert. Bei Bedarf installieren Sie Terraform, finden Sie HashiCorp-Terraform-Dokumentation

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

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

  10. Make sure that billing is enabled for your Google Cloud project.

  11. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com

Terraform-Konfigurationsdatei erstellen

Erstellen Sie eine Terraform-Konfigurationsdatei namens main.tf und fügen Sie die in dieser Kurzanleitung verwendeten Ressourcen des Google-Anbieters für Terraform hinzu.

Sie können Interpolationen für Substitutionen wie Referenzvariablen, Attribute von Ressourcen und Funktionsaufrufe verwenden.

  1. 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 Ressourcen hinzu:

    1. Weisen Sie die ID des Projekts zu:

      provider "google" {
      project = "PROJECT_ID"
      }

      Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

    2. Workflows API aktivieren:

      # Enable Workflows API
      resource "google_project_service" "default" {
        service            = "workflows.googleapis.com"
        disable_on_destroy = false
      }

    3. Dienstkonto für den Broker erstellen

      # Create a dedicated service account
      resource "google_service_account" "default" {
        account_id   = "sample-workflows-sa"
        display_name = "Sample Workflows Service Account"
      }

    4. Definieren Sie den Workflow mithilfe der google_workflows_workflow-Ressource:

      # Create a workflow
      resource "google_workflows_workflow" "default" {
        name            = "sample-workflow"
        region          = "us-central1"
        description     = "A sample workflow"
        service_account = google_service_account.default.id
        labels = {
          env = "test"
        }
        user_env_vars = {
          url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"
        }
        source_contents = <<-EOF
        # This is a sample workflow that you can replace with your source code
        #
        # The workflow does the following:
        # - Retrieves the current date from a public API and stores the
        #   response in `currentDate`
        # - Retrieves a list of Wikipedia articles from a public API related
        #   to the day of the week stored in `currentDate`
        # - Returns the list of articles in the workflow output
        #
        # Note that when you define workflows in Terraform, variables must be
        # escaped with two dollar signs ($$) and not a single sign ($)
      
        - getCurrentDate:
            call: http.get
            args:
                url: $${sys.get_env("url")}
            result: currentDate
        - readWikipedia:
            call: http.get
            args:
                url: https://en.wikipedia.org/w/api.php
                query:
                    action: opensearch
                    search: $${currentDate.body.dayOfWeek}
            result: wikiResult
        - returnOutput:
            return: $${wikiResult.body[1]}
      EOF
      
        depends_on = [google_project_service.default]
      }
      

Im Beispielworkflow werden die folgenden Argumente verwendet:

  • name: Der Name Ihres Workflows.
  • region: die Ort Ihres Workflows.
  • description: Eine Beschreibung Ihres Workflows.
  • service_account: die E-Mail-Adresse oder eindeutige ID des Dienstkontos die mit der neuesten Workflowversion verknüpft ist. Dieses Dienstkonto stellt die Identität des Workflows dar und bestimmt, welche Berechtigungen der Workflow hat. Wenn Sie beim Erstellen des Workflows kein Dienstkonto angeben, verwendet der Workflow für die Identität das Compute Engine-Standarddienstkonto. Weitere Informationen finden Sie unter Workflowberechtigungen für den Zugriff auf Google Cloud-Ressourcen gewähren.
  • labels: Eine Liste von Schlüssel/Wert-Labelpaaren, die diesem Workflow zugewiesen werden, um Ihre Google Cloud-Instanzen zu organisieren. Weitere Informationen finden Sie unter Was sind Labels?
  • user_env_vars: Benutzerdefinierte Umgebungsvariablen, die mit dieser Workflowversion verknüpft sind. Weitere Informationen finden Sie unter Umgebungsvariablen verwenden
  • source_contents: Der auszuführende Workflow-Code. Für die Dateigrößenbeschränkung finden Sie unter Ressourcenlimits:

Weitere optionale Argumente sind:

  • crypto_key_name: die Ressourcen-ID für einen Cloud Key Management Service-Schlüssel im folgendes Format:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

    Weitere Informationen finden Sie unter vom Kunden verwaltete Verschlüsselungsschlüssel verwenden.

  • call_log_level: die Logging-Ebene, die auf Aufrufe und Aufrufantworten während der Ausführung dieses Workflows angewendet werden soll. Folgende Werte sind möglich:

    • CALL_LOG_LEVEL_UNSPECIFIED
    • LOG_ALL_CALLS
    • LOG_ERRORS_ONLY
    • LOG_NONE

    Weitere Informationen finden Sie unter Anrufprotokollierung.

  • project: die ID des Projekts, zu dem die Ressource gehört. Falls ja nicht angegeben ist, wird das Anbieterprojekt verwendet.

  • name_prefix: Erstellt einen eindeutigen Namen, der mit dem angegebenen Präfix beginnt. Wenn hier und name nicht angegeben sind, wird für den Namen ein zufälliger Wert ausgewählt.

Workflow erstellen und ausführen

Stellen Sie Ihre Terraform-Ressourcen bereit, um den Workflow zu erstellen, und führen Sie ihn dann aus.

  1. Initialisieren Sie Terraform im Verzeichnis:

    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 Workflow:

    terraform apply
  4. Geben Sie in die Eingabeaufforderung Wert eingeben yes ein, um mit der Erstellung des Ressourcen.

  5. Prüfen Sie, ob ein Workflow erstellt wird:

    gcloud workflows list --location us-central1

    Die Ausgabe sollte in etwa so aussehen:

    NAME                                                                    STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow   ACTIVE  000001-f9a   2024-02-24T13:38:58.353765906Z
  6. Optional können Sie den Workflow ausführen:

    gcloud workflows execute sample-workflow

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. Löschen Sie alle Ressourcen, die Sie mit Terraform erstellt haben:
    terraform destroy
  2. Löschen Sie den erstellten Workflow:
    gcloud workflows delete sample-workflow
    Wenn Sie gefragt werden, ob Sie fortfahren möchten, geben Sie y ein.
  3. Alternativ können Sie Ihr Google Cloud-Projekt löschen, um wiederkehrende Gebühren zu vermeiden. Wenn Sie Ihr Google Cloud-Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

Nächste Schritte