Creación de una AMI de AWS ParallelCluster 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 AMI de AWS ParallelCluster personalizada

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

La interfaz de usuario de AWS ParallelCluster se basa en una arquitectura sin servidor y, en la mayoría de los casos, se puede utilizar en la categoría de nivel AWS gratuito. 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.

Aunque crear una AMI personalizada no es lo ideal, hay casos en los que es necesario crear una AMI personalizada para AWS ParallelCluster. En este tutorial encontrará una introducción a una AMI personalizada para estos escenarios.

Requisitos previos

Cómo personalizar la AMI de AWS ParallelCluster

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

Creación de una AMI de AWS ParallelCluster personalizada

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

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 AMI de AWS ParallelCluster 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 usando S3 en la Guía del usuario de instancias de Linux de Amazon EC2.

Pasos:

  1. Configure sus credenciales Cuenta de AWS de modo que el cliente AWS ParallelCluster pueda realizar llamadas a operaciones de la API en su nombre. Para obtener una lista de los permisos necesarios, consulte Permisos de AWS Identity and Access Management 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 pcluster build-image de la CLI de para crear una AMI de AWS ParallelCluster a partir de la AMI que ha proporcionado 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 se ha eliminado la VPC predeterminada, quizás mediante una zona de aterrizaje AWS Control Tower o AWS, se debe especificar el ID de subred 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 pila de CloudFormation en función de la configuración de la imagen. La pila incluye todos los recursos de EC2 Image Builder 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, EC2 Image Builder ejecuta las pruebas definidas en los componentes de Image Builder.

    • Si la compilación se realiza correctamente, se elimina la pila. Si la compilación falla, la pila se conserva 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 pcluster describe-imagecomando o los comandos de recuperación de registros.

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

El build-imagecomando crea una pila de CloudFormation con todos los recursos de 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 pila de CloudFormation 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 Filtrado de salida de la AWS CLI en la Guía del usuario de AWS Command Line Interface.

$ 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 de registro de eventos relacionada con la creación de Image Builder. Ahora puede enumerar los flujos de registro de imágenes y supervisar los pasos de Image Builder mediante pcluster get-image-log-eventscomandos pcluster list-image-log-streamsy.

$ 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 describe-imagecomando hasta que vea el BUILD_COMPLETE estado.

$ 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 las transmisiones de CloudWatch Logs relacionadas con el proceso AWS CloudFormation y los eventos de pila de Image Builder. 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 AMI de AWS ParallelCluster

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 build-imagecomando. 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 EC2 console
  1. En la lista de AMI , busque la AMI que corresponde a la Región de AWS específica que usa. 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 del EC2.

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

  3. En el panel de navegación, elija Images (Imágenes) y a continuación AMIs (AMI). Busque el ID de imagen EC2 recuperado, seleccione la AMI y elija Launch instance from 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 EC2 o AWS CLI create-image.

    Desde la consola 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. Para crear el clúster, especifique el ID de AMI en el campo CustomAmi de la configuración del clúster.

Old EC2 console
  1. En la lista de AMI AWS ParallelCluster, busque la AMI que corresponde a la específica que usa. 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. De la salida, puede recuperar el ID de imagen del EC2.

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

  3. En el panel de navegación, elija Images (Imágenes) y a continuación AMIs (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 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 EC2 o AWS CLI create-image.

    Desde la consola 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. Para crear el clúster, especifique el ID de AMI en el campo CustomAmi de la configuración del clúster.