Umgebungen mit Terraform erstellen

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

Hinweis

  • In dieser Anleitung wird davon ausgegangen, dass Sie ein Google Cloud-Projekt mit konfigurierter Abrechnung haben:

    • Sie können 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 Cloud authentifizieren

Führen Sie zum Authentifizieren bei Google Cloud Folgendes aus:

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
}

Benutzerdefiniertes Dienstkonto in Ihrem Projekt erstellen

Standardmäßig verwenden Cloud Composer-Umgebungen die Standardeinstellung Compute Engine-Konto. In dieser Anleitung wird ein anderer Ansatz veranschaulicht: Es wird ein neues Dienstkonto erstellt, das alle erforderlichen Berechtigungen zum Ausführen einer Cloud Composer-Umgebung hat.

Definieren Sie ein benutzerdefiniertes Dienstkonto mit den folgenden Rollen und Berechtigungen. Für Weitere Informationen zu Berechtigungen für die Dienstkonten der Umgebung finden Sie unter Zugriffssteuerung mit IAM

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"
}

Erforderliche Berechtigungen für das Cloud Composer-Dienstkonto gewähren

Dem Dienstkonto der Umgebung eine neue Rollenbindung hinzufügen allow-Richtlinie

Sie fügen das Cloud Composer-Dienst-Agent-Konto als neues Hauptkonto hinzu im Dienstkonto Ihrer Umgebung und gewähren Sie die Cloud Composer v2 API Dienst-Agent-Erweiterung.

Verwenden Sie das folgende Beispiel nur, wenn Sie Terraform zum Definieren der Zulassungsrichtlinie Ihres Projekts verwenden. Fügen Sie diese Bindung stattdessen mit anderen .

resource "google_service_account_iam_member" "custom_service_account" {
  provider = google-beta
  service_account_id = google_service_account.custom_service_account.name
  role = "roles/composer.ServiceAgentV2Ext"
  member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}

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 weitere Konfigurationen Parameter Ihrer Umgebung, z. B. benutzerdefinierte Skalierung und Leistung 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-2.9.6-airflow-2.9.1"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Vollständiges Terraform-Script (Standardparameter)

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_project_iam_member" "service_agent_role" {
  provider = google-beta
  project  = "example-project"
  member   = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
  role     = "roles/composer.ServiceAgentV2Ext"
}

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

  config {

    // Add your environment configuration here

    software_config {
      image_version = "composer-2.9.6-airflow-2.9.1"
    }

  }
}

Vollständiges Terraform-Script (benutzerdefiniertes Dienstkonto)

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_service_account_iam_member" "custom_service_account" {
  provider = google-beta
  service_account_id = google_service_account.custom_service_account.name
  role = "roles/composer.ServiceAgentV2Ext"
  member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}

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

  config {

    software_config {
      image_version = "composer-2.9.6-airflow-2.9.1"
    }

    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: