Membuat lingkungan dengan Terraform

Cloud Composer 1 | Cloud Composer 2

Halaman ini merupakan pengiring untuk halaman utama tentang membuat lingkungan. Contoh ini menunjukkan cara menyiapkan lingkungan Cloud Composer dan akun layanan yang dikelola pengguna untuk lingkungan ini dalam project Google Cloud yang ada dengan Terraform. Anda dapat menggunakan halaman ini sebagai awal, lalu menambahkan lebih banyak parameter konfigurasi untuk lingkungan Anda, sesuai kebutuhan.

Sebelum memulai

  • Panduan ini mengasumsikan bahwa Anda memiliki project Google Cloud dengan penagihan yang dikonfigurasi:

    • Anda dapat menggunakan project yang sudah ada.
    • Anda dapat membuat project baru menggunakan Konsol Google Cloud, Google Cloud CLI, API, atau library klien Python.
    • Anda dapat membuat dan mengelola project menggunakan Terraform. Untuk mengetahui informasi selengkapnya, baca dokumentasi Terraform untuk resource google_project.
  • Instal gcloud CLI.

Melakukan autentikasi dengan Google Cloud

Untuk melakukan autentikasi dengan Google Cloud, jalankan:

gcloud auth application-default login

Untuk informasi selengkapnya tentang perintah ini, lihat gcloud auth application-default.

Mengonfigurasi penyedia Google di Terraform

Tentukan project ID yang sudah ada dan region default untuk resource. Lingkungan Cloud Composer Anda menggunakan region ini.

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

Mengaktifkan Cloud Composer API

Aktifkan Cloud Composer API di project Anda:

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
}

Membuat akun layanan kustom di project Anda

Secara default, lingkungan Cloud Composer menggunakan akun Compute Engine default. Panduan ini menunjukkan pendekatan lain, dengan membuat akun layanan baru, yang memiliki semua izin yang diperlukan untuk menjalankan lingkungan Cloud Composer.

Tentukan akun layanan kustom dengan peran dan izin berikut. Untuk mengetahui informasi selengkapnya tentang izin untuk akun layanan lingkungan, lihat Kontrol akses dengan 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"
}

Memberikan izin yang diperlukan ke akun layanan Cloud Composer

Tambahkan binding peran baru ke kebijakan izinkan akun layanan lingkungan Anda.

Anda menambahkan akun Agen Layanan Cloud Composer sebagai akun utama baru di akun layanan lingkungan Anda dan memberikan peran Cloud Composer v2 API Service Agent Extension ke akun tersebut.

Jika Anda tidak menggunakan Terraform untuk menentukan kebijakan izinkan project, jangan gunakan contoh berikut. Sebagai gantinya, tambahkan binding ini menggunakan metode lain.

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

Membuat lingkungan

Buat lingkungan Anda menggunakan Terraform.

Contoh ini menunjukkan cara membuat lingkungan yang menggunakan akun layanan kustom. Anda dapat menambahkan parameter lainnya yang menentukan parameter konfigurasi lain lingkungan Anda, seperti skala kustom dan parameter performa, atau paket PyPI tambahan.

Untuk mengetahui informasi selengkapnya tentang parameter lainnya, lihat Membuat lingkungan.

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

  config {
    software_config {
      image_version = "composer-2.6.6-airflow-2.6.3"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Skrip Terraform lengkap (parameter default)

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
}

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.6.6-airflow-2.6.3"
    }

  }
}

Skrip Terraform lengkap (akun layanan kustom)

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
}

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.6.6-airflow-2.6.3"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Langkah selanjutnya

Baca halaman dokumentasi lainnya untuk mengetahui informasi tentang cara mengonfigurasi lingkungan Anda dengan Terraform. Contoh: