View a markdown version of this page

Définir des variables d'environnement dans un environnement de file d'attente - Deadline Cloud

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

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) pour définir des variables d'environnement dont hérite chaque commande de tâche comprise dans son périmètre.

Portée de la variable d'environnement

AWS Deadline Cloud applique des variables d'environnement issues des environnements de files d'attente que vous associez à 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. 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 associez à 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 poste. Les variables s'appliquent à toutes les étapes et à toutes les tâches du poste. Une variable au niveau de la tâche remplace une variable au niveau de la file d'attente portant le même nom.

  • Environnement d'é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 par étapes remplace une variable au niveau de la tâche ou de la file d'attente portant le même nom.

Définition de variables dans un environnement de file d'attente

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'scriptaide 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 suroffscreen, ce qui permet aux applications utilisant le Qt 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 les lignes openjd_env: VAR=value au format stdout. Le openjd_env: préfixe est obligatoire. L'utilisation de echoexport, ou d'autres mécanismes shell sans préfixe ne propage pas les variables aux jobs et aux 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 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 sur GitHub.

Définition de variables dans un modèle de tâche

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_PLATFORMenvironnement suroffscreen, ce qui permet aux applications utilisant le Qt 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 la 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 au niveau de la 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 valeurproject-12, puis remplace la valeur au niveau de l'étape parstep-project-12. Les tâches de l'étape utilisent la valeur au 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

Le référentiel d'exemples de Deadline Cloud comprend un ensemble de tâches qui explique la définition et la visualisation des variables d'environnement. 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é. Suivez la procédure suivante pour analyser l'échantillon et inspecter les résultats.

Conditions préalables

  1. Si vous ne possédez pas de parc 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 pour en créer une avec les paramètres par défaut.

  2. Si vous ne disposez pas de l'interface de ligne de commande Deadline Cloud et du moniteur AWS Deadline Cloud sur votre poste de travail, suivez les étapes décrites dans la section Configurer les soumissionnaires de Deadline Cloud.

  3. Utilisez-le git pour cloner le GitHub référentiel d'échantillons Deadline Cloud.

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

Exécution de l'exemple

  1. Utilisez l'interface de ligne de commande Deadline Cloud pour soumettre l'job_env_varséchantillon.

    deadline bundle submit job_env_vars
  2. Dans le moniteur Deadline Cloud, sélectionnez la nouvelle tâche pour suivre sa progression. Une fois qu'un travailleur est disponible pour la Linux flotte associée à la file d'attente, la tâche est terminée en quelques secondes. Sélectionnez la tâche, puis choisissez Afficher les journaux dans le menu en haut à droite du panneau des tâches.

Comparaison des actions de session avec leurs définitions

La vue du journal montre trois actions de session. Ouvrez le fichier 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 JobEnv la session. La sortie du journal indique les variables d'environnement définies au niveau de la tâche.

    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 poste 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
  2. Sélectionnez l'action Lancer StepEnv la session. La sortie du journal affiche les variables au niveau des étapes, y compris celles qui ont été remplacéesJOB_PROJECT_ID.

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

    Les lignes suivantes du modèle de poste définissent cet environnement.

    stepEnvironments: - name: StepEnv variables: STEP_VERBOSITY: HIGH JOB_PROJECT_ID: step-project-12
  3. Sélectionnez l'action Task run session. La sortie du journal indique les variables d'environnement fusionnées disponibles pour la tâche. Notez qu'elle JOB_PROJECT_ID utilise la valeur step-project-12 par étapes.

    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