Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Cette page explique comment définir des variables d'environnement dans votre environnement Cloud Composer.
Vous pouvez utiliser des variables d'environnement à la place des variables Airflow pour fournir une configuration d'exécution à vos DAG. Les variables Airflow sont définies dans la base de données Airflow, tandis que les variables d'environnement sont définies dans le conteneur du nœud de calcul Airflow.
Par exemple, vous pouvez utiliser le nom d'une variable d'environnement tel quel dans une commande exécutée par un BashOperator, ou obtenir cette valeur à partir de l'objet os.environ dans le DAG, ou encore utiliser une variable Airflow.
Les variables d'environnement sont persistantes. Une fois que vous avez spécifié une variable d'environnement, Airflow continue à l'utiliser jusqu'à ce que vous la supprimiez de votre environnement.
Cloud Composer définit ses propres variables d'environnement réservées pour contrôler les environnements.
Format du nom
Les variables d'environnement doivent correspondre à l'expression régulière [a-zA-Z_][a-zA-Z0-9_]*.
Options de configuration Airflow
Il n'est pas possible de spécifier des variables qui modifient les options de configuration Apache Airflow.
Les variables ne peuvent pas utiliser le format AIRFLOW__{SECTION}__{KEY} ni correspondre à l'expression régulière AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+. Par exemple, il n'est pas possible de définir AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW.
Vous pouvez plutôt remplacer les options de configuration Airflow.
Variables réservées
Les noms de variables suivants sont réservés par Cloud Composer. Il n'est pas possible de créer des variables avec ces noms.
AIRFLOW_DATABASE_VERSIONAIRFLOW_HOMEAIRFLOW_SRC_DIRAIRFLOW_WEBSERVERAUTO_GKECLOUDSDK_METRICS_ENVIRONMENTCLOUD_LOGGING_ONLYCOMPOSER_AGENT_BUILD_SERVICE_ACCOUNTCOMPOSER_ENVIRONMENTCOMPOSER_GKE_LOCATIONCOMPOSER_GKE_NAMECOMPOSER_GKE_ZONECOMPOSER_LOCATIONCOMPOSER_OPERATION_UUIDCOMPOSER_PYTHON_VERSIONCOMPOSER_VERSIONCONTAINER_NAMEC_FORCE_ROOTDAGS_FOLDERGCE_METADATA_TIMEOUTGCP_PROJECTGCP_TENANT_PROJECTGCSFUSE_EXTRACTEDGCS_BUCKETGKE_CLUSTER_NAMEGKE_IN_TENANTGOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_PROJECTMAJOR_VERSIONMINOR_VERSIONPATHPIP_DISABLE_PIP_VERSION_CHECKPORTPROJECT_IDPYTHONPYCACHEPREFIXPYTHONWARNINGSREDIS_PASSWORDREDIS_PORTREDIS_USERSQL_DATABASESQL_HOSTSQL_INSTANCESQL_PASSWORDSQL_PROJECTSQL_REGIONSQL_USER
Définir des variables d'environnement pour les nouveaux environnements
Vous pouvez spécifier des variables d'environnement lorsque vous créez un environnement. Pour en savoir plus, consultez Créer des environnements.
Définir des variables d'environnement pour les environnements existants
Console
Pour définir des variables d'environnement pour un environnement existant :
Dans la console Google Cloud , accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.
Accédez à l'onglet Variables d'environnement, puis cliquez sur Modifier.
Ajoutez, modifiez ou supprimez des variables d'environnement pour votre environnement :
- Dans le champ Nom, spécifiez le nom de la variable.
- Dans le champ Valeur, spécifiez la valeur de la variable.
- Pour ajouter une variable, cliquez sur Ajouter une variable d'environnement.
- Pour supprimer une variable, pointez dessus, puis cliquez sur Supprimer l'élément.
gcloud
Les arguments suivants contrôlent les variables d'environnement :
--update-env-variablesspécifie une liste de variables d'environnement à créer ou à mettre à jour, séparées par des virgules.--remove-env-variablesspécifie une liste de variables d'environnement à supprimer, séparées par des virgules.--clear-env-variablessupprime toutes les variables d'environnement existantes.
gcloud composer environments update \
ENVIRONMENT_NAME \
--location LOCATION \
--update-env-variables=NAME=VALUE
Remplacez :
ENVIRONMENT_NAMEpar le nom de l'environnement.LOCATIONpar la région dans laquelle se trouve l'environnement.NAMEpar le nom de la variable que vous souhaitez créer ou mettre à jour.VALUEpar la valeur de la variable.- Pour ajouter plusieurs variables, séparez les définitions par des virgules :
NAME=VALUE,NAME=VALUE,....
Exemple :
gcloud composer environments update \
example-environment \
--location us-central1 \
--update-env-variables=EXAMPLE_VARIABLE=True,ANOTHER_VARIABLE=test
API
Rédigez une requête API environments.patch.
Dans cette requête :
Dans le paramètre
updateMask, spécifiez le masqueconfig.softwareConfig.envVariablespour remplacer toutes les variables existantes par les variables spécifiées. Les variables que vous ne spécifiez pas sont supprimées.Dans le corps de la requête, spécifiez les variables et leurs valeurs :
{ "config": { "softwareConfig": { "envVariables": { "VAR_NAME": "VAR_VALUE" } } } }Remplacez :
VAR_NAMEpar le nom de la variable d'environnement.VAR_VALUEpar la valeur de la variable d'environnement ;- Pour ajouter plusieurs variables, ajoutez des entrées supplémentaires pour les variables à
envVariables.
Exemple :
// 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
Le bloc env_variables du bloc software_config spécifie des variables d'environnement.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
env_variables = {
VAR_NAME = "VAR_VALUE"
}
}
}
}
Remplacez :
ENVIRONMENT_NAMEpar le nom de l'environnement.LOCATIONpar la région dans laquelle se trouve l'environnement.VAR_NAMEpar le nom de la variable d'environnement.VAR_VALUEpar la valeur de la variable d'environnement ;- Pour ajouter plusieurs variables, ajoutez des entrées supplémentaires pour les variables à
env_variables.
Exemple :
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"
}
}
}
}