

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définir des variables d'environnement dans un environnement de file d'attente
<a name="set-environment-variables"></a>

De nombreuses applications et frameworks utilisent des variables d'environnement pour contrôler les paramètres des fonctionnalités, les niveaux de journalisation et la configuration de l'affichage. Vous pouvez utiliser les [environnements Open Job Description (OpenJD)](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) pour définir des variables d'environnement dont héritera chaque commande de tâche relevant de leur champ d'application.

## Portée de la variable d'environnement
<a name="set-env-vars-scope"></a>

AWS Deadline Cloud applique des variables d'environnement issues des environnements de file d'attente que vous attachez à une file d'attente. Dans un modèle de tâche, vous pouvez également définir des variables d'environnement au niveau de la tâche et de l'étape à l'aide des [environnements OpenJD.](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) Les variables définies dans une portée plus étroite remplacent les variables portant le même nom dans une portée plus large.
+ **Environnement de file d'attente** : modèle que vous attachez à une file d'attente dans Deadline Cloud. Les variables s'appliquent à toutes les tâches soumises à la file d'attente. Vous pouvez définir des variables à l'aide d'une `variables` carte pour les valeurs fixes ou utiliser des scripts pour les valeurs dynamiques.
+ **Environnement de travail** : défini ci-dessous `jobEnvironments` dans un modèle de travail. Les variables s'appliquent à toutes les étapes et tâches de la tâche. Une variable au niveau de la tâche remplace une variable au niveau de la file d'attente portant le même nom.
+ **Environnement des étapes** : défini ci-dessous `stepEnvironments` dans un modèle de tâche. Les variables s'appliquent uniquement aux tâches de cette étape. Une variable de niveau étape remplace une variable de niveau tâche ou de file d'attente portant le même nom.

## Définition de variables dans un environnement de file d'attente
<a name="set-env-vars-queue-env"></a>

Vous pouvez définir des variables d'environnement dans un environnement de file d'attente à l'aide d'une `variables` carte pour les valeurs fixes ou à l'`script`aide d'une `onEnter` action pour les valeurs dynamiques.

Le modèle d'environnement de file d'attente suivant utilise une `variables` carte pour définir la `QT_QPA_PLATFORM` variable sur`offscreen`, ce qui permet aux applications utilisant le [Qt Framework](https://www.qt.io/product/framework) de s'exécuter sur des hôtes de travail sans affichage interactif.

```
specificationVersion: 'environment-2023-09'
environment:
  name: QtOffscreen
  variables:
    QT_QPA_PLATFORM: offscreen
```

Pour les valeurs dynamiques, telles que la modification `PATH` ou l'activation d'environnements virtuels, utilisez un script qui imprime des lignes `openjd_env: {{VAR}}={{value}}` au format standard. Le `openjd_env:` préfixe est obligatoire. L'utilisation de `echo``export`, ou d'autres mécanismes shell sans le préfixe ne propage pas les variables vers les jobs et les tâches.

Le modèle d'environnement de file d'attente suivant définit la `QT_QPA_PLATFORM` variable à l'aide d'un script.

```
specificationVersion: 'environment-2023-09'
environment:
  name: QtOffscreen
  script:
    actions:
      onEnter:
        command: bash
        args:
        - "{{Env.File.Enter}}"
    embeddedFiles:
    - name: Enter
      type: TEXT
      data: |
        #!/bin/env bash
        set -euo pipefail
        echo "openjd_env: QT_QPA_PLATFORM=offscreen"
```

Pour associer un environnement de file d'attente à votre file d'attente, utilisez la console Deadline Cloud ou le AWS CLI. Pour plus d'informations, consultez la section [Création d'un environnement de file d'attente](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) dans le guide de l'utilisateur de AWS Deadline Cloud. La AWS CLI commande suivante crée un environnement de file d'attente à partir d'un fichier modèle.

```
aws deadline create-queue-environment \
    --farm-id {{FARM_ID}} \
    --queue-id {{QUEUE_ID}} \
    --priority 1 \
    --template-type YAML \
    --template file://{{my-queue-env.yaml}}
```

Pour des exemples plus complexes, tels que la création et l'activation d'environnements virtuels Conda, consultez les [exemples d'environnement de file d'attente Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments) sur GitHub.

## Définition de variables dans un modèle de tâche
<a name="set-env-vars-job-template"></a>

Dans un modèle de tâche, ajoutez une `variables` carte à une `stepEnvironments` entrée `jobEnvironments` ou. Chaque entrée est une paire clé-valeur où la clé est le nom de la variable et la valeur est la valeur de la variable.

Le modèle de tâche suivant définit la variable d'`QT_QPA_PLATFORM`environnement sur`offscreen`, ce qui permet aux applications utilisant le [Qt Framework](https://www.qt.io/product/framework) de s'exécuter sur des hôtes de travail sans affichage interactif.

```
specificationVersion: 'jobtemplate-2023-09'
name: MyJob
jobEnvironments:
- name: JobEnv
  variables:
    QT_QPA_PLATFORM: offscreen
```

Vous pouvez définir plusieurs variables dans une seule définition d'environnement.

```
jobEnvironments:
- name: JobEnv
  variables:
    JOB_VERBOSITY: MEDIUM
    JOB_PROJECT_ID: {{my-project-id}}
    JOB_ENDPOINT_URL: {{https://my-host-name/my/path}}
    QT_QPA_PLATFORM: offscreen
```

Vous pouvez référencer les paramètres de tâche dans des valeurs variables à l'aide de la `{{Param.{{ParameterName}}}}` syntaxe.

```
jobEnvironments:
- name: JobEnv
  variables:
    JOB_EXAMPLE_PARAM: "{{Param.ExampleParam}}"
```

Pour remplacer une variable de niveau tâche pour une étape spécifique, définissez une `stepEnvironments` entrée portant le même nom de variable. L'exemple suivant définit `JOB_PROJECT_ID` au niveau de la tâche avec la valeur`project-12`, puis remplace la valeur au niveau de l'étape par`step-project-12`. Les tâches de l'étape utilisent la valeur du niveau de l'étape.

```
specificationVersion: 'jobtemplate-2023-09'
name: MyJob
jobEnvironments:
- name: JobEnv
  variables:
    JOB_PROJECT_ID: project-12
steps:
- name: MyStep
  stepEnvironments:
  - name: StepEnv
    variables:
      JOB_PROJECT_ID: step-project-12
```

## Essayez-le : Exécution de l'exemple de variable d'environnement
<a name="set-env-vars-example"></a>

Le référentiel d'exemples de Deadline Cloud inclut un ensemble de [tâches qui explique la définition et l'affichage des variables d'environnement](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml). L'exemple de modèle de tâche définit des variables au niveau de la tâche et de l'étape, puis exécute une tâche qui imprime le résultat fusionné. Utilisez la procédure suivante pour exécuter l'échantillon et inspecter les résultats.

### Conditions préalables
<a name="set-prerequisites"></a>

1. Si vous ne possédez pas de ferme Deadline Cloud avec une file d'attente et un parc Linux associé, suivez l'expérience d'intégration guidée dans la [console Deadline Cloud](https://console.aws.amazon.com/deadlinecloud/home) pour en créer une avec les paramètres par défaut.

1. Si vous ne disposez pas de la CLI Deadline Cloud et du moniteur AWS Deadline Cloud sur votre poste de travail, suivez les étapes décrites dans [Configurer les émetteurs Deadline Cloud](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html).

1. `git`À utiliser pour cloner le [ GitHubréférentiel d'échantillons de Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples).

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   cd deadline-cloud-samples/job_bundles
   ```

### Exécution de l'exemple
<a name="set-run-example"></a>

1. Utilisez la CLI de Deadline Cloud pour envoyer l'`job_env_vars`échantillon.

   ```
   deadline bundle submit job_env_vars
   ```

1. Dans le moniteur Deadline Cloud, sélectionnez la nouvelle tâche pour suivre sa progression. Une fois qu'un travailleur est disponible dans le Linux parc associé à la file d'attente, la tâche se termine en quelques secondes. Sélectionnez la tâche, puis choisissez **Afficher les journaux** dans le menu supérieur droit du panneau des tâches.

### Comparaison des actions de session avec leurs définitions
<a name="set-compare-actions"></a>

La vue du journal montre trois actions de session. Ouvrez le fichier [job\_env\_vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) dans un éditeur de texte pour comparer chaque action avec sa définition dans le modèle de tâche.

1. Sélectionnez l'action **Lancer** une JobEnv session. La sortie du journal indique les variables d'environnement définies au niveau du travail.

   ```
   Setting: JOB_VERBOSITY=MEDIUM
   Setting: JOB_EXAMPLE_PARAM=An example parameter value
   Setting: JOB_PROJECT_ID=project-12
   Setting: JOB_ENDPOINT_URL=https://internal-host-name/some/path
   Setting: QT_QPA_PLATFORM=offscreen
   ```

   Les lignes suivantes du modèle de tâche définissent cet environnement.

   ```
   jobEnvironments:
   - name: JobEnv
     variables:
       JOB_VERBOSITY: MEDIUM
       JOB_EXAMPLE_PARAM: "{{Param.ExampleParam}}"
       JOB_PROJECT_ID: project-12
       JOB_ENDPOINT_URL: https://internal-host-name/some/path
       QT_QPA_PLATFORM: offscreen
   ```

1. Sélectionnez l'action **Lancer** une StepEnv session. La sortie du journal indique les variables au niveau de l'étape, y compris les variables remplacées`JOB_PROJECT_ID`.

   ```
   Setting: STEP_VERBOSITY=HIGH
   Setting: JOB_PROJECT_ID=step-project-12
   ```

   Les lignes suivantes du modèle de tâche définissent cet environnement.

   ```
   stepEnvironments:
   - name: StepEnv
     variables:
       STEP_VERBOSITY: HIGH
       JOB_PROJECT_ID: step-project-12
   ```

1. Sélectionnez l'action **Task Run** session. La sortie du journal indique les variables d'environnement fusionnées disponibles pour la tâche. Notez que cela `JOB_PROJECT_ID` utilise la valeur `step-project-12` au niveau de l'étape.

   ```
   Environment variables starting with JOB_*:
   JOB_ENDPOINT_URL=https://internal-host-name/some/path
   JOB_EXAMPLE_PARAM='An example parameter value'
   JOB_PROJECT_ID=step-project-12
   JOB_VERBOSITY=MEDIUM
   
   Environment variables starting with STEP_*:
   STEP_VERBOSITY=HIGH
   ```