翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
カスタムブートストラップアクション
/CustomActions/ OnNodeStart構成設定を定義するHeadNodeと、 はノードの起動直後に任意のコード AWS ParallelCluster を実行します。HeadNode /CustomActions/ OnNodeConfigured構成設定を定義すると、ノード構成が正しく完了した後に がコード AWS ParallelCluster を実行します。
AWS ParallelCluster バージョン 3.4.0 以降では、// HeadNode CustomActionsOnNodeUpdated構成設定を定義すると、ヘッドノードの更新後にコードを実行できます。
通常、このコードは Amazon Simple Storage Service (Amazon S3) に保存され、HTTPS 接続でアクセスされます。コードは root
として実行され、クラスターのオペレーティングシステムでサポートされている任意のスクリプト言語で実行できます。多くの場合、コードは Bash か Python で書かれています。
注記
AWS ParallelCluster バージョン 3.7.0 以降、クラスターImds/ImdsSupport設定のデフォルトは ですv2.0
。
新しいクラスターを作成してバージョン 3.7.0 以降のバージョンにアップグレードする場合は、カスタムブートストラップアクションスクリプトを IMDSv2 と互換性があるように更新するか、クラスター設定ファイルで Imds/ImdsSupport を v1.0
に設定してください。
警告
責任共有モデル
警告
AWS ParallelCluster は、 /etc/parallelcluster/cfnconfig
ファイルを通じて提供される内部変数の使用をサポートしていません。このファイルは将来のリリースの一部として削除される可能性があります。
OnNodeStart
アクションは、NAT、Amazon Elastic Block Store (Amazon EBS)、スケジューラの設定など、ノードデプロイのブートストラップアクションが開始される前に呼び出されます。OnNodeStart
のブートストラップアクションには、ストレージの変更、その他のユーザーの追加、パッケージの追加などがあります。
注記
クラスターに DirectoryServiceと HeadNode // CustomActions OnNodeStartスクリプトを設定するDirectoryService
と、 はOnNodeStart
スクリプトを実行する前に sssd
AWS ParallelCluster を設定して再起動します。
OnNodeConfigured
アクションは、ノードのブートストラップ・プロセスが完了した後に呼び出されます。OnNodeConfigured
アクションは、インスタンスが完全に構成され、完了したとみなされる前の最後のアクションです。一般的な OnNodeConfigured
のアクションには、スケジューラ設定の変更、ストレージやパッケージの変更などがあります。設定時に引数を指定することで、スクリプトに引数を渡すことができます。
ヘッドノードの更新が完了し、スケジューラーと共有ストレージが最新のクラスター設定変更に対応するようになった後、OnNodeUpdated
アクションが呼び出されます。
OnNodeStart
または OnNodeConfigured
カスタムアクションが成功すると、終了コード 0 で成功が示されます。それ以外の終了コードは、インスタンスのブートストラップが失敗したことを示します。
OnNodeUpdated
カスタムアクションが成功すると、終了コード 0 で成功が通知されます。それ以外の終了コードは、失敗したことを示します。
注記
OnNodeUpdated を設定した場合、更新が失敗したときに OnNodeUpdated
アクションを以前の状態に手動で復元する必要があります。
OnNodeUpdated
カスタムアクションが失敗した場合、更新は以前の状態にロールバックします。ただし、OnNodeUpdated
アクションは更新時にのみ実行され、スタックのロールバック時には実行されません。
HeadNode/CustomActions および Scheduling/SlurmQueues/CustomActions の設定セクションでは、ヘッドノードとキューごとに異なるスクリプトを指定できます。OnNodeUpdated は、HeadNode
セクションでのみ設定できます。
注記
AWS ParallelCluster バージョン 3.0 以前は、ヘッドノードとコンピューティングノードに異なるスクリプトを指定できませんでした。「AWS ParallelCluster 2.x から 3.x への移行」を参照してください。
構成
次の設定は、HeadNode/CustomActions/OnNodeStart & OnNodeConfigured & OnNodeUpdated および Scheduling/CustomActions/OnNodeStart & OnNodeConfigured アクションと引数を定義するために使用されます。
HeadNode: [...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://
bucket-name
/on-node-start.sh
Args: - arg1 OnNodeConfigured: # Script URL. This is run after all the bootstrap scripts are run Script: s3://bucket-name
/on-node-configured.sh
Args: - arg1 OnNodeUpdated: # Script URL. This is run after the head node update is completed. Script: s3://bucket-name
/on-node-updated.sh
Args: - arg1 # Bucket permissions Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: Script: s3://bucket-name
/on-node-start.sh
Args: - arg1 OnNodeConfigured: Script: s3://bucket-name
/on-node-configured.sh
Args: - arg1 Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
Sequence
設定 ( AWS ParallelCluster バージョン 3.6.0 で追加) の使用:
HeadNode: [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script: s3://
bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run. Sequence: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] OnNodeUpdated: # Script URLs. The scripts are run in the same order as listed in the configuration, after the head node update is completed. Sequence: - Script: s3://bucket-name
/on-node-updated1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-updated2.sh
Args: - arg1 [...] # Bucket permissions Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run Sequence: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run Sequence: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
AWS ParallelCluster バージョン 3.6.0 以降、 Sequence
設定が追加されました。を指定するとSequence
、カスタム action. AWS ParallelCluster continues の複数のスクリプトを一覧表示して、 を含めずに 1 つのスクリプトでカスタムアクションの設定をサポートできますSequence
。
AWS ParallelCluster は、同じカスタムアクションSequence
に対して 1 つのスクリプトと の両方を含めることをサポートしていません。例えば、次の設定を指定すると AWS ParallelCluster 失敗します。
[...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://
bucket-name
/on-node-start.sh
Args: - arg1 # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...]
引数
注記
AWS ParallelCluster 2.x では、$1
引数はカスタムスクリプトの URL を保存するための予約済み引数でした。3.x で AWS ParallelCluster 2.x 用に作成されたカスタムブートストラップスクリプトを再利用する場合は AWS ParallelCluster 、引数のシフトを考慮して調整する必要があります。「AWS ParallelCluster 2.x から 3.x への移行」を参照してください。
カスタムブートストラップアクションを使用したクラスターの例
次の手順では、ノードの設定後に実行される簡単なスクリプトを作成し、クラスターのノードに R,
curl
および wget
パッケージをインストールします。
-
[Create a script].(スクリプトを作成します)。
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
Amazon S3 に正しいアクセス許可でスクリプトをアップロードしてください。パブリック読み取りアクセス許可が適切でない場合は、HeadNode/Iam/S3Access および Scheduling/SlurmQueues の設定セクションを使用してください。詳細については、「Amazon S3 での使用」を参照してください。
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>
/myscript.sh
重要
スクリプトが Windows で編集された場合、スクリプトを Amazon S3 にアップロードする前に、行末を CRLF から LF に変更する必要があります。
-
新しい
OnNodeConfigured
アクションを含めるように AWS ParallelCluster 設定を更新します。CustomActions: OnNodeConfigured: Script: https://
<bucket-name>
.s3.<region>
.amazonaws.com/myscript.sh
Args: - "R" - "curl" - "wget"バケットにパブリック読み取りのアクセス許可がない場合は、URL プロトコルとして
s3
を使用します。CustomActions: OnNodeConfigured: Script: s3://
<bucket-name>
/myscript.sh
Args: - "R" - "curl" - "wget" -
クラスターを起動します。
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
出力の検証
-
HeadNode
設定にカスタムアクションを追加した場合は、ヘッドノードにログインし、以下のコマンドを実行して/var/log/cfn-init.log
にあるcfn-init.log
ファイルを確認します。$ less /var/log/cfn-init.log 2021-09-03 10:43:54,588 [DEBUG] Command run postinstall output: The script has 3 arguments 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
-
SlurmQueues
設定にカスタムアクションを追加した場合は、コンピューティングノードの/var/log/cloud-init.log
にあるcloud-init.log
を確認します。これらのログを表示するには CloudWatch 、 を使用します。
Amazon CloudWatch コンソールでこれらのログの両方を表示できます。詳細については、「Amazon CloudWatch Logs との統合」を参照してください。
-
IMDSv2 用のカスタムブートストラップスクリプトの更新例
次の例では、IMDSv1 で使用されていたカスタムブートストラップアクションスクリプトを IMDSv2 で使用できるように更新します。IMDSv1 スクリプトは、Amazon EC2 インスタンスの AMI ID メタデータを取得します。
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
以下は、IMDSv2 と互換性があるように変更されたカスタムブートストラップアクションスクリプトを示しています。
#!/bin/bash AMI_ID=$(TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスメタデータを取得する」を参照してください。
IMDSv1 の設定を更新する例
AWS ParallelCluster バージョン 3.7.0 以前を使用する場合に IMDSv1 をサポートするクラスター設定の例を次に示します。
Region:
us-east-1
Imds: ImdsSupport: v1.0 Image: Os:alinux2
HeadNode: InstanceType:t2.micro
Networking: SubnetId:subnet-abcdef01234567890
Ssh KeyName:key-name
CustomActions: OnNodeConfigured: Script:Script-path
Scheduling: Scheduler: slurm SlurmQueues: - Name:queue1
CustomActions: OnNodeConfigured: Script:Script-path
ComputeResources: - Name:t2micro
Instances: - InstanceType:t2.micro
MinCount:1
1 Networking: SubnetIds: -subnet-abcdef01234567890