

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

# Ações de bootstrap personalizadas
<a name="pre_post_install"></a>

AWS ParallelCluster pode executar código arbitrário antes (pré-instalação) ou depois (pós-instalação) da ação principal de bootstrap quando o cluster é criado. Na maioria dos casos, esse código é armazenado no Amazon Simple Storage Service (Amazon S3) e acessado por meio de uma conexão HTTPS. O código é executado como root e pode estar em qualquer linguagem de script compatível com o sistema operacional do cluster. Muitas vezes, o código está em *Bash* ou *Python*.

As ações de pré-instalação são chamadas antes de qualquer bootstrap de implantação do cluster, como a configuração de NAT, do Amazon Elastic Block Store (Amazon EBS) ou o programador. Entre as ações de pré-instalação típicas estão a modificação do armazenamento, a adição de usuários e a inclusão de pacotes adicionais.

As ações pós-instalação são chamadas após a conclusão dos processos de inicialização do cluster. As ações pós-instalação são as últimas ações que ocorrem antes que uma instância seja considerada totalmente configurada e concluída. Algumas ações de pós-instalação podem incluir a alteração de configurações do programador, a modificação do armazenamento ou a modificação de pacotes.

Os argumentos podem ser transmitidos para scripts, especificando-os na configuração. Para tanto, você deve enviá-los entre aspas duplas para as ações de pré-instalação e pós-instalação.

Se uma ação de pré-instalação ou pós-instalação falhar, o bootstrap da instância também falha. O êxito é sinalizado com um código de saída de zero (0). Qualquer outro código de saída indica que o bootstrap da instância falhou.

Você pode diferenciar entre cabeçote de execução e nós de computação. Gere o arquivo `/etc/parallelcluster/cfnconfig` e avalie a variável de ambiente `cfn_node_type`, que possui valores "`MasterServer`" e "`ComputeFleet`" para os nós principais e de computação, respectivamente.

```
#!/bin/bash

. "/etc/parallelcluster/cfnconfig"

case "${cfn_node_type}" in
    MasterServer)
        echo "I am the head node" >> /tmp/head.txt
    ;;
    ComputeFleet)
        echo "I am a compute node" >> /tmp/compute.txt
    ;;
    *)
    ;;
esac
```

## Configuração
<a name="pre_post_install-configuration"></a>

As seguintes definições de configuração são usadas para definir ações e argumentos de pré-instalação e pós-instalação.

```
# URL to a preinstall script. This is run before any of the boot_as_* scripts are run
# (no default)
pre_install = https://<bucket-name>.s3.amazonaws.com/my-pre-install-script.sh
# Arguments to be passed to preinstall script
# (no default)
pre_install_args = argument-1 argument-2
# URL to a postinstall script. This is run after any of the boot_as_* scripts are run
# (no default)
post_install = https://<bucket-name>.s3.amazonaws.com/my-post-install-script.sh
# Arguments to be passed to postinstall script
# (no default)
post_install_args = argument-3 argument-4
```

## Argumentos
<a name="arguments"></a>

Os dois primeiros argumentos — `$0` e `$1` — são reservados para o url e o nome do script.

```
$0 => the script name
$1 => s3 url
$n => args set by pre/post_install_args
```

## Exemplo
<a name="example"></a>

As etapas a seguir criam um script simples de pós-instalação que instala os pacotes R em um cluster.

1. Crie um script.

   ```
   #!/bin/bash
   
   echo "post-install script has $# arguments"
   for arg in "$@"
   do
       echo "arg: ${arg}"
   done
   
   yum -y install "${@:2}"
   ```

1. Faça upload do script com as permissões corretas para o Amazon S3. Se as permissões de leitura pública não forem apropriadas para você, use um [`s3_read_resource`](cluster-definition.md#s3-read-resource) ou [`s3_read_write_resource`](cluster-definition.md#s3-read-write-resource) os parâmetros para conceder acesso. Para obter mais informações, consulte [Trabalhar com o Amazon S3](s3_resources.md).

   ```
   $ aws s3 cp --acl public-read /path/to/myscript.sh s3://bucket-name/myscript.sh
   ```
**Importante**  
Se o script foi editado no Windows, as terminações de linha devem ser alteradas de CRLF para LF antes que seja feito upload do script para o Amazon S3.

1. Atualize a AWS ParallelCluster configuração para incluir a nova ação pós-instalação.

   ```
   [cluster default]
   ...
   post_install = https://bucket-name.s3.amazonaws.com/myscript.sh
   post_install_args = 'R curl wget'
   ```

   Se o bucket não tiver permissão de leitura pública, use `s3` como o protocolo de URL.

   ```
   [cluster default]
   ...
   post_install = s3://bucket-name/myscript.sh
   post_install_args = 'R curl wget'
   ```

1. Execute os clusters.

   ```
   $ pcluster create mycluster
   ```

1. Verifique a saída.

   ```
   $ less /var/log/cfn-init.log
   2019-04-11 10:43:54,588 [DEBUG] Command runpostinstall output: post-install script has 4 arguments
   arg: s3://bucket-name/test.sh
   arg: R
   arg: curl
   arg: wget
   Loaded plugins: dkms-build-requires, priorities, update-motd, upgrade-helper
   Package R-3.4.1-1.52.amzn1.x86_64 already installed and latest version
   Package curl-7.61.1-7.91.amzn1.x86_64 already installed and latest version
   Package wget-1.18-4.29.amzn1.x86_64 already installed and latest version
   Nothing to do
   ```