Umgebungen mit Terraform erstellen

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Diese Seite ist eine Ergänzung zur Hauptseite zum Erstellen von Umgebungen. Darin wird gezeigt, wie Sie eine Cloud Composer-Umgebung und ein nutzerverwaltetes Dienstkonto für diese Umgebung in einem vorhandenen Google Cloud Projekt mit Terraform einrichten. Sie können diese Seite als Ausgangspunkt verwenden und nach Bedarf weitere Konfigurationsparameter für Ihre Umgebung hinzufügen.

Hinweis

  • In diesem Leitfaden wird davon ausgegangen, dass Sie ein Google Cloud Projekt mit konfigurierter Abrechnung haben:

    • Sie können auch ein vorhandenes Projekt verwenden.
    • Sie können ein neues Projekt erstellen, indem Sie die Google Cloud Console, die Google Cloud CLI, die API oder eine Python-Clientbibliothek verwenden.
    • Sie können Ihr Projekt mit Terraform erstellen und verwalten. Weitere Informationen finden Sie in der Terraform-Dokumentation zur Ressource google_project.
  • Installieren Sie die gcloud CLI.

Mit Google Cloudauthentifizieren

Führen Sie Folgendes aus, um sich mit Google Cloudzu authentifizieren:

gcloud auth application-default login

Weitere Informationen zu diesem Befehl finden Sie unter gcloud auth application-default.

Google-Anbieter in Terraform konfigurieren

Geben Sie Ihre vorhandene Projekt-ID und eine Standardregion für Ressourcen an. Diese Region wird von Ihrer Cloud Composer-Umgebung verwendet.

provider "google-beta" {
  project = "example-project"
  region  = "us-central1"
}

Cloud Composer API aktivieren

Aktivieren Sie die Cloud Composer API in Ihrem Projekt:

resource "google_project_service" "composer_api" {
  provider = google-beta
  project = "example-project"
  service = "composer.googleapis.com"
  // Disabling Cloud Composer API might irreversibly break all other
  // environments in your project.
  // This parameter prevents automatic disabling
  // of the API when the resource is destroyed.
  // We recommend to disable the API only after all environments are deleted.
  disable_on_destroy = false
  // this flag is introduced in 5.39.0 version of Terraform. If set to true it will
  //prevent you from disabling composer_api through Terraform if any environment was
  //there in the last 30 days
  check_if_service_has_usage_on_destroy = true
}

Dienstkonto einer Umgebung in Ihrem Projekt erstellen

In dieser Anleitung wird gezeigt, wie Sie das Dienstkonto einer Umgebung erstellen, das alle erforderlichen Berechtigungen zum Ausführen einer Cloud Composer-Umgebung hat.

Wir empfehlen dringend, ein nutzerverwaltetes Dienstkonto für Ihre Cloud Composer-Umgebungen einzurichten, das nur die Berechtigungen hat, die zum Ausführen Ihrer Umgebung und Vorgänge in Ihren DAGs erforderlich sind, wie in diesem Leitfaden beschrieben.

Wir empfehlen zwar, diesen Ansatz nicht zu verwenden, aber wenn Sie das Dienstkonto einer Umgebung nicht angeben, verwendet Ihre Cloud Composer-Umgebung das Compute Engine-Standarddienstkonto.

Das Dienstkonto Ihrer Umgebung benötigt möglicherweise zusätzliche Berechtigungen, um auf andere Ressourcen in Ihrem Projekt zuzugreifen. Wenn Ihre DAGs beispielsweise Daten in BigQuery übertragen, benötigt dieses Konto möglicherweise BigQuery-spezifische Berechtigungen oder Rollen.

Definieren Sie ein benutzerdefiniertes Dienstkonto mit den folgenden Rollen und Berechtigungen:

resource "google_service_account" "custom_service_account" {
  provider = google-beta
  account_id   = "custom-service-account"
  display_name = "Example Custom Service Account"
}

resource "google_project_iam_member" "custom_service_account" {
  provider = google-beta
  project  = "example-project"
  member   = format("serviceAccount:%s", google_service_account.custom_service_account.email)
  // Role for Public IP environments
  role     = "roles/composer.worker"
}

Umgebung erstellen

Erstellen Sie die Umgebung mit Terraform.

Das Beispiel zeigt, wie Sie eine Umgebung mit einem benutzerdefinierten Dienstkonto erstellen. Sie können weitere Parameter hinzufügen, die andere Konfigurationsparameter Ihrer Umgebung definieren, z. B. benutzerdefinierte Skalierungs- und Leistungsparameter oder zusätzliche PyPI-Pakete.

Weitere Informationen zu anderen Parametern finden Sie unter Umgebungen erstellen.

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"

  config {

    software_config {
      image_version = "composer-3-airflow-2.10.2-build.7"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Vollständiges Terraform-Script

provider "google-beta" {
  project = "example-project"
  region  = "us-central1"
}

resource "google_project_service" "composer_api" {
  provider = google-beta
  project = "example-project"
  service = "composer.googleapis.com"
  // Disabling Cloud Composer API might irreversibly break all other
  // environments in your project.
  disable_on_destroy = false
  // this flag is introduced in 5.39.0 version of Terraform. If set to true it will
  //prevent you from disabling composer_api through Terraform if any environment was
  //there in the last 30 days
  check_if_service_has_usage_on_destroy = true
}

resource "google_service_account" "custom_service_account" {
  provider = google-beta
  account_id   = "custom-service-account"
  display_name = "Example Custom Service Account"
}

resource "google_project_iam_member" "custom_service_account" {
  provider = google-beta
  project  = "example-project"
  member   = format("serviceAccount:%s", google_service_account.custom_service_account.email)
  // Role for Public IP environments
  role     = "roles/composer.worker"
}

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"

  config {

    software_config {
      image_version = "composer-3-airflow-2.10.2-build.7"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Nächste Schritte

Auf anderen Dokumentationsseiten finden Sie Informationen zum Konfigurieren Ihrer Umgebung mit Terraform. Beispiel: