Creación de una AWS ParallelCluster AMI personalizada - AWS ParallelCluster

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.

Creación de una AWS ParallelCluster AMI personalizada

Al utilizar la interfaz de línea de AWS ParallelCluster comandos (CLI) o la API, solo paga por los AWS recursos que se crean al crear o actualizar AWS ParallelCluster imágenes y clústeres. Para obtener más información, consulte AWS servicios utilizados por AWS ParallelCluster.

La AWS ParallelCluster interfaz de usuario se basa en una arquitectura sin servidor y, en la mayoría de los casos, se puede utilizar en la categoría de capa AWS gratuita. Para obtener más información, consulte Costes de la interfaz de usuario de AWS ParallelCluster.

importante

Si crea una AMI personalizada, debe repetir los pasos que utilizó para crear la AMI personalizada con cada nueva versión de AWS ParallelCluster .

Antes de seguir leyendo le recomendamos revisar la sección Acciones de arranque personalizadas. Determine si las modificaciones que desea realizar se pueden incluir en un script y son compatibles con futuras versiones de AWS ParallelCluster .

Si bien crear una AMI personalizada en general no es lo ideal, hay situaciones específicas en las que AWS ParallelCluster es necesario crear una AMI personalizada. En este tutorial encontrará una introducción a una AMI personalizada para estos escenarios.

Requisitos previos

Cómo personalizar la AWS ParallelCluster AMI

Hay dos formas de crear una AWS ParallelCluster AMI personalizada. Uno de estos dos métodos consiste en crear una AMI nueva mediante la AWS ParallelCluster CLI. Otro método requiere que realice modificaciones manuales para crear una nueva AMI que esté disponible en su Cuenta de AWS.

Cree una AWS ParallelCluster AMI personalizada

Si tiene una AMI y un software personalizados, puede aplicar los cambios necesarios AWS ParallelCluster sobre ellos. AWS ParallelCluster se basa en el servicio EC2 Image Builder para crear AMI personalizadas. Para obtener más información, consulte la Guía de usuario de Generador de imágenes.

Puntos clave

  • El proceso tarda unos 60 minutos. Este tiempo puede variar si hay más Build/Components que instalar en el momento de la construcción.

  • La AMI está etiquetada con las versiones de los componentes principales. Estas incluyen el núcleo, el programador y el controlador EFA. En la descripción de la AMI también se indica un subconjunto de las versiones de los componentes.

  • A partir de la AWS ParallelCluster versión 3.0.0, se puede utilizar un nuevo conjunto de comandos CLI para gestionar el ciclo de vida de las imágenes. Esto incluye build-image, list-images, describe-image y delete-image.

  • Este método se puede repetir. Puede volver a ejecutarlo para mantener las AMI actualizadas (por ejemplo, las actualizaciones del sistema operativo) y, a continuación, utilizarlas cuando actualice un clúster existente.

nota

Si utiliza este método en la partición de AWS China, es posible que se produzcan errores de red. Por ejemplo, es posible que veas estos errores en el pcluster build-image comando cuando descarga paquetes desde GitHub o desde un repositorio del sistema operativo. Si esto ocurre, le recomendamos que utilice uno de los siguientes métodos alternativos:

  1. Siga el Modificar una AWS ParallelCluster AMI enfoque que omite este comando.

  2. Cree la imagen en otra partición o región, por ejemplo, y, a continuación us-east-1, almacénela y restáurela para moverla a la región de China. Para obtener más información, consulte Almacenamiento y restauración de una AMI mediante S3 en la Guía del usuario de Amazon EC2.

Pasos:

  1. Configure sus Cuenta de AWS credenciales para que el AWS ParallelCluster cliente pueda realizar llamadas a las operaciones de la AWS API en su nombre. Para obtener una lista de los permisos necesarios, consulte AWS Identity and Access Management permisos en AWS ParallelCluster.

  2. Cree un archivo de configuración de imagen de compilación básico. Para ello, especifique el InstanceTypeque se utilizará para crear la imagen y el ParentImage. Se utilizan como punto de partida para crear la AMI. Para obtener más información acerca de los parámetros de configuración opcionales, consulte Configuración de imagen.

    Build: InstanceType: <BUILD_INSTANCE_TYPE> ParentImage: <BASE_AMI_ID>
  3. Utilice el comando CLI pcluster build-imagepara crear una AWS ParallelCluster AMI a partir de la AMI que proporciona como base.

    $ pcluster build-image --image-id IMAGE_ID --image-configuration IMAGE_CONFIG.yaml --region REGION { "image": { "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0" } }
    aviso

    pcluster build-image utiliza la VPC predeterminada. Si elimina la VPC predeterminada mediante AWS Control Tower una zona de AWS destino, el ID de subred debe especificarse en el archivo de configuración de la imagen. Para obtener más información, consulte SubnetId.

    Para obtener una lista de otros parámetros, consulte la página de referencia de comandos pcluster build-image. Los resultados del comando anterior son los siguientes:

    • Se crea una CloudFormation pila en función de la configuración de la imagen. La pila incluye todos los recursos de Generador de imágenes de EC2 necesarios para la compilación.

    • Los recursos creados incluyen los AWS ParallelCluster componentes oficiales de Image Builder a los que se pueden añadir componentes personalizados de Image Builder. Para aprender a crear componentes personalizados, consulte los ejemplos de AMI personalizadas en el taller de HPC para clientes del sector público.

    • EC2 Image Builder lanza una instancia de compilación, aplica AWS ParallelCluster el libro de cocina, instala la pila de software y realiza AWS ParallelCluster las tareas de configuración necesarias. El AWS ParallelCluster libro de cocina se utiliza para compilar y arrancar. AWS ParallelCluster

    • La instancia se detiene y se crea una nueva AMI a partir de ella.

    • Se lanza otra instancia desde la AMI recién creada. Durante la fase de prueba, Generador de imágenes de EC2 ejecuta las pruebas definidas en los componentes de Generador de imágenes.

    • Si la compilación se realiza correctamente, se elimina la pila. Si la compilación falla, la pila se retiene y está disponible para su inspección.

  4. Puede monitorear el estado del proceso de compilación si ejecuta el siguiente comando. Una vez completada la compilación, puede ejecutarla para recuperar el ID de AMI indicado en la respuesta.

    $ pcluster describe-image --image-id IMAGE_ID --region REGION # BEFORE COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?...", }, "imageId": "IMAGE_ID", "imagebuilderImageStatus": "BUILDING", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0", "cloudformationStackTags": [ { "value": "3.7.0", "key": "parallelcluster:version" }, { "value": "IMAGE_ID", "key": "parallelcluster:image_name" }, ... ], "imageBuildLogsArn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/imagebuilder/ParallelClusterImage-IMAGE_ID", "cloudformationStackCreationTime": "2022-04-05T21:36:26.176Z" } # AFTER COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1", "state": "AVAILABLE", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }
  5. Para crear el clúster, especifique el ID de AMI en el campo CustomAmi de la configuración del clúster.

Solución de problemas y supervisión del proceso de creación de AMI

La creación de la imagen se completa en aproximadamente una hora. Puede supervisar el proceso ejecutando el comando pcluster describe-image o los comandos de recuperación de registros.

$ pcluster describe-image --image-id IMAGE_ID --region REGION

El build-imagecomando crea una CloudFormation pila con todos los recursos de Amazon EC2 necesarios para crear la imagen e inicia el proceso de EC2 Image Builder.

Tras ejecutar el build-imagecomando, es posible recuperar los eventos de la CloudFormation pila mediante. pcluster get-image-stack-events Puede filtrar los resultados con el --query parámetro para ver los eventos más recientes. Para obtener más información, consulte Filtrar los AWS CLI resultados en la Guía del AWS Command Line Interface usuario.

$ pcluster get-image-stack-events --image-id IMAGE_ID --region REGION --query "events[0]" { "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2022-04-05T21:39:24.725Z", "physicalResourceId": "arn:aws:imagebuilder:us-east-1:123456789012:image/parallelclusterimage-IMAGE_ID/3.7.0/1", "resourceStatus": "CREATE_IN_PROGRESS", "resourceStatusReason": "Resource creation Initiated", "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/parallelclusterimage-IMAGE_ID/3.7.0\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"Tags\":{\"parallelcluster:image_name\":\"IMAGE_ID\",\"parallelcluster:image_id\":\"IMAGE_ID\"}}", "stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "stackName": "IMAGE_ID", "logicalResourceId": "ParallelClusterImage", "resourceType": "AWS::ImageBuilder::Image", "timestamp": "2022-04-05T21:39:24.725Z" }

Después de unos 15 minutos, los eventos de la pila aparecen en la entrada del evento de registro relacionada con la creación de Generador de imágenes. Ahora puede enumerar los flujos de registro de imágenes y supervisar los pasos de Generador de imágenes mediante los comandos pcluster list-image-log-streams y pcluster get-image-log-events.

$ pcluster list-image-log-streams --image-id IMAGE_ID --region REGION \ --query 'logStreams[*].logStreamName' "3.7.0/1" ] $ pcluster get-image-log-events --image-id IMAGE_ID --region REGION \ --log-stream-name 3.7.0/1 --limit 3 { "nextToken": "f/36295977202298886557255241372854078762600452615936671762", "prevToken": "b/36295977196879805474012299949460899222346900769983430672", "events": [ { "message": "ExecuteBash: FINISHED EXECUTION", "timestamp": "2022-04-05T22:13:26.633Z" }, { "message": "Document arn:aws:imagebuilder:us-east-1:123456789012:component/parallelclusterimage-test-abcd1234-ef56-gh78-ij90-1234abcd5678/3.7.0/1", "timestamp": "2022-04-05T22:13:26.741Z" }, { "message": "TOE has completed execution successfully", "timestamp": "2022-04-05T22:13:26.819Z" } ] }

Continúe comprobando con el comando describe-image hasta que vea el estado BUILD_COMPLETE.

$ pcluster describe-image --image-id IMAGE_ID --region REGION { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1", "state": "AVAILABLE", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }

Si necesita solucionar un problema de creación de una AMI personalizada, cree un archivo con los registros de imágenes tal y como se describe en los pasos siguientes.

Puede archivar los registros en Amazon S3 o en un archivo local (según el parámetro --output).

$ pcluster export-image-logs --image-id IMAGE_ID --region REGION \ --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER { "url": "https://BUCKET_NAME.s3.us-east-1.amazonaws.com/BUCKET-FOLDER/IMAGE_ID-logs-202209071136.tar.gz?AWSAccessKeyId=..." } $ pcluster export-image-logs --image-id IMAGE_ID \ --region REGION --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER --output-file /tmp/archive.tar.gz { "path": "/tmp/archive.tar.gz" }

El archivo contiene los flujos de CloudWatch registros relacionados con el proceso de Image Builder y los eventos de AWS CloudFormation pila. El proceso puede tardar varios minutos en completarse.

Administración de AMI personalizadas

A partir de la AWS ParallelCluster versión 3.0.0, se ha agregado un nuevo conjunto de comandos a la CLI para crear, monitorear y administrar el ciclo de vida de la imagen. Para obtener más información sobre el comando, consulte Comandos pcluster.

Modificar una AWS ParallelCluster AMI

Este método consiste en modificar una AWS ParallelCluster AMI oficial añadiéndole personalización por encima. Las AWS ParallelCluster AMI base se actualizan con las nuevas versiones. Estas AMI tienen todos los componentes necesarios AWS ParallelCluster para funcionar cuando se instalan y configuran. Puede empezar con una de ellas como base.

Puntos clave:

  • Este método es más rápido que el comando build-image. Sin embargo, es un proceso manual y no se puede repetir automáticamente.

  • Con este método, no tiene acceso a los comandos de recuperación de registros y administración del ciclo de vida de las imágenes que están disponibles a través de la CLI.

Pasos:

New Amazon EC2 console
  1. Busque la AMI que corresponda a la específica Región de AWS que utiliza. Para encontrarlo, utilice el pcluster list-official-imagescomando con el --region parámetro para seleccionar los --architecture parámetros Región de AWS y --os y filtros específicos para la AMI deseada con el sistema operativo y la arquitectura que desee utilizar. De la salida, recupere el ID de imagen de Amazon EC2.

  2. Inicie sesión en la consola Amazon EC2 AWS Management Console y ábrala en https://console.aws.amazon.com/ec2/.

  3. En el panel de navegación, elija Imágenes y a continuación AMI. Busque el ID de imagen EC2 recuperado, seleccione la AMI y elija Lanzar instancia a partir de una AMI.

  4. Desplácese hacia abajo y elija el tipo de instancia.

  5. Elija su Par de claves y Lanzar instancias.

  6. Inicie sesión en la instancia mediante el usuario del sistema operativo y su clave de SSH.

  7. Personalice la instancia de forma manual para cumplir con sus requisitos.

  8. Ejecute el siguiente comando para preparar su instancia para la creación de la AMI:

    sudo /usr/local/sbin/ami_cleanup.sh
  9. Desde la consola, seleccione Estado de instancia y a continuación seleccione Detener instancia.

    Navegue a Instancias, elija la nueva instancia, seleccione Estado de la instancia, y Detener instancia

  10. Cree una AMI nueva a partir de la instancia mediante la consola Amazon EC2 o AWS CLI cree una imagen.

    Desde la consola Amazon EC2
    1. Elija Instances (Instancia[s]) en el panel de navegación.

    2. Elija la instancia que creó y modificó.

    3. Elija Acciones, Imagen y a continuación, Crear imagen.

    4. Elija Create Image (Crear imagen).

  11. Especifique el ID de AMI en el campo CustomAmi de la configuración del clúster y cree un clúster.

Old Amazon EC2 console
  1. Busque la AWS ParallelCluster AMI que corresponda a la específica Región de AWS que utiliza. Para encontrarlo, puede usar el pcluster list-official-imagescomando con el --region parámetro para seleccionar los --architecture parámetros Región de AWS y --os y filtrar específicos para la AMI deseada con el sistema operativo y la arquitectura que desee usar. Desde el resultado, puede recuperar el ID de imagen de Amazon EC2.

  2. Inicie sesión en la consola Amazon EC2 AWS Management Console y ábrala en https://console.aws.amazon.com/ec2/.

  3. En el panel de navegación, elija Imágenes y a continuación AMI. Defina el filtro para imágenes públicas y busque el ID de imagen EC2 recuperado, seleccione la AMI y elija Launch.

  4. Elija el tipo de instancia y seleccione Siguiente: configurar los detalles de la instancia o Revisar y lanzar para lanzar la instancia.

  5. Elija Lanzar, seleccione su par de claves y lance las instancias.

  6. Inicie sesión en la instancia mediante el usuario del sistema operativo y su clave de SSH. Para obtener más información, vaya a Instancias, seleccione la nueva instancia y Conectar.

  7. Personalice la instancia de forma manual para cumplir con sus requisitos.

  8. Ejecute el siguiente comando para preparar su instancia para la creación de la AMI:

    sudo /usr/local/sbin/ami_cleanup.sh
  9. En la consola Amazon EC2, elija Instances en el panel de navegación, seleccione la nueva instancia y elija Actions, Instance State y Stop.

  10. Cree una AMI nueva a partir de la instancia mediante la consola Amazon EC2 o AWS CLI cree una imagen.

    Desde la consola Amazon EC2
    1. Elija Instances (Instancia[s]) en el panel de navegación.

    2. Elija la instancia que creó y modificó.

    3. Elija Acciones, Imagen y a continuación, Crear imagen.

    4. Elija Create Image (Crear imagen).

  11. Especifique el ID de AMI en el campo CustomAmi de la configuración del clúster y cree un clúster.