カスタム AWS ParallelCluster AMI の構築 - AWS ParallelCluster

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

カスタム AWS ParallelCluster AMI の構築

AWS ParallelCluster コマンドラインインターフェイス (CLI) または API を使用する場合、AWS ParallelCluster イメージとクラスターを作成または更新するときに作成された AWS リソースに対してのみ支払いが発生します。詳細については、「AWS ParallelCluster で使用されるサービス AWS」を参照してください。

PCUI はサーバーレスアーキテクチャ上に構築されており、ほとんどの場合、AWS 無料利用枠内で利用できます。詳細については、「PCUI のコスト」を参照してください。

重要

カスタム AMI を構築した場合は、新しい AWS ParallelCluster のリリースごとに、カスタム AMI を作成したときの手順を繰り返す必要があります。

この先をお読みになる前に、まず「カスタムブートストラップアクション」のセクションを確認することをお勧めします。希望する変更がスクリプト化され、今後の AWS ParallelCluster リリースでサポートされるかどうかを確認してください。

一般にカスタム AMI の構築は理想的ではありませんが、AWS ParallelCluster 用のカスタム AMI の構築が必要となる特定のシナリオもあります。このチュートリアルでは、これらのシナリオに対応するカスタム AMI を構築する方法について説明します。

前提条件

AWS ParallelCluster AMI をカスタマイズする方法

カスタムの AWS ParallelCluster AMI を構築するには 2 つの方法があります。この 2 つの方法のうち、1 つは AWS ParallelCluster CLI を使って新しい AMI を構築する方法です。もう一つの方法では、手動で変更を加えて AWS アカウントで使用できる新しい AMI を構築する必要があります。

カスタム AWS ParallelCluster AMI を構築する

カスタマイズされた AMI とソフトウェアをお持ちの場合は、AWS ParallelCluster で必要な変更を適用することができます。AWS ParallelCluster は、カスタマイズされた AMI を構築するために、EC2 Image Builder サービスを利用しています。詳細については、「Image Builder User Guide」を参照してください。

キーポイント:

  • このプロセスには約 1 時間かかります。この時間は、ビルド時に追加で Build/Components をインストールする場合には変動します。

  • AMI には主なコンポーネントのバージョンがタグ付けされています。これらには、カーネル、スケジューラー、EFA ドライバーが含まれます。コンポーネントバージョンのサブセットも AMI の説明にレポートされます。

  • AWS ParallelCluster 3.0.0 以降では、CLI コマンドの新しいセットを使用して、イメージのライフサイクルを管理することができます。これには build-imagelist-imagesdescribe-image、および delete-image があります。

  • この方法は繰り返し実行可能です。再実行して AMI を最新の状態に保ち (OS の更新など)、既存のクラスターを更新するときに使用できます。

注記

AWS 中国パーティションでこの方法を使用すると、ネットワークエラーが発生することがあります。例えば、GitHub または OS リポジトリからパッケージをダウンロードする際に、pcluster build-image コマンドでこれらのエラーが表示される場合があります。このような場合には、次の代替方法のいずれかを使用することをお勧めします。

  1. このコマンドをバイパスする「AWS ParallelCluster AMI を変更する」アプローチに従ってください。

  2. イメージを別のパーティションおよびリージョン (us-east-1 など) でビルドし、保存/復元して中国リージョンに移動します。詳細については、「Amazon EC2 ユーザーガイド」の「S3 を使用して AMI を保存および復元する」を参照してください。

ステップ:

  1. AWS ParallelCluster がユーザーに代わって AWS API オペレーションを呼び出すことができるように、AWS アカウント の認証情報を設定します。必要なアクセス権限のリストについては、「AWS ParallelCluster の AWS Identity and Access Management アクセス許可」を参照してください。

  2. 基本的なビルドイメージ設定ファイルを作成します。これを行うには、イメージの構築に使用する InstanceType と、ParentImage を指定します。これらは AMI を作成するための開始点として使用されます。オプションのビルドパラメータの詳細については、「Image Configuration」を参照してください。

    Build: InstanceType: <BUILD_INSTANCE_TYPE> ParentImage: <BASE_AMI_ID>
  3. ベースとして提供した AMI から始めて AWS ParallelCluster AMI を構築するために CLI コマンド pcluster build-image を使用します。

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

    pcluster build-image はデフォルトの VPC を使用します。AWS Control Tower または AWS ランディングゾーンを使用してデフォルト VPC を削除する場合、サブネット ID をイメージ設定ファイルで指定する必要があります。詳細については、「SubnetId」を参照してください。

    その他のパラメータのリストについては、「pcluster build-image」 コマンドリファレンスページを参照してください。上記のコマンドの結果は次のとおりです。

    • イメージの構成に基づいて、CloudFormation スタックが作成されます。このスタックには、ビルドに必要なすべての EC2 Image Builder リソースが含まれています。

    • 作成されたリソースには、カスタム Image Builder コンポーネントを追加できる公式の Image Builder AWS ParallelCluster コンポーネントが含まれます。カスタムコンポーネントの作成方法については、「公共部門のお客様用ワークショップ向け HPC」の「Custom AMIs examples」を参照してください。

    • EC2 Image Builder は、ビルドインスタンスを起動し、AWS ParallelCluster クックブックを適用し、AWS ParallelCluster ソフトウェアスタックのインストール、および必要な設定タスクを実行します。AWS ParallelCluster クックブックは、AWS ParallelCluster のビルドとブートストラップに使用されます。

    • インスタンスが停止され、そこから新しい AMI が作成されます。

    • 新たに作成した AMI から別のインスタンスが起動します。テストフェーズでは、EC2 Image Builder は Image Builder コンポーネントで定義されたテストを実行します。

    • ビルドが成功すると、スタックは削除されます。ビルドに失敗した場合、スタックはインスペクション可能な状態で保持されます。

  4. 次のコマンドを実行すると、ビルドプロセスのステータスをモニタリングできます。ビルドが完了したら、ビルドを実行してレスポンスで指定された AMI ID を取得できます。

    $ 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. クラスターを作成するには、クラスター設定内の CustomAmi フィールドに AMI ID を入力します。

AMI 作成プロセスのトラブルシューティングとモニタリング

イメージの作成は約 1 時間で完了します。pcluster describe-image コマンドまたはログ検索コマンドを実行してプロセスをモニタリングできます。

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

build-image コマンドは、イメージの構築に必要なすべての Amazon EC2 リソースを含む CloudFormation スタックを作成し、EC2 Image Builder プロセスを起動します。

build-image コマンドを実行した後、pcluster get-image-stack-events を使用して CloudFormation スタックイベントを取得できます。--query パラメータで結果をフィルタリングして、最新のイベントを表示できます。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI の出力をフィルタリングする」を参照してください。

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

約 15 分後、Image Builder の作成に関連するログイベントエントリにスタックイベントが表示されます。pcluster list-image-log-streams コマンドや pcluster get-image-log-events コマンドを使用して、イメージログストリームの一覧表示および Image Builder のステップのモニタリングができるようになりました。

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

BUILD_COMPLETE のステータスが表示されるまで、describe-image コマンドで確認を続けます。

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

カスタム AMI 作成の問題をトラブルシューティングする必要がある場合は、次の手順で説明されているようにイメージログのアーカイブを作成します。

--output パラメータに応じて、ログを Amazon S3 バケットまたはローカルファイルにアーカイブすることが可能です。

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

このアーカイブには、Image Builder プロセスと AWS CloudFormation スタックイベントに関連する CloudWatch Logs Streams が含まれています。このコマンドの実行には数分かかることがあります。

カスタム AMI の管理

AWS ParallelCluster 3.0.0 からは、イメージのライフサイクルを構築、モニタリング、管理するための新しいコマンド群が CLI に追加されました。コマンドの詳細については、「pcluster commands」を参照してください。

AWS ParallelCluster AMI を変更する

この方法は、公式の AWS ParallelCluster AMI にカスタマイズを加えて変更するものです。基本 AWS ParallelCluster AMI は新しいリリースで更新されます。これらの AMI には、AWS ParallelCluster をインストールして設定する際に正常に機能するために必要なすべてのコンポーネントが含まれています。これらのいずれかをベースとして開始できます。

キーポイント:

  • この方法は、build-image コマンドよりも高速です。ただし、これは手動のプロセスであり、自動的に繰り返すことはできません。

  • この方法では、CLI で利用できるログ検索やイメージライフサイクル管理コマンドにはアクセスできません。

ステップ:

New Amazon EC2 console
  1. 使用する特定の AWS リージョンに対応する AMI を探します。これを見つけるには、pcluster list-official-images コマンドを使用して、--region パラメータで特定の AWS リージョンを選択し、--os および --architecture パラメータで使用するオペレーティングシステムとアーキテクチャを持つ AMI をフィルタリングします。出力から、Amazon EC2 イメージ ID を取得します。

  2. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  3. ナビゲーションペインで、[イメージ][AMI] の順に選択します。取得した EC2 イメージ ID を検索し、[AMI] を選択して、[AMI からインスタンスを起動] を選択します。

  4. 下にスクロールして、使用する [インスタンスタイプ] を選択します。

  5. 使用する [キーペア][インスタンスの作成] を選択します。

  6. OS ユーザーと SSH キーを使用してインスタンスにログインします。

  7. 要件に合わせてインスタンスを手動でカスタマイズします。

  8. 次のコマンドを実行して、インスタンスを AMI 作成用に準備します。

    sudo /usr/local/sbin/ami_cleanup.sh
  9. コンソールから [インスタンスの状態] および [インスタンスの停止] を選択します。

    [インスタンス] に移動して、新しいインスタンスを選択し、[インスタンスの状態][インスタンスの停止] の順に選択します。

  10. Amazon EC2 コンソールまたは AWS CLI の create-image を使用してインスタンスから新しい AMI を作成します。

    Amazon EC2 コンソールから
    1. ナビゲーションペインで、[Instances (インスタンス)] を選択します。

    2. 作成および変更したインスタンスを選択します。

    3. [アクション]で、[イメージ][イメージの作成] の順に選択します。

    4. [Create Image] を選択します。

  11. クラスター設定の CustomAmi フィールドに新しい AMI ID を入力して、クラスターを作成します。

Old Amazon EC2 console
  1. 使用する特定の AWS リージョンに対応する AWS ParallelCluster AMI を探します。これを見つけるには、pcluster list-official-images コマンドを使用して、--region パラメータで特定の AWS リージョン を選択し、--os および --architecture パラメータで使用するオペレーティングシステムとアーキテクチャを持つ AMI をフィルタリングします。出力から、Amazon EC2 イメージ ID を取得できます。

  2. AWS Management Console にサインインし、Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  3. ナビゲーションペインで、[イメージ][AMI] の順に選択します。[パブリックイメージ] のフィルターを設定し、取得した EC2 イメージ ID を検索し、AMI を選択して [起動] を選択します。

  4. インスタンスタイプを選択し、[次へ:インスタンスの詳細の設定] または [確認と作成] を選択してインスタンスを起動します。

  5. [起動] を選択し、[キーペア][インスタンスの作成] を選択します。

  6. OS ユーザーと SSH キーを使用してインスタンスにログインします。詳細については、[インスタンス] に移動し、新しいインスタンスを選択して [接続] を選択します。

  7. 要件を満たすようにインスタンスを手動でカスタマイズします。

  8. 次のコマンドを実行して、インスタンスを AMI 作成用に準備します。

    sudo /usr/local/sbin/ami_cleanup.sh
  9. Amazon EC2 コンソールから、ナビゲーションペインで [インスタンス] を選択し、新しいインスタンスを選択して [アクション][インスタンスの状態][停止] の順に選択します。

  10. Amazon EC2 コンソールまたは AWS CLI の create-image を使用してインスタンスから新しい AMI を作成します。

    Amazon EC2 コンソールから
    1. ナビゲーションペインで、[Instances (インスタンス)] を選択します。

    2. 作成および変更したインスタンスを選択します。

    3. [アクション] で、[イメージ][イメージの作成] の順に選択します。

    4. [Create Image] を選択します。

  11. クラスター設定内の CustomAmi フィールドに新しい AMI ID を入力して、クラスターを作成します。