Configura las variables de entorno

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

En esta página, se explica cómo configurar variables de entorno en tu entorno de Cloud Composer.

Cloud Composer usa las variables de entorno para alterar el comportamiento del entorno de ejecución de Airflow o tus DAGs.

Las variables de entorno son persistentes. Una vez que especifiques una variable de entorno, Airflow la seguirá usando hasta que la quites de tu entorno.

Por ejemplo, Cloud Composer usa el módulo Sendgrid de Apache Airflow para las notificaciones por correo electrónico. Para configurar las notificaciones por correo electrónico, debes establecer las variables de entorno SENDGRID_API_KEY y SENDGRID_MAIL_FROM.

Formato de nombre

Las variables de entorno deben coincidir con la expresión regular [a-zA-Z_][a-zA-Z0-9_]*

Opciones de configuración de Airflow

No es posible especificar variables que cambien las opciones de configuración de Apache Airflow.

Las variables no pueden usar el formato AIRFLOW__{SECTION}__{KEY} ni coincidir con expresión regular AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+. Por ejemplo, no es posible establecer AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW.

En su lugar, puedes anular las opciones de configuración de Airflow.

Variables reservadas

Cloud Composer reserva los siguientes nombres de variables. No es posible crear variables con estos nombres.

  • AIRFLOW_DATABASE_VERSION
  • AIRFLOW_HOME
  • AIRFLOW_SRC_DIR
  • AIRFLOW_WEBSERVER
  • AUTO_GKE
  • CLOUDSDK_METRICS_ENVIRONMENT
  • CLOUD_LOGGING_ONLY
  • 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
  • GCP_PROJECT
  • GCP_TENANT_PROJECT
  • GCSFUSE_EXTRACTED
  • GCS_BUCKET
  • GKE_CLUSTER_NAME
  • GKE_IN_TENANT
  • GOOGLE_APPLICATION_CREDENTIALS
  • MAJOR_VERSION
  • MINOR_VERSION
  • PATH
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PORT
  • PROJECT_ID
  • PYTHONPYCACHEPREFIX
  • PYTHONWARNINGS
  • SQL_DATABASE
  • SQL_HOST
  • SQL_INSTANCE
  • SQL_PASSWORD
  • SQL_PROJECT
  • SQL_REGION
  • SQL_USER

Configura variables de entorno para entornos nuevos

Puedes especificar variables de entorno cuando creas un entorno. Para obtener más información, consulta Crea entornos.

Configura variables de entorno para entornos existentes

Console

Para establecer variables de entorno para un entorno existente, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Variables de entorno y haz clic en Editar.

  4. Agrega, cambia o borra variables de entorno para tu entorno:

    • En el campo Name, especifica el nombre de la variable.
    • En el campo Valor, especifica el valor de la variable.
    • Para agregar una variable adicional, haz clic en Agregar variable de entorno.
    • Para borrar una variable, mantén el puntero sobre ella y, luego, haz clic Borrar elemento:

gcloud

Los siguientes argumentos controlan las variables de entorno:

  • --update-env-variables especifica una lista de entornos separados por comas. variables para crear o actualizar.

  • --remove-env-variables especifica una lista separada por comas de las variables de entorno que se borrarán.

  • --clear-env-variables borra todas las variables de entorno existentes.

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • NAME por el nombre de la variable que deseas crear o actualizar
  • VALUE con el valor de la variable
  • Para agregar más de una variable, separa las definiciones con comas: NAME=VALUE,NAME=VALUE,....

Ejemplo:

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

API

Realiza una solicitud a la API de environments.patch.

En esta solicitud, realiza lo siguiente:

  1. En el parámetro updateMask, especifica la máscara config.softwareConfig.envVariables para reemplazar todas las variables existentes por las variables especificadas. Se borran las variables que no especifiques.

  2. En el cuerpo de la solicitud, especifica las variables y sus valores:

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

    Reemplaza lo siguiente:

    • VAR_NAME por el nombre de la variable de entorno.
    • VAR_VALUE por el valor de la variable de entorno.
    • Para agregar más de una variable, agrega entradas adicionales para variables a envVariables.

Ejemplo:

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

Terraform

El bloque env_variables en el bloque software_config especifica variables de entorno.

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

  config {

    software_config {

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }

    }
  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • VAR_NAME por el nombre de la variable de entorno.
  • VAR_VALUE por el valor de la variable de entorno.
  • Para agregar más de una variable, agrega entradas adicionales para variables a env_variables.

Ejemplo:

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

¿Qué sigue?