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.
Acciones de arranque personalizadas
AWS ParallelCluster puede ejecutar código arbitrario antes (preinstalación) o después (después de la instalación) de la acción de arranque principal al crear el clúster. En la mayoría de los casos, este código se almacena en Amazon Simple Storage Service (Amazon S3) y se accede a él a través de una conexión HTTPS. El código se ejecuta como raíz y puede estar en cualquier lenguaje de script compatible con el sistema operativo del clúster. A menudo, el código está en Bash o Python.
Se llama a las acciones previas a la instalación antes de cualquier arranque de implementación de clúster, como la configuración de NAT, () y el programador. La modificación del almacenamiento o añadir usuarios o paquetes adicionales son acciones de preinstalación típicas.
Las acciones posteriores a la instalación se ejecutan una vez finalizados los procesos de arranque del clúster. Las acciones posteriores a la instalación son las últimas acciones que se llevan a cabo antes de que una instancia se considere completamente configurada y completa. Algunas acciones incluyen la modificación de la configuración del programador, del almacenamiento o de los paquetes.
Puede pasar argumentos a los scripts especificándolos durante la configuración. Estos se transfieren con comillas dobles a las acciones previas o posteriores a la instalación.
Si una acción previa o posterior a la instalación produce un error, el arranque de instancia también falla. El éxito aparece con un código de salida de 0. Cualquier otro código de salida indica que se ha producido un error en el arranque de la instancia.
Puede diferenciar entre el nodo principal en ejecución y el nodo de cómputo. Obtenga el archivo /etc/parallelcluster/cfnconfig
y evalúe la variable de entorno cfn_node_type
, cuyos valores posibles son "MasterServer
" y "ComputeFleet
" para el nodo principal y de computación, 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
Configuración
Se utilizan las siguientes opciones de configuración para definir acciones de preinstalación o posinstalación y argumentos.
# 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
Los dos primeros argumentos, $0
y $1
, se reservan para el nombre del script y la dirección url.
$0 => the script name $1 => s3 url $n => args set by pre/post_install_args
Ejemplo
Los siguientes pasos crean un script de posinstalación sencillo que instala los paquetes R en un clúster.
-
Cree un script.
#!/bin/bash echo "post-install script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:2}"
-
Cargue el script con los permisos correctos en Amazon S3. Si los permisos de lectura públicos no son adecuados para usted, utilice uno de s3_read_resource los dos s3_read_write_resource parámetros para conceder el acceso. Para obtener más información, consulte Uso de Amazon S3.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://bucket-name/myscript.sh
importante
Si la secuencia de comandos se editó en Windows, los finales de línea deben cambiarse de CRLF a LF antes de cargar la secuencia de comandos en Amazon S3.
-
Actualice la AWS ParallelCluster configuración para incluir la nueva acción posterior a la instalación.
[cluster default] ... post_install = https://
bucket-name
.s3.amazonaws.com/myscript.sh
post_install_args = 'R curl wget'Si el bucket no tiene permiso de lectura pública, utilice
s3
como protocolo de la URL.[cluster default] ... post_install = s3://
bucket-name
/myscript.sh
post_install_args = 'R curl wget' -
Lance el clúster.
$
pcluster create mycluster
-
Verifique el resultado.
$
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