Workflow mit Terraform erstellen

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

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

Sie führen die folgenden Schritte aus:

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

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.

Hinweis: Cloud Shell ist in Terraform bereits integriert. Wenn Sie Terraform installieren müssen, lesen Sie die HashiCorp Terraform-Dokumentation.

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • 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 „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch 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_ID durch den Namen Ihres Projekts in Google Cloud .

  6. 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.

  7. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  8. Aktivieren Sie die Cloud Resource Manager API, die Identity and Access Management (IAM) API und die Service Usage API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com serviceusage.googleapis.com
  9. Installieren Sie die Google Cloud CLI.

  10. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  11. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • 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 „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch 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_ID durch den Namen Ihres Projekts in Google Cloud .

  13. 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.

  14. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  15. Aktivieren Sie die Cloud Resource Manager API, die Identity and Access Management (IAM) API und die Service Usage API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

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

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:

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

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

Hinweis: Sie können Interpolation für Ersetzungen wie Referenzvariablen, Ressourcenattribute und Aufruffunktionen 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 mit 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
      
        deletion_protection = false # set to "true" in production
      
        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]
      } maskiert werden.
      

Im Beispielworkflow werden die folgenden Argumente verwendet:

  • name: Der Name Ihres Workflows.
  • region: Der Speicherort Ihres Workflows.
  • description: Eine Beschreibung Ihres Workflows.
  • service_account: Die E-Mail-Adresse oder eindeutige ID des Dienstkontos, das 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 Zugriff auf Google Cloud -Ressourcen für einen Workflow gewähren.
  • labels: Eine Liste von Schlüssel/Wert-Labelpaaren, die diesem Workflow zugewiesen werden sollen, um Ihre Google Cloud Instanzen zu organisieren. Weitere Informationen finden Sie unter Was sind Labels?
  • user_env_vars: Benutzerdefinierte Umgebungsvariablen, die mit dieser Workflow-Revision verknüpft sind. Weitere Informationen finden Sie unter Umgebungsvariablen verwenden.
  • source_contents: Der auszuführende Workflows-Code. Informationen zum Dateigrößenlimit finden Sie unter Ressourcenlimits.

Weitere optionale Argumente:

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

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

    Weitere Informationen finden Sie unter kundenverwaltete Verschlüsselungsschlüssel verwenden.

  • call_log_level: Die Ebene des Loggings, 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 Anrufliste.

  • project: die ID des Projekts, zu dem die Ressource gehört. Wenn nicht angegeben, wird das Providerprojekt verwendet.

  • name_prefix: Erstellt einen eindeutigen Namen, der mit dem angegebenen Präfix beginnt. Wenn diese und name nicht angegeben sind, wird ein zufälliger Wert für den Namen 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 bei der Eingabeaufforderung Wert eingeben yes ein, um mit dem Erstellen der Ressourcen fortzufahren.

  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 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.

  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.

      Google Cloud -Projekt löschen:

      gcloud projects delete PROJECT_ID

Nächste Schritte