

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Establezca las variables de entorno en un entorno de colas
<a name="set-environment-variables"></a>

Muchas aplicaciones y marcos utilizan variables de entorno para controlar la configuración de las funciones, los niveles de registro y la configuración de la pantalla. Puede usar los [entornos Open Job Description (OpenJD)](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) para establecer variables de entorno que herede cada comando de tarea dentro de su ámbito.

## Ámbito de la variable de entorno
<a name="set-env-vars-scope"></a>

AWS Deadline Cloud aplica variables de entorno de los entornos de colas que se adjuntan a una cola. Dentro de una plantilla de trabajo, también puede definir variables de entorno a nivel de trabajo y paso mediante entornos de [OpenJD](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment). Las variables definidas en un ámbito más limitado anulan las variables con el mismo nombre de un ámbito más amplio.
+ **Entorno de colas**: plantilla que se adjunta a una cola en Deadline Cloud. Las variables se aplican a todos los trabajos enviados a la cola. Puede configurar las variables con un `variables` mapa para valores fijos o utilizar scripts para valores dinámicos.
+ **Entorno laboral**: se define `jobEnvironments` en una plantilla de trabajo. Las variables se aplican a todos los pasos y tareas del trabajo. Una variable de nivel de trabajo anula una variable de nivel de cola con el mismo nombre.
+ **Entorno escalonado**: se define en una plantilla de trabajo. `stepEnvironments` Las variables se aplican solo a las tareas de ese paso. Una variable de nivel de paso anula una variable de nivel de trabajo o de cola con el mismo nombre.

## Establecer variables en un entorno de colas
<a name="set-env-vars-queue-env"></a>

Puede configurar las variables de entorno en un entorno de colas mediante un `variables` mapa para valores fijos o mediante una `script` `onEnter` acción para valores dinámicos.

La siguiente plantilla de entorno de colas utiliza un `variables` mapa para establecer la `QT_QPA_PLATFORM` variable`offscreen`, lo que permite que las aplicaciones que utilizan [Qt Framework](https://www.qt.io/product/framework) se ejecuten en hosts de trabajo sin una pantalla interactiva.

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

Para valores dinámicos, como modificar `PATH` o activar entornos virtuales, utilice un script que imprima las líneas en formato `openjd_env: {{VAR}}={{value}}` stdout. El `openjd_env:` prefijo es obligatorio. El uso de `echo``export`, u otros mecanismos de shell sin el prefijo no propaga las variables a los trabajos y tareas.

La siguiente plantilla de entorno de colas establece la `QT_QPA_PLATFORM` variable mediante 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"
```

Para adjuntar un entorno de colas a su cola, utilice la consola de Deadline Cloud o la. AWS CLI Para obtener más información, consulte [Crear un entorno de colas](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) en la Guía del usuario de AWS Deadline Cloud. El siguiente AWS CLI comando crea un entorno de colas a partir de un archivo de plantilla.

```
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 ver ejemplos más complejos, como la creación y activación de entornos virtuales de conda, consulte los ejemplos del [entorno de colas de Deadline Cloud en](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments). GitHub

## Establecer variables en una plantilla de trabajo
<a name="set-env-vars-job-template"></a>

En una plantilla de trabajo, añada un `variables` mapa a una `stepEnvironments` entrada `jobEnvironments` o. Cada entrada es un par clave-valor en el que la clave es el nombre de la variable y el valor es el valor de la variable.

La siguiente plantilla de trabajo establece la variable de `QT_QPA_PLATFORM` entorno en`offscreen`, lo que permite que las aplicaciones que utilizan el [Qt Framework](https://www.qt.io/product/framework) se ejecuten en los hosts de los trabajadores sin una pantalla interactiva.

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

Puede establecer múltiples variables en una sola definición de entorno.

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

Puede hacer referencia a los parámetros del trabajo en valores variables mediante la `{{Param.{{ParameterName}}}}` sintaxis.

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

Para anular una variable de nivel de trabajo para un paso específico, defina una `stepEnvironments` entrada con el mismo nombre de variable. En el siguiente ejemplo, se define `JOB_PROJECT_ID` en el nivel de trabajo con el valor y`project-12`, a continuación, se reemplaza el valor en el nivel de paso con. `step-project-12` Las tareas del paso utilizan el valor del nivel de paso.

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

## Pruébelo: ejecute el ejemplo de la variable de entorno
<a name="set-env-vars-example"></a>

El repositorio de muestras de Deadline Cloud incluye un [paquete de trabajos que muestra la configuración y visualización de las variables de entorno](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml). La plantilla de trabajo de muestra define las variables tanto a nivel de trabajo como de paso y, a continuación, ejecuta una tarea que imprime el resultado combinado. Utilice el siguiente procedimiento para ejecutar la muestra e inspeccionar los resultados.

### Requisitos previos
<a name="set-prerequisites"></a>

1. Si no tiene una granja de Deadline Cloud con una cola y una flota Linux asociada, siga la experiencia de incorporación guiada en la [consola de Deadline Cloud](https://console.aws.amazon.com/deadlinecloud/home) para crear una con la configuración predeterminada.

1. Si no tiene la CLI de Deadline Cloud ni el monitor de AWS Deadline Cloud en su estación de trabajo, siga los pasos de [Configurar los remitentes de Deadline Cloud](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html).

1. Úselo `git` para clonar el repositorio de [muestras GitHub de 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
   ```

### Ejecución del ejemplo
<a name="set-run-example"></a>

1. Utilice la CLI de Deadline Cloud para enviar la `job_env_vars` muestra.

   ```
   deadline bundle submit job_env_vars
   ```

1. En el monitor de Deadline Cloud, selecciona el nuevo trabajo para supervisar su progreso. Cuando la Linux flota asociada a la cola tenga un trabajador disponible, el trabajo se completará en unos segundos. Seleccione la tarea y, a continuación, elija **Ver registros** en el menú superior derecho del panel de tareas.

### Comparar las acciones de la sesión con sus definiciones
<a name="set-compare-actions"></a>

La vista de registro muestra tres acciones de la sesión. Abra el archivo [job\_env\_vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) en un editor de texto para comparar cada acción con su definición en la plantilla de trabajo.

1. Seleccione la acción **Iniciar JobEnv** sesión. El resultado del registro muestra las variables de entorno a nivel de trabajo que se están configurando.

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

   Las siguientes líneas de la plantilla de trabajo definen este entorno.

   ```
   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. Seleccione la acción **Iniciar StepEnv** sesión. El resultado del registro muestra las variables a nivel de paso, incluidas las anuladas`JOB_PROJECT_ID`.

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

   Las siguientes líneas de la plantilla de trabajo definen este entorno.

   ```
   stepEnvironments:
   - name: StepEnv
     variables:
       STEP_VERBOSITY: HIGH
       JOB_PROJECT_ID: step-project-12
   ```

1. Seleccione la acción **Tarea ejecutar** sesión. El resultado del registro muestra las variables de entorno combinadas disponibles para la tarea. Observe que `JOB_PROJECT_ID` utiliza el valor `step-project-12` de nivel escalonado.

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