

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

# Executar trabalhos em contêineres com Pyxis
<a name="tutorials_11_running-containerized-jobs-with-pyxis"></a>

Saiba como criar um cluster capaz de executar trabalhos em contêineres usando o Pyxis, que é um plugin SPANK para gerenciar trabalhos em contêineres no SLURM. Os contêineres no Pyxis são gerenciados pelo Enroot, que é uma ferramenta para transformar container/OS imagens tradicionais em sandboxes sem privilégios. Para ter mais informações, consulte [NVIDIA Pyxis](https://github.com/NVIDIA/pyxis) e [NVIDIA Enroot](https://github.com/NVIDIA/enroot).

**nota**  
Esse recurso está disponível com a versão AWS ParallelCluster 3.11.1
Os scripts deste tutorial movem (`mv`) alguns arquivos, o que os exclui de seus locais originais. Se você quiser manter cópias desses arquivos em seus locais originais, altere os scripts para usar o comando copy (`cp`) em vez disso.

Ao usar AWS ParallelCluster, você paga apenas pelos AWS recursos criados ao criar ou atualizar AWS ParallelCluster imagens e clusters. Para obter mais informações, consulte [AWS serviços usados por AWS ParallelCluster](aws-services-v3.md).

**Pré-requisitos:**
+ O AWS CLI está [instalado e configurado.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Um [par de chaves do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Um perfil do IAM com as [permissões](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) necessárias para executar a [CLI pcluster](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).

## Criar um cluster
<a name="create-the-cluster"></a>

A partir do AWS ParallelCluster 3.11.1, tudo oficial AMIs vem com o Pyxis e o Enroot pré-instalados. Em particular, o SLURM é recompilado com suporte ao Pyxis, e o Enroot é instalado como um binário no sistema. No entanto, você deve configurá-los de acordo com suas necessidades específicas. As pastas usadas pelo Enroot e pelo Pyxis terão um impacto crítico no desempenho do cluster. Para ter mais informações, consulte a [documentação do Pyxis](https://github.com/NVIDIA/pyxis/wiki/Setup#slurm-plugstack-configuration) e a [documentação do Enroot](https://github.com/NVIDIA/pyxis/wiki/Setup#enroot-configuration-example).

Para sua comodidade, você pode encontrar exemplos de configurações para Pyxis, Enroot e SPANK em `/opt/parallelcluster/examples/`. 

Para implantar um cluster usando as configurações de exemplo que fornecemos, conclua o tutorial a seguir. 

**Como criar o cluster com configuração de amostra**

O Pyxis e o Enroot devem ser configurados no nó principal. Comece criando os diretórios persistentes e voláteis para o Enroot, depois crie o diretório de runtime para o Pyxis e, por fim, habilite o Pyxis como plug-in SPANK em todo o cluster.

1. Execute o script abaixo como ação [OnNodeConfigured](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)personalizada no nó principal para configurar o Pyxis e o Enroot no nó principal.

   ```
   #!/bin/bash
   set -e
   
   echo "Executing $0"
   
   # Configure Enroot
   ENROOT_PERSISTENT_DIR="/var/enroot"
   ENROOT_VOLATILE_DIR="/run/enroot"
   
   sudo mkdir -p $ENROOT_PERSISTENT_DIR
   sudo chmod 1777 $ENROOT_PERSISTENT_DIR
   sudo mkdir -p $ENROOT_VOLATILE_DIR
   sudo chmod 1777 $ENROOT_VOLATILE_DIR
   sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf
   sudo chmod 0644 /etc/enroot/enroot.conf
   
   # Configure Pyxis
   PYXIS_RUNTIME_DIR="/run/pyxis"
   
   sudo mkdir -p $PYXIS_RUNTIME_DIR
   sudo chmod 1777 $PYXIS_RUNTIME_DIR
   
   sudo mkdir -p /opt/slurm/etc/plugstack.conf.d/
   sudo mv /opt/parallelcluster/examples/spank/plugstack.conf /opt/slurm/etc/
   sudo mv /opt/parallelcluster/examples/pyxis/pyxis.conf /opt/slurm/etc/plugstack.conf.d/
   sudo -i scontrol reconfigure
   ```

1. O Pyxis e o Enroot devem ser configurados na frota de computação criando os diretórios persistentes e voláteis para o Enroot e o diretório de runtime para o Pyxis. Execute o script abaixo como ação [OnNodeStart](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)personalizada nos nós de computação para configurar o Pyxis e o Enroot na frota de computação.

   ```
   #!/bin/bash
   set -e
   
   echo "Executing $0"
   
   # Configure Enroot
   ENROOT_PERSISTENT_DIR="/var/enroot"
   ENROOT_VOLATILE_DIR="/run/enroot"
   ENROOT_CONF_DIR="/etc/enroot"
   
   sudo mkdir -p $ENROOT_PERSISTENT_DIR
   sudo chmod 1777 $ENROOT_PERSISTENT_DIR
   sudo mkdir -p $ENROOT_VOLATILE_DIR
   sudo chmod 1777 $ENROOT_VOLATILE_DIR
   sudo mkdir -p $ENROOT_CONF_DIR
   sudo chmod 1777 $ENROOT_CONF_DIR
   sudo mv /opt/parallelcluster/examples/enroot/enroot.conf /etc/enroot/enroot.conf
   sudo chmod 0644 /etc/enroot/enroot.conf
   
   # Configure Pyxis
   PYXIS_RUNTIME_DIR="/run/pyxis"
   
   sudo mkdir -p $PYXIS_RUNTIME_DIR
   sudo chmod 1777 $PYXIS_RUNTIME_DIR 
   
   # In Ubuntu24.04 Apparmor blocks the creation of unprivileged user namespaces,
   # which is required by Enroot. So to run Enroot, it is required to disable this restriction.
   # See https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces
   source /etc/os-release
   if [ "${ID}${VERSION_ID}" == "ubuntu24.04" ]; then
       echo "kernel.apparmor_restrict_unprivileged_userns = 0" | sudo tee /etc/sysctl.d/99-pcluster-disable-apparmor-restrict-unprivileged-userns.conf
       sudo sysctl --system
   fi
   ```

## Enviar trabalhos
<a name="submit-jobs"></a>

Agora que o Pyxis está configurado no cluster, você pode enviar trabalhos em contêineres usando os comandos sbatch e srun, que agora são enriquecidos com opções específicas de contêiner.

```
# Submitting an interactive job
srun -N 2 --container-image docker://ubuntu:22.04 hostname

# Submitting a batch job
sbatch -N 2 --wrap='srun --container-image docker://ubuntu:22.04 hostname'
```