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éritera chaque commande de tâche relevant de leur champ d'application.

Portée de la variable d'environnement

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. 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

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 des lignes openjd_env: VAR=value au format standard. Le openjd_env: préfixe est obligatoire. L'utilisation de echoexport, 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 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 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 valeurproject-12, puis remplace la valeur au niveau de l'étape parstep-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

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. 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

  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 pour en créer une avec les paramètres par défaut.

  2. 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.

  3. gitÀ utiliser pour cloner le GitHubréférentiel d'échantillons de 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 la CLI de Deadline Cloud pour envoyer 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 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

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 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
  2. 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éesJOB_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
  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 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