Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Cette page accompagne la page principale sur créer des environnements. Il montre comment configurer Environnement Cloud Composer et un compte de service géré par l'utilisateur pour cet environnement dans un projet Google Cloud existant Terraform : Vous pouvez utiliser cette page comme point de départ, puis ajouter d'autres paramètres de configuration pour votre environnement, si nécessaire.
Avant de commencer
Dans ce guide, nous partons du principe que vous disposez d'un projet Google Cloud configuration de la facturation:
- Vous pouvez utiliser un projet existant.
- Vous pouvez créer un projet à l'aide de la console Google Cloud, de Google Cloud CLI, d'une API ou d'une bibliothèque cliente Python.
- Vous pouvez créer et gérer votre projet à l'aide de Terraform. Pour plus
consultez la documentation Terraform pour découvrir
Ressource
google_project
.
Authentification avec Google Cloud
Pour vous authentifier auprès de Google Cloud, exécutez la commande suivante :
gcloud auth application-default login
Pour en savoir plus sur cette commande, consultez la page sur gcloud auth application-default
.
Configurer le fournisseur Google dans Terraform
Spécifiez votre ID de projet existant. et une région par défaut pour les ressources. Votre Cloud Composer utilise cette région.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Activer l'API Cloud Composer
Activez l'API Cloud Composer dans votre projet :
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
}
Créer un compte de service personnalisé dans votre projet
Par défaut, les environnements Cloud Composer utilisent compte Compute Engine. Ce guide présente une autre approche : en créant un compte de service, qui dispose de toutes les autorisations nécessaires pour exécuter Cloud Composer.
Définissez un compte de service personnalisé avec les rôles et les autorisations suivants. Pour plus d'informations sur les autorisations pour les comptes de service de l'environnement, consultez Contrôle des accès avec 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"
}
Accorder les autorisations requises au compte de service Cloud Composer
Ajoutez une liaison de rôle à la stratégie d'autorisation du compte de service de votre environnement.
Vous ajoutez un compte d'agent de service Cloud Composer en tant que nouveau compte principal sur le compte de service de votre environnement et accordez à l'API Cloud Composer v2 Extension d'agent de service.
Si vous n'utilisez pas Terraform pour définir la règle d'autorisation de votre projet, n'utilisez pas l'exemple suivant. Ajoutez plutôt cette liaison à l'aide d'autres méthodes.
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"
}
Créez un environnement
Créer votre environnement à l'aide de Terraform
L'exemple montre comment créer un environnement qui utilise un compte de service personnalisé. Vous pouvez ajouter des paramètres qui définissent d'autres configurations paramètres de votre environnement, tels que l'évolutivité et les performances personnalisées des paramètres ou des packages PyPI supplémentaires.
Pour en savoir plus sur les autres paramètres, consultez la page Créer des environnements.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.7-airflow-2.9.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Script Terraform complet (paramètres par défaut)
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.7-airflow-2.9.3"
}
}
}
Script Terraform complet (compte de service personnalisé)
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.7-airflow-2.9.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Étape suivante
Consultez d'autres pages de documentation pour savoir comment configurer votre avec Terraform. Exemple :
- Créer des environnements
- Remplacer les options de configuration Airflow
- Définir des variables d'environnement
- Installer des dépendances Python
- Faire évoluer des environnements