

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Operazioni di bootstrap personalizzate
<a name="pre_post_install"></a>

AWS ParallelCluster può eseguire codice arbitrario prima (preinstallazione) o dopo (post-installazione) l'azione di bootstrap principale al momento della creazione del cluster. Nella maggior parte dei casi, questo codice è memorizzato in Amazon Simple Storage Service (Amazon S3) e vi si accede tramite una connessione HTTPS. Il codice viene eseguito come root e può essere in qualsiasi linguaggio di script supportato dal sistema operativo del cluster. Spesso il codice è in *Bash* o *Python*.

Le azioni di preinstallazione vengono richiamate prima dell'avvio di qualsiasi azione di bootstrap per la distribuzione del cluster, come la configurazione di NAT, Amazon Elastic Block Store (Amazon EBS) o lo scheduler. Alcune azioni di preinstallazione includono la modifica dello storage, l'aggiunta di utenti aggiuntivi e l'aggiunta di pacchetti.

Le azioni post-installazione vengono richiamate dopo il completamento dei processi di bootstrap del cluster. Le azioni post-installazione sono le ultime azioni che si verificano prima che un'istanza venga considerata completamente configurata e completa. Alcune azioni successive all'installazione includono la modifica delle impostazioni dello scheduler, la modifica dello storage e la modifica dei pacchetti.

È possibile passare argomenti agli script specificandoli durante la configurazione. Per questo, li passate tra virgolette alle azioni di preinstallazione o post-installazione.

Se un'azione di preinstallazione o post-installazione fallisce, fallisce anche il bootstrap dell'istanza. Il successo viene segnalato con un codice di uscita pari a zero (0). Qualsiasi altro codice di uscita indica che il bootstrap dell'istanza non è riuscito.

È possibile distinguere tra nodi running head e nodi di calcolo. Recupera il `/etc/parallelcluster/cfnconfig` file e valuta la variabile di `cfn_node_type` ambiente che ha un valore di "`MasterServer`" e "`ComputeFleet`" per i nodi head e compute, rispettivamente.

```
#!/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
```

## Configurazione
<a name="pre_post_install-configuration"></a>

Le impostazioni di configurazione seguenti vengono utilizzate per definire le operazioni di pre-installazione e post-installazione e gli argomenti.

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

## Arguments (Argomenti)
<a name="arguments"></a>

I primi due argomenti, `$0` e `$1`, sono riservati per il nome dello script e l'url.

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

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

Le fasi seguenti consentono di creare un semplice script di post-installazione che installa i pacchetti R in un cluster.

1. Creare uno script.

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

1. Carica lo script con le autorizzazioni corrette su Amazon S3. Se le autorizzazioni di lettura pubbliche non sono appropriate per te, utilizza uno dei due [`s3_read_write_resource`](cluster-definition.md#s3-read-write-resource) parametri per [`s3_read_resource`](cluster-definition.md#s3-read-resource) concedere l'accesso. Per ulteriori informazioni, consulta [Lavorare con Amazon S3](s3_resources.md).

   ```
   $ aws s3 cp --acl public-read /path/to/myscript.sh s3://bucket-name/myscript.sh
   ```
**Importante**  
Se lo script è stato modificato in Windows, le terminazioni di riga devono essere modificate da CRLF a LF prima di caricare lo script su Amazon S3.

1. Aggiorna la AWS ParallelCluster configurazione per includere la nuova azione post-installazione.

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

   Se il bucket non dispone dell'autorizzazione di lettura pubblica, utilizzalo `s3` come protocollo URL.

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

1. Avviare il cluster

   ```
   $ pcluster create mycluster
   ```

1. Verificare l'output.

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