View a markdown version of this page

Legen Sie Umgebungsvariablen in einer Warteschlangenumgebung fest - Deadline Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Legen Sie Umgebungsvariablen in einer Warteschlangenumgebung fest

Viele Anwendungen und Frameworks verwenden Umgebungsvariablen, um Funktionseinstellungen, Protokollierungsebenen und die Anzeigekonfiguration zu steuern. Sie können Open Job Description (OpenJD) -Umgebungen verwenden, um Umgebungsvariablen festzulegen, die jeder Taskbefehl innerhalb seines Gültigkeitsbereichs erbt.

Gültigkeitsbereich der Umgebungsvariablen

AWS Deadline Cloud wendet Umgebungsvariablen aus Warteschlangenumgebungen an, die Sie an eine Warteschlange anhängen. Innerhalb einer Jobvorlage können Sie mithilfe von OpenJD-Umgebungen auch Umgebungsvariablen auf Job- und Schrittebene definieren. Variablen, die in einem engeren Gültigkeitsbereich definiert sind, überschreiben Variablen mit demselben Namen aus einem breiteren Gültigkeitsbereich.

  • Warteschlangenumgebung — Eine Vorlage, die Sie an eine Warteschlange in Deadline Cloud anhängen. Variablen gelten für alle Jobs, die an die Warteschlange gesendet werden. Sie können Variablen mit einer variables Zuordnung für feste Werte festlegen oder Skripts für dynamische Werte verwenden.

  • Arbeitsumgebung — Definiert unter jobEnvironments in einer Jobvorlage. Variablen gelten für alle Schritte und Aufgaben im Job. Eine Variable auf Jobebene überschreibt eine Variable auf Warteschlangenebene mit demselben Namen.

  • Schrittumgebung — Definiert unter stepEnvironments in einer Jobvorlage. Variablen gelten nur für die Aufgaben in diesem Schritt. Eine Variable auf Schrittebene überschreibt eine Variable auf Job- oder Warteschlangenebene mit demselben Namen.

Variablen in einer Warteschlangenumgebung setzen

Sie können Umgebungsvariablen in einer Warteschlangenumgebung mithilfe einer variables Map für feste Werte oder script mithilfe einer onEnter With-Aktion für dynamische Werte festlegen.

Die folgende Vorlage für die Warteschlangenumgebung verwendet eine variables Map, auf die die QT_QPA_PLATFORM Variable gesetzt wirdoffscreen, sodass Anwendungen, die das Qt Framework verwenden, auf Worker-Hosts ohne interaktive Anzeige ausgeführt werden können.

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

Verwenden Sie für dynamische Werte, wie das Ändern PATH oder Aktivieren virtueller Umgebungen, ein Skript, das Zeilen im Format stdout openjd_env: VAR=value ausgibt. Das openjd_env: Präfix ist erforderlich. Durch die Verwendung von echoexport, oder anderen Shell-Mechanismen ohne das Präfix werden Variablen nicht an Jobs und Aufgaben weitergegeben.

Die folgende Vorlage für die Warteschlangenumgebung legt die QT_QPA_PLATFORM Variable mithilfe eines Skripts fest.

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"

Um eine Warteschlangenumgebung an Ihre Warteschlange anzuhängen, verwenden Sie die Deadline Cloud-Konsole oder die AWS CLI. Weitere Informationen finden Sie unter Erstellen einer Warteschlangenumgebung im AWS Deadline Cloud-Benutzerhandbuch. Der folgende AWS CLI Befehl erstellt eine Warteschlangenumgebung aus einer Vorlagendatei.

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

Komplexere Beispiele, wie das Erstellen und Aktivieren virtueller Conda-Umgebungen, finden Sie unter Beispiele für Deadline Cloud-Warteschlangenumgebungen unter GitHub.

Variablen in einer Jobvorlage festlegen

Fügen Sie in einer Jobvorlage eine variables Map zu einem jobEnvironments stepEnvironments OR-Eintrag hinzu. Jeder Eintrag ist ein Schlüssel-Wert-Paar, wobei der Schlüssel der Variablenname und der Wert der Variablenwert ist.

Die folgende Jobvorlage setzt die QT_QPA_PLATFORM Umgebungsvariable aufoffscreen, sodass Anwendungen, die das Qt Framework verwenden, auf Worker-Hosts ohne interaktive Anzeige ausgeführt werden können.

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

Sie können mehrere Variablen in einer einzigen Umgebungsdefinition festlegen.

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

Mithilfe der {{Param.ParameterName}} Syntax können Sie in Variablenwerten auf Jobparameter verweisen.

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

Um eine Variable auf Jobebene für einen bestimmten Schritt zu überschreiben, definieren Sie einen stepEnvironments Eintrag mit demselben Variablennamen. Das folgende Beispiel definiert JOB_PROJECT_ID auf Auftragsebene mit dem Wert project-12 und überschreibt dann den Wert auf Schrittebene mit. step-project-12 Die Aufgaben im Schritt verwenden den Wert auf Schrittebene.

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

Probieren Sie es aus: Beispiel für die Umgebungsvariable ausführen

Das Deadline Cloud-Beispiel-Repository enthält ein Job-Bundle, das das Setzen und Anzeigen von Umgebungsvariablen demonstriert. Die Beispieljobvorlage definiert Variablen sowohl auf Auftrags- als auch auf Schrittebene und führt dann eine Aufgabe aus, die das zusammengeführte Ergebnis druckt. Gehen Sie wie folgt vor, um das Beispiel auszuführen und die Ergebnisse zu überprüfen.

Voraussetzungen

  1. Wenn Sie keine Deadline Cloud-Farm mit einer Warteschlange und der zugehörigen Linux-Flotte haben, folgen Sie der Anleitung zum Onboarding in der Deadline Cloud-Konsole, um eine Farm mit Standardeinstellungen zu erstellen.

  2. Wenn Sie die Deadline Cloud-CLI und den AWS Deadline Cloud-Monitor nicht auf Ihrer Workstation haben, folgen Sie den Schritten unter Deadline Cloud-Einreicher einrichten.

  3. Wird verwendetgit, um das Deadline GitHub Cloud-Beispiel-Repository zu klonen.

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

Ausführen des Beispiels

  1. Verwenden Sie die Deadline Cloud-CLI, um das job_env_vars Beispiel einzureichen.

    deadline bundle submit job_env_vars
  2. Wählen Sie im Deadline Cloud-Monitor den neuen Job aus, um seinen Fortschritt zu überwachen. Sobald für die Linux Flotte, die der Warteschlange zugeordnet ist, ein Mitarbeiter verfügbar ist, ist der Job in wenigen Sekunden abgeschlossen. Wählen Sie die Aufgabe aus und wählen Sie dann im Menü oben rechts im Aufgabenbereich die Option Protokolle anzeigen aus.

Vergleich von Sitzungsaktionen mit ihren Definitionen

In der Protokollansicht werden drei Sitzungsaktionen angezeigt. Öffnen Sie die Datei job_env_vars/template.yaml in einem Texteditor, um jede Aktion mit ihrer Definition in der Jobvorlage zu vergleichen.

  1. Wählen Sie die Aktion JobEnv Sitzung starten aus. Die Protokollausgabe zeigt, dass die Umgebungsvariablen auf Jobebene gesetzt wurden.

    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

    Die folgenden Zeilen aus der Jobvorlage definieren diese Umgebung.

    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. Wählen Sie die Aktion StepEnv Sitzung starten aus. Die Protokollausgabe zeigt die Variablen auf Schrittebene, einschließlich der überschriebenen Variablen. JOB_PROJECT_ID

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

    Die folgenden Zeilen aus der Jobvorlage definieren diese Umgebung.

    stepEnvironments: - name: StepEnv variables: STEP_VERBOSITY: HIGH JOB_PROJECT_ID: step-project-12
  3. Wählen Sie die Aktion Sitzung ausführen aus. In der Protokollausgabe werden die zusammengeführten Umgebungsvariablen angezeigt, die für die Aufgabe verfügbar sind. Beachten Sie, dass der Wert auf Schrittebene JOB_PROJECT_ID verwendet wird. step-project-12

    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