Defina variáveis de ambiente

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página explica como definir variáveis de ambiente no seu ambiente do Cloud Composer.

Pode usar variáveis de ambiente como alternativa às variáveis do Airflow quando fornece a configuração de tempo de execução para os seus DAGs. As variáveis do Airflow são definidas na base de dados do Airflow, enquanto as variáveis de ambiente são definidas no contentor do trabalhador do Airflow.

Por exemplo, pode usar o nome de uma variável de ambiente tal como está num comando executado por um BashOperator ou obter este valor do objeto os.environ no DAG ou usar uma variável do Airflow.

As variáveis de ambiente são persistentes. Depois de especificar uma variável de ambiente, o Airflow continua a usá-la até remover a variável do seu ambiente.

O Cloud Composer define as suas próprias variáveis de ambiente reservadas para controlar os ambientes.

Formato do nome

As variáveis de ambiente têm de corresponder à expressão regular [a-zA-Z_][a-zA-Z0-9_]*.

Opções de configuração do Airflow

Não é possível especificar variáveis que alterem as opções de configuração do Apache Airflow.

As variáveis não podem usar o formato AIRFLOW__{SECTION}__{KEY} nem corresponder à expressão regular AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+. Por exemplo, não é possível definir AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW.

Em alternativa, pode substituir as opções de configuração do Airflow.

Variáveis reservadas

Os seguintes nomes de variáveis são reservados pelo Cloud Composer. Não é possível criar variáveis com estes nomes.

  • AIRFLOW_DATABASE_VERSION
  • AIRFLOW_HOME
  • AIRFLOW_SRC_DIR
  • AIRFLOW_WEBSERVER
  • AUTO_GKE
  • CLOUDSDK_METRICS_ENVIRONMENT
  • CLOUD_LOGGING_ONLY
  • COMPOSER_AGENT_BUILD_SERVICE_ACCOUNT
  • COMPOSER_ENVIRONMENT
  • COMPOSER_GKE_LOCATION
  • COMPOSER_GKE_NAME
  • COMPOSER_GKE_ZONE
  • COMPOSER_LOCATION
  • COMPOSER_OPERATION_UUID
  • COMPOSER_PYTHON_VERSION
  • COMPOSER_VERSION
  • CONTAINER_NAME
  • C_FORCE_ROOT
  • DAGS_FOLDER
  • GCE_METADATA_TIMEOUT
  • GCP_PROJECT
  • GCP_TENANT_PROJECT
  • GCSFUSE_EXTRACTED
  • GCS_BUCKET
  • GKE_CLUSTER_NAME
  • GKE_IN_TENANT
  • GOOGLE_APPLICATION_CREDENTIALS

  • GOOGLE_CLOUD_PROJECT

  • MAJOR_VERSION

  • MINOR_VERSION

  • PATH

  • PIP_DISABLE_PIP_VERSION_CHECK

  • PORT

  • PROJECT_ID

  • PYTHONPYCACHEPREFIX

  • PYTHONWARNINGS

  • REDIS_PASSWORD

  • REDIS_PORT

  • REDIS_USER

  • SQL_DATABASE

  • SQL_HOST

  • SQL_INSTANCE

  • SQL_PASSWORD

  • SQL_PROJECT

  • SQL_REGION

  • SQL_USER

Defina variáveis de ambiente para novos ambientes

Pode especificar variáveis de ambiente quando cria um ambiente. Para mais informações, consulte o artigo Crie ambientes.

Defina variáveis de ambiente para ambientes existentes

Consola

Para definir variáveis de ambiente para um ambiente existente:

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.

  3. Aceda ao separador Variáveis de ambiente e clique em Editar.

  4. Adicione, altere ou elimine variáveis de ambiente para o seu ambiente:

    • No campo Nome, especifique o nome da variável.
    • No campo Valor, especifique o valor da variável.
    • Para adicionar uma variável adicional, clique em Adicionar variável de ambiente.
    • Para eliminar uma variável, mantenha o ponteiro sobre uma variável e, de seguida, clique em Eliminar item.

gcloud

Os seguintes argumentos controlam as variáveis de ambiente:

  • --update-env-variables especifica uma lista de variáveis de ambiente separadas por vírgulas a criar ou atualizar.

  • --remove-env-variables especifica uma lista de variáveis de ambiente separadas por vírgulas a eliminar.

  • --clear-env-variables elimina todas as variáveis de ambiente existentes.

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --update-env-variables=NAME=VALUE

Substituir:

  • ENVIRONMENT_NAME com o nome do ambiente.
  • LOCATION com a região onde o ambiente está localizado.
  • NAME com o nome da variável que quer criar ou atualizar.
  • VALUE com o valor da variável.
  • Para adicionar mais do que uma variável, separe as definições com vírgulas: NAME=VALUE,NAME=VALUE,....

Exemplo:

gcloud composer environments update \
  example-environment \
  --location us-central1 \
  --update-env-variables=EXAMPLE_VARIABLE=True,ANOTHER_VARIABLE=test

API

Construa um pedido de API environments.patch.

Neste pedido:

  1. No parâmetro updateMask, especifique a máscara config.softwareConfig.envVariables para substituir todas as variáveis existentes pelas variáveis especificadas. As variáveis que não especificar são eliminadas.

  2. No corpo do pedido, especifique as variáveis e os respetivos valores:

    {
      "config": {
        "softwareConfig": {
          "envVariables": {
            "VAR_NAME": "VAR_VALUE"
          }
        }
      }
    }
    

    Substituir:

    • VAR_NAME com o nome da variável de ambiente.
    • VAR_VALUE com o valor da variável de ambiente.
    • Para adicionar mais de uma variável, adicione entradas adicionais para variáveis a envVariables.

Exemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.envVariables
{
  "config": {
    "softwareConfig": {
      "envVariables": {
        "EXAMPLE_VARIABLE": "True",
        "ANOTHER_VARIABLE": "test"
      }
    }
  }
}

Terraform

O bloco env_variables no bloco software_config especifica as variáveis de ambiente.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }

    }
  }
}

Substituir:

  • ENVIRONMENT_NAME com o nome do ambiente.
  • LOCATION com a região onde o ambiente está localizado.
  • VAR_NAME com o nome da variável de ambiente.
  • VAR_VALUE com o valor da variável de ambiente.
  • Para adicionar mais de uma variável, adicione entradas adicionais para variáveis a env_variables.

Exemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    software_config {

      env_variables = {
        EXAMPLE_VARIABLE = "True"
        ANOTHER_VARIABLE = "test"
      }
    }
  }
}

O que se segue?