View a markdown version of this page

Definir variáveis de ambiente em um ambiente de fila - Nuvem de prazos

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Definir variáveis de ambiente em um ambiente de fila

Muitos aplicativos e estruturas usam variáveis de ambiente para controlar as configurações de recursos, os níveis de registro e a configuração de exibição. Você pode usar ambientes Open Job Description (OpenJD) para definir variáveis de ambiente que cada comando de tarefa dentro de seu escopo herda.

Escopo da variável de ambiente

AWS O Deadline Cloud aplica variáveis de ambiente de ambientes de fila que você anexa a uma fila. Em um modelo de trabalho, você também pode definir variáveis de ambiente nos níveis de tarefa e etapa usando ambientes OpenJD. Variáveis definidas em um escopo mais restrito substituem variáveis com o mesmo nome de um escopo mais amplo.

  • Ambiente de fila — Um modelo que você anexa a uma fila no Deadline Cloud. As variáveis se aplicam a todos os trabalhos enviados à fila. Você pode definir variáveis com um variables mapa para valores fixos ou usar scripts para valores dinâmicos.

  • Ambiente de trabalho — Definido abaixo jobEnvironments em um modelo de trabalho. As variáveis se aplicam a todas as etapas e tarefas do trabalho. Uma variável no nível do trabalho substitui uma variável no nível da fila com o mesmo nome.

  • Ambiente de etapas — definido abaixo stepEnvironments em um modelo de trabalho. As variáveis se aplicam somente às tarefas dessa etapa. Uma variável de nível de etapa substitui uma variável de nível de trabalho ou de fila com o mesmo nome.

Configurando variáveis em um ambiente de fila

Você pode definir variáveis de ambiente em um ambiente de fila usando um variables mapa para valores fixos ou usando um script com uma onEnter ação para valores dinâmicos.

O modelo de ambiente de fila a seguir usa um variables mapa para definir a QT_QPA_PLATFORM variáveloffscreen, o que permite que aplicativos que usam o Qt Framework sejam executados em hosts de trabalho sem uma exibição interativa.

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

Para valores dinâmicos, como modificar PATH ou ativar ambientes virtuais, use um script que imprima linhas no formato openjd_env: VAR=value em stdout. O openjd_env: prefixo é obrigatório. Usarecho,export, ou outros mecanismos de shell sem o prefixo não propaga variáveis para trabalhos e tarefas.

O modelo de ambiente de fila a seguir define a QT_QPA_PLATFORM variável usando um 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"

Para anexar um ambiente de fila à sua fila, use o console do Deadline Cloud ou o. AWS CLI Para obter mais informações, consulte Criar um ambiente de fila no Guia do usuário do AWS Deadline Cloud. O AWS CLI comando a seguir cria um ambiente de fila a partir de um arquivo de modelo.

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

Para exemplos mais complexos, como criar e ativar ambientes virtuais conda, consulte os exemplos do ambiente de filas do Deadline Cloud em. GitHub

Definindo variáveis em um modelo de trabalho

Em um modelo de trabalho, adicione um variables mapa a uma stepEnvironments entrada jobEnvironments or. Cada entrada é um par de valores-chave em que a chave é o nome da variável e o valor é o valor da variável.

O modelo de trabalho a seguir define a variável de QT_QPA_PLATFORM ambiente comooffscreen, o que permite que aplicativos que usam o Qt Framework sejam executados em hosts de trabalho sem uma exibição interativa.

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

Você pode definir várias variáveis em uma única definição de ambiente.

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

Você pode referenciar os parâmetros do trabalho em valores variáveis usando a {{Param.ParameterName}} sintaxe.

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

Para substituir uma variável de nível de trabalho para uma etapa específica, defina uma stepEnvironments entrada com o mesmo nome de variável. O exemplo a seguir define JOB_PROJECT_ID no nível do trabalho com o valor eproject-12, em seguida, substitui o valor no nível da etapa com. step-project-12 As tarefas na etapa usam o valor no nível da etapa.

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

Experimente: Executando a amostra da variável de ambiente

O repositório de amostras do Deadline Cloud inclui um pacote de tarefas que demonstra a configuração e a visualização de variáveis de ambiente. O modelo de trabalho de amostra define variáveis nos níveis do trabalho e da etapa e, em seguida, executa uma tarefa que imprime o resultado mesclado. Use o procedimento a seguir para executar a amostra e inspecionar os resultados.

Pré-requisitos

  1. Se você não tiver um farm do Deadline Cloud com uma fila e uma frota Linux associada, siga a experiência de integração guiada no console do Deadline Cloud para criar um com as configurações padrão.

  2. Se você não tiver a CLI do Deadline Cloud e o monitor do AWS Deadline Cloud em sua estação de trabalho, siga as etapas em Configurar os remetentes do Deadline Cloud.

  3. Use git para clonar o GitHubrepositório de amostras do Deadline Cloud.

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

Executar o exemplo

  1. Use a CLI do Deadline Cloud para enviar a job_env_vars amostra.

    deadline bundle submit job_env_vars
  2. No monitor do Deadline Cloud, selecione o novo trabalho para monitorar seu progresso. Depois que a Linux frota associada à fila tiver um trabalhador disponível, o trabalho será concluído em alguns segundos. Selecione a tarefa e escolha Exibir registros no menu superior direito do painel de tarefas.

Comparando as ações da sessão com suas definições

A visualização do registro mostra três ações da sessão. Abra o arquivo job_env_vars/template.yaml em um editor de texto para comparar cada ação com sua definição no modelo de trabalho.

  1. Selecione a ação Iniciar JobEnv sessão. A saída do log mostra as variáveis de ambiente no nível do trabalho que estão sendo definidas.

    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

    As linhas a seguir do modelo de trabalho definem esse ambiente.

    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. Selecione a ação Iniciar StepEnv sessão. A saída do log mostra as variáveis em nível de etapa, incluindo as substituídas. JOB_PROJECT_ID

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

    As linhas a seguir do modelo de trabalho definem esse ambiente.

    stepEnvironments: - name: StepEnv variables: STEP_VERBOSITY: HIGH JOB_PROJECT_ID: step-project-12
  3. Selecione a ação Tarefa executar sessão. A saída do log mostra as variáveis de ambiente mescladas disponíveis para a tarefa. Observe que JOB_PROJECT_ID usa o valor em nível de etapa. 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