Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Questa pagina è un'integrazione della pagina principale su la creazione di ambienti. Mostra come configurare un ambiente Cloud Composer e un account di servizio gestito dall'utente per questo ambiente in un progetto Google Cloud esistente con Terraform. Puoi usare questa pagina come inizio, poi aggiungerne altre parametri di configurazione per il tuo ambiente, se necessario.
Prima di iniziare
Questa guida presuppone che tu abbia un progetto Google Cloud con la fatturazione configurata:
- Puoi utilizzare un progetto esistente.
- Puoi creare un nuovo progetto utilizzando la console Google Cloud, Google Cloud CLI, l'API o una libreria client Python.
- Puoi creare e gestire il tuo progetto utilizzando Terraform. Per maggiori informazioni
consulta la documentazione di Terraform per
google_project
.
Autenticazione con Google Cloud
Per eseguire l'autenticazione con Google Cloud, esegui:
gcloud auth application-default login
Per ulteriori informazioni su questo comando, consulta
gcloud auth application-default
.
Configura il provider Google in Terraform
Specifica l'ID progetto esistente e una regione predefinita per le risorse. Il tuo Cloud Composer utilizza questa regione.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Abilita l'API Cloud Composer
Abilita l'API Cloud Composer nel tuo progetto:
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
}
Crea un account di servizio personalizzato nel progetto
Per impostazione predefinita, gli ambienti Cloud Composer utilizzano il valore predefinito Compute Engine. Questa guida illustra un altro approccio, che consiste nel creare un nuovo account di servizio con tutte le autorizzazioni necessarie per eseguire un ambiente Cloud Composer.
Definisci un account di servizio personalizzato con i seguenti ruoli e autorizzazioni. Per Per ulteriori informazioni sulle autorizzazioni per gli account di servizio dell'ambiente, vedi Controllo dell'accesso con 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"
}
Creazione di un ambiente
Crea il tuo ambiente utilizzando Terraform.
L'esempio mostra come creare un ambiente che utilizza un account di servizio personalizzato. Puoi aggiungere altri parametri che definiscono altre configurazioni parametri del tuo ambiente, come scalabilità e prestazioni personalizzate o altri pacchetti PyPI.
Per ulteriori informazioni su altri parametri, vedi Crea ambienti.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-3-airflow-2.9.3-build.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Script Terraform completo (parametri predefiniti)
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_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
// Add your environment configuration here
software_config {
image_version = "composer-3-airflow-2.9.3-build.3"
}
}
}
Script Terraform completo (account di servizio personalizzato)
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.9.3-build.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Passaggi successivi
Consulta le altre pagine della documentazione per informazioni sulla configurazione dell'ambiente con Terraform. Ad esempio:
- Crea ambienti
- Esegui l'override delle opzioni di configurazione di Airflow
- Impostare le variabili di ambiente
- Installa le dipendenze Python
- Ambienti di scalabilità