Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Actions d'amorçage personnalisées
AWS ParallelCluster peut exécuter du code arbitraire avant (pré-installation) ou après (post-installation) l'action d'amorçage principale lors de la création du cluster. Dans la plupart des cas, ce code est stocké dans Amazon Simple Storage Service (Amazon S3) et accessible via HTTPS une connexion. Le code est exécuté en tant que root et peut être écrit dans n'importe quel langage de script pris en charge par le système d'exploitation du cluster. Le code est souvent en Bash ou en Python.
Les actions de préinstallation sont appelées avant le lancement de toute action de démarrage du déploiement du cluster, telle que la configuration, NAT Amazon Elastic Block Store EBS (Amazon) ou le planificateur. Certaines actions de préinstallation incluent la modification du stockage, l'ajout d'utilisateurs supplémentaires et l'ajout de packages.
Les actions de post-installation sont appelées une fois les processus d'amorçage du cluster terminés. Les actions de post-installation correspondent aux dernières actions effectuées avant qu'une instance ne soit considérée comme entièrement configurée et terminée. Certaines actions post-installation incluent la modification des paramètres du planificateur, la modification du stockage et la modification des packages.
Vous pouvez transmettre des arguments aux scripts en les spécifiant lors de la configuration. Pour cela, vous les transmettez entre guillemets aux actions de pré-installation ou de post-installation.
Si une action de pré-installation ou de post-installation échoue, le bootstrap de l'instance échoue également. Le succès est signalé par un code de sortie égal à zéro (0). Tout autre code de sortie indique que le bootstrap de l'instance a échoué.
Vous pouvez faire la différence entre les nœuds Running Head et les nœuds de calcul. Recherchez le /etc/parallelcluster/cfnconfig
fichier et évaluez les variables d'cfn_node_type
environnement dont les valeurs sont respectivement MasterServer
« » et ComputeFleet
« » pour les nœuds de tête et de calcul.
#!/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
Configuration
Les paramètres de configuration suivants sont utilisés pour définir les actions de pré-installation et de post-installation, ainsi que les arguments.
# 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
Les deux premiers arguments, $0
et $1
, sont réservés pour le nom du script et l'URL.
$0 => the script name $1 => s3 url $n => args set by pre/post_install_args
Exemple
Voici quelques étapes permettant de créer un simple script de post-installation qui installe les packages R dans un cluster.
-
Créez un script.
#!/bin/bash echo "post-install script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:2}"
-
Téléchargez le script avec les autorisations appropriées sur Amazon S3. Si les autorisations de lecture publiques ne vous conviennent pas, utilisez l'un s3_read_resource ou l'autre s3_read_write_resource des paramètres pour accorder l'accès. Pour de plus amples informations, veuillez consulter Travailler avec Amazon S3.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>/myscript.sh
Important
Si le script a été modifié sous Windows, les fins de ligne doivent être remplacées par CRLF LF avant que le script ne soit chargé sur Amazon S3.
-
Mettez à jour la AWS ParallelCluster configuration pour inclure la nouvelle action de post-installation.
[cluster default] ... post_install = https://
<bucket-name>
.s3.amazonaws.com/myscript.sh
post_install_args = 'R curl wget'Si le bucket ne dispose pas d'une autorisation de lecture publique,
s3
utilisez-le comme URL protocole.[cluster default] ... post_install = s3://
<bucket-name>
/myscript.sh
post_install_args = 'R curl wget' -
Lancement du cluster
$
pcluster create mycluster
-
Vérifiez la sortie.
$
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