

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
<a name="set-environment-variables"></a>

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)](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) para definir variáveis de ambiente que cada comando de tarefa dentro de seu escopo herda.

## Escopo da variável de ambiente
<a name="set-env-vars-scope"></a>

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.](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) 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
<a name="set-env-vars-queue-env"></a>

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ável`offscreen`, o que permite que aplicativos que usam o [Qt Framework](https://www.qt.io/product/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. Usar`echo`,`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](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) 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](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments). GitHub

## Definindo variáveis em um modelo de trabalho
<a name="set-env-vars-job-template"></a>

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 como`offscreen`, o que permite que aplicativos que usam o [Qt Framework](https://www.qt.io/product/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 e`project-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
<a name="set-env-vars-example"></a>

O repositório de amostras do Deadline Cloud inclui um [pacote de tarefas que demonstra a configuração e a visualização](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) 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
<a name="set-prerequisites"></a>

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](https://console.aws.amazon.com/deadlinecloud/home) para criar um com as configurações padrão.

1. 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](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html) Cloud.

1. Use `git` para clonar o [ GitHubrepositório de amostras do 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
   ```

### Executar o exemplo
<a name="set-run-example"></a>

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

   ```
   deadline bundle submit job_env_vars
   ```

1. 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 name="set-compare-actions"></a>

A visualização do registro mostra três ações da sessão. Abra o arquivo [job\_env\_vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/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
   ```

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

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