Criar ambientes com o Terraform

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Esta página é um complemento da página principal sobre criação de ambientes. Ele demonstra como configurar Ambiente do Cloud Composer e uma conta serviço gerenciado pelo usuário para esse ambiente em um projeto atual do Google Cloud com Terraform Você pode começar esta página e adicionar mais de configuração para seu ambiente, conforme necessário.

Antes de começar

  • Este guia pressupõe que você tenha um projeto do Google Cloud com faturamento configurado:

    • É possível usar um projeto atual.
    • É possível criar um novo projeto usando o console do Google Cloud, a Google Cloud CLI, a API ou uma biblioteca de cliente do Python.
    • É possível criar e gerenciar seu projeto usando o Terraform. Para mais consulte a documentação do Terraform para saber mais google_project.
  • Instale a gcloud CLI.

Autenticar com o Google Cloud

Para fazer a autenticação com o Google Cloud, execute:

gcloud auth application-default login

Para mais informações sobre esse comando, consulte gcloud auth application-default.

Configurar o provedor do Google no Terraform

Especifique o ID do projeto atual e uma região padrão para os recursos. O Cloud Composer usa essa região.

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

Ativar a API do Cloud Composer

Ative a API Cloud Composer no seu projeto:

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
}

Criar uma conta de serviço personalizada no projeto

Por padrão, os ambientes do Cloud Composer usam o do Compute Engine. Este guia demonstra outra abordagem, criar uma nova conta de serviço com todas as permissões necessárias para executar ambiente do Cloud Composer.

Defina uma conta de serviço personalizada com os papéis e permissões a seguir. Para mais informações sobre permissões para contas de serviço do ambiente, consulte Controle de acesso com o 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"
}

Criar um ambiente

Crie o ambiente usando o Terraform.

O exemplo demonstra como criar um ambiente que usa uma conta de serviço personalizada. É possível adicionar mais parâmetros que definem outras parâmetros do seu ambiente, como escalonamento e desempenho personalizados parâmetros ou pacotes PyPI adicionais.

Para mais informações sobre outros parâmetros, consulte Criar ambientes.

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

  config {

    software_config {
      image_version = "composer-1.20.12-airflow-1.10.15"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

Script completo do Terraform (parâmetros padrão)

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-1.20.12-airflow-1.10.15"
    }

  }
}

Script completo do Terraform (conta de serviço personalizada)

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-1.20.12-airflow-1.10.15"
    }

    node_config {
      service_account = google_service_account.custom_service_account.email
    }

  }
}

A seguir

Consulte outras páginas da documentação para saber como configurar seu ambiente com o Terraform. Exemplo: