Creazione di un' AWS ParallelCluster AMI personalizzata - AWS ParallelCluster

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à.

Creazione di un' AWS ParallelCluster AMI personalizzata

Quando si utilizza l'interfaccia a riga di AWS ParallelCluster comando (CLI) o l'API, si pagano solo le AWS risorse create quando si creano o si aggiornano AWS ParallelCluster immagini e cluster. Per ulteriori informazioni, consulta AWS servizi usati da AWS ParallelCluster.

L' AWS ParallelCluster interfaccia utente è basata su un'architettura serverless ed è possibile utilizzarla nella categoria AWS Free Tier nella maggior parte dei casi. Per ulteriori informazioni, consulta AWS ParallelClusterCosti dell'interfaccia utente.

Importante

Se crei un'AMI personalizzata, devi ripetere i passaggi utilizzati per creare l'AMI personalizzata con ogni nuova AWS ParallelCluster versione.

Prima di continuare a leggere, ti consigliamo di rivedere prima la Azioni bootstrap personalizzate sezione. Determina se le modifiche che desideri apportare possono essere scritte tramite script e supportate nelle versioni future AWS ParallelCluster .

Anche se la creazione di un'AMI personalizzata in generale non è l'ideale, esistono scenari specifici in cui AWS ParallelCluster è necessario creare un'AMI personalizzata per. Questo tutorial spiega come creare un'AMI personalizzata per questi scenari.

Prerequisiti

Come personalizzare l' AWS ParallelCluster AMI

Esistono due modi per creare un' AWS ParallelCluster AMI personalizzata. Uno di questi due metodi consiste nel creare una nuova AMI utilizzando la AWS ParallelCluster CLI. Un altro metodo richiede che tu apporti modifiche manuali per creare una nuova AMI disponibile con il tuo Account AWS.

Crea un' AWS ParallelCluster AMI personalizzata

Se disponi di un'AMI e di un software personalizzati, puoi aggiungere AWS ParallelCluster le modifiche necessarie. AWS ParallelCluster si affida al servizio EC2 Image Builder per creare AMI personalizzate. Per ulteriori informazioni, consultare la Guida per l'utente di Image Builder.

Punti chiave:

  • Il processo dura circa 1 ora. Questo tempo può variare se ci sono altri Build/Componentsda installare in fase di compilazione.

  • L'AMI è contrassegnata con le versioni dei componenti principali. Questi includono il kernel, lo scheduler e il driver EFA. Un sottoinsieme delle versioni dei componenti è riportato anche nella descrizione dell'AMI.

  • A partire dalla AWS ParallelCluster versione 3.0.0, è possibile utilizzare un nuovo set di comandi CLI per gestire il ciclo di vita delle immagini. Sono inclusi build-image, list-images, describe-image e delete-image.

  • Questo metodo è ripetibile. Puoi rieseguirlo per mantenere aggiornate le AMI (ad esempio, gli aggiornamenti del sistema operativo) e quindi utilizzarle quando aggiorni un cluster esistente.

Nota

Se si utilizza questo metodo nella partizione AWS cinese, è possibile che si verifichino errori di rete. Ad esempio, potresti visualizzare questi errori nel pcluster build-image comando quando scarica pacchetti da GitHub o da un archivio del sistema operativo. In tal caso, ti consigliamo di utilizzare uno dei seguenti metodi alternativi:

  1. Segui l'Modificare un AWS ParallelCluster AMIapproccio che ignora questo comando.

  2. Create l'immagine in un'altra partizione e regione, ad esempious-east-1, e poi memorizzatela e ripristinatela per spostarla nella regione cinese. Per ulteriori informazioni, consulta Archiviazione e ripristino di un'AMI utilizzando S3 nella Guida per l'utente di Amazon EC2.

Fasi:

  1. Configura Account AWS le tue credenziali in modo che il AWS ParallelCluster client possa effettuare chiamate alle operazioni AWS API per tuo conto. Per un elenco delle autorizzazioni richieste, consulta AWS Identity and Access Management autorizzazioni in AWS ParallelCluster.

  2. Crea un file di configurazione dell'immagine di build di base. Per fare ciò, specifica il InstanceTypefile da utilizzare per creare l'immagine e il ParentImage. Questi vengono utilizzati come punto di partenza per creare l'AMI. Per ulteriori informazioni sui parametri di compilazione opzionali, consulta Image Configuration.

    Build: InstanceType: <BUILD_INSTANCE_TYPE> ParentImage: <BASE_AMI_ID>
  3. Usa il comando CLI pcluster build-imageper creare un' AWS ParallelCluster AMI a partire dall'AMI che fornisci come 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" } }
    avvertimento

    pcluster build-imageutilizza il VPC predefinito. Se elimini il VPC predefinito utilizzando AWS Control Tower o AWS Landing Zone, l'ID della sottorete deve essere specificato nel file di configurazione dell'immagine. Per ulteriori informazioni, consulta SubnetId.

    Per un elenco di altri parametri, consulta la pagina di riferimento dei pcluster build-imagecomandi. I risultati del comando precedente sono i seguenti:

    • Viene creato uno CloudFormation stack in base alla configurazione dell'immagine. Lo stack include tutte le risorse EC2 Image Builder necessarie per la compilazione.

    • Le risorse create includono i componenti ufficiali di Image Builder a cui è possibile aggiungere AWS ParallelCluster componenti Image Builder personalizzati. Per informazioni su come creare componenti personalizzati, consulta gli esempi di AMI personalizzate nel workshop HPC for Public Sector Customers.

    • EC2 Image Builder avvia un'istanza di build, AWS ParallelCluster applica il ricettario, AWS ParallelCluster installa lo stack software ed esegue le attività di configurazione necessarie. Il AWS ParallelCluster ricettario viene utilizzato per creare e avviare. AWS ParallelCluster

    • L'istanza viene interrotta e da essa viene creata una nuova AMI.

    • Un'altra istanza viene lanciata dall'AMI appena creata. Durante la fase di test, EC2 Image Builder esegue test definiti nei componenti di Image Builder.

    • Se la compilazione ha esito positivo, lo stack viene eliminato. Se la compilazione fallisce, lo stack viene mantenuto e disponibile per l'ispezione.

  4. È possibile monitorare lo stato del processo di compilazione eseguendo il comando seguente. Una volta completata la build, puoi eseguirla per recuperare l'ID AMI fornito nella risposta.

    $ 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. Per creare il tuo cluster, inserisci l'ID AMI nel CustomAmicampo della configurazione del cluster.

Risoluzione dei problemi e monitoraggio del processo di creazione di AMI

La creazione dell'immagine viene completata in circa un'ora. È possibile monitorare il processo eseguendo il pcluster describe-imagecomando o i comandi di recupero del registro.

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

Il build-imagecomando crea uno CloudFormation stack con tutte le risorse Amazon EC2 necessarie per creare l'immagine e avvia il processo EC2 Image Builder.

Dopo aver eseguito il build-imagecomando, è possibile recuperare CloudFormation gli eventi dello stack utilizzando. pcluster get-image-stack-events Puoi filtrare i risultati con il --query parametro per vedere gli ultimi eventi. Per ulteriori informazioni, consulta Filtraggio dell' AWS CLI output nella Guida per l'AWS Command Line Interface utente.

$ 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" }

Dopo circa 15 minuti, gli eventi dello stack vengono visualizzati nella voce degli eventi di registro relativa alla creazione di Image Builder. È ora possibile elencare i flussi di log delle immagini e monitorare i passaggi di Image Builder pcluster list-image-log-streamsutilizzando pcluster get-image-log-eventsi comandi and.

$ 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" } ] }

Continuate a controllare con il describe-imagecomando finché non ne vedete lo stato. 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" }

Se devi risolvere un problema di creazione di AMI personalizzate, crea un archivio dei log delle immagini come descritto nei passaggi seguenti.

È possibile archiviare i log in un bucket Amazon S3 o in un file locale, a seconda del parametro. --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" }

L'archivio contiene i CloudWatch Logs Streams relativi al processo AWS CloudFormation di Image Builder e agli eventi dello stack. L'esecuzione del comando potrebbe richiedere alcuni minuti.

Gestione delle AMI personalizzate

A partire dalla AWS ParallelCluster versione 3.0.0, è stato aggiunto un nuovo set di comandi nella CLI per creare, monitorare e gestire il ciclo di vita dell'immagine. Per ulteriori informazioni sui comandi, consulta i comandi di pcluster.

Modificare un AWS ParallelCluster AMI

Questo metodo consiste nel modificare un' AWS ParallelCluster AMI ufficiale aggiungendovi delle personalizzazioni. Le AWS ParallelCluster AMI di base vengono aggiornate con nuove versioni. Queste AMI dispongono di tutti i componenti necessari AWS ParallelCluster per il funzionamento una volta installate e configurate. Puoi iniziare con uno di questi come base.

Punti chiave:

  • Questo metodo è più veloce del build-imagecomando. Tuttavia, si tratta di un processo manuale e non ripetibile automaticamente.

  • Con questo metodo, non è possibile accedere ai comandi di recupero dei log e di gestione del ciclo di vita delle immagini disponibili tramite la CLI.

Fasi:

New Amazon EC2 console
  1. Trova l'AMI che corrisponde allo specifico Regione AWS che usi. Per trovarlo, usa il pcluster list-official-imagescomando con il --region parametro per selezionare i --architecture parametri Regione AWS --os e i parametri specifici da filtrare per l'AMI desiderata con il sistema operativo e l'architettura che desideri utilizzare. Dall'output, recupera l'ID immagine Amazon EC2.

  2. Accedi AWS Management Console e apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  3. Nel pannello di navigazione, scegli Immagini, quindi AMI. Cerca l'ID immagine EC2 recuperato, seleziona l'AMI e scegli Launch instance from AMI.

  4. Scorri verso il basso e scegli il tipo di istanza.

  5. Scegli la tua coppia di chiavi e Launch Instance.

  6. Accedi alla tua istanza utilizzando l'utente del sistema operativo e la tua SSH chiave.

  7. Personalizza manualmente l'istanza per soddisfare le tue esigenze.

  8. Esegui il comando seguente per preparare l'istanza per la creazione di AMI.

    sudo /usr/local/sbin/ami_cleanup.sh
  9. Dalla console, scegli Instance state e Stop instance.

    Passa a Istanze, scegli la nuova istanza, seleziona Stato dell'istanza e Arresta istanza.

  10. Crea una nuova AMI dall'istanza utilizzando la console Amazon EC2 o AWS CLI create-image.

    Dalla console Amazon EC2
    1. Nel riquadro di navigazione scegliere Instances (Istanze).

    2. Scegli l'istanza che hai creato e modificato.

    3. In Azioni, scegli Immagine, quindi Crea immagine.

    4. Scegliere Create Image (Crea immagine).

  11. Inserisci il nuovo ID AMI nel CustomAmicampo della configurazione del cluster e crea un cluster.

Old Amazon EC2 console
  1. Trova l' AWS ParallelCluster AMI che corrisponde allo specifico Regione AWS che usi. Per trovarlo puoi usare il pcluster list-official-imagescomando con il --region parametro per selezionare i parametri specifici Regione AWS --os e --architecture i parametri da filtrare per l'AMI desiderata con il sistema operativo e l'architettura che desideri utilizzare. Dall'output puoi recuperare l'ID immagine di Amazon EC2.

  2. Accedi AWS Management Console e apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  3. Nel pannello di navigazione, scegli Immagini, quindi AMI. Imposta il filtro per le immagini pubbliche e cerca l'ID immagine EC2 recuperato, seleziona l'AMI e scegli Avvia.

  4. Scegli il tipo di istanza e seleziona Avanti: Configura i dettagli dell'istanza o Rivedi e avvia per avviare l'istanza.

  5. Scegli Launch, seleziona la tua coppia di chiavi e Launch Instances.

  6. Accedere a un'istanza utilizzando l'utente del sistema operativo e la chiave SSH. Per ulteriori informazioni, accedi a Istanze, seleziona la nuova istanza e Connect.

  7. Personalizza manualmente l'istanza per soddisfare le tue esigenze.

  8. Eseguire il comando seguente per preparare l'istanza per la creazione di AMI:

    sudo /usr/local/sbin/ami_cleanup.sh
  9. Dalla console Amazon EC2, scegli Istanze nel riquadro di navigazione, seleziona la tua nuova istanza e scegli Actions, Instance State e Stop.

  10. Crea una nuova AMI dall'istanza utilizzando la console Amazon EC2 o AWS CLI create-image.

    Dalla console Amazon EC2
    1. Nel riquadro di navigazione scegliere Instances (Istanze).

    2. Scegli l'istanza che hai creato e modificato.

    3. In Azioni, scegliete Immagine, quindi Crea immagine.

    4. Scegliere Create Image (Crea immagine).

  11. Inserisci il nuovo ID AMI nel CustomAmicampo della configurazione del cluster e crea un cluster.