View a markdown version of this page

例: cloud-init ブートフックを使用して早期起動オペレーションを実行する - AWS PCS

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

例: cloud-init ブートフックを使用して早期起動オペレーションを実行する

このスクリプトを起動テンプレート"userData"の の値として指定します。詳細については、「AWS PCS の Amazon EC2 ユーザーデータの使用」を参照してください。

一部の設定は、起動シーケンスの先頭、PCS AWS ブートストラップの起動前、およびサービスがハードウェアを使用する前に実行する必要があります。一般的なケースは、NVIDIA マルチインスタンス GPU (MIG) モードの有効化など、プロセスが GPUs を保持している間は有効にできない GPU 設定コマンドや、GPU ECC モードの変更など、再起動が必要なオペレーションです。 AWS PCS ブートストラップはまだ開始されていないため、この段階での再起動は安全です。ノードライフサイクルアクションスクリプトなど、起動プロセスの後半で再起動しないでください。再起動すると、PCS AWS ブートストラップシーケンスが中断されます。詳細については、「PCS AWS でのノードライフサイクルアクションのベストプラクティス」を参照してください。

ブートフックを作成するには、コンテンツタイプのブロックtext/cloud-boothookをユーザーデータに追加します。ブロックにはスクリプト自体が含まれています。ブートフックは、ユーザーデータで利用可能な最も早いフックです。 は、ノードを登録する AWS PCS ユーザーデータブロックの前bootcmd、 などのcloud-configディレクティブの前に、ブロックを処理するとすぐにそれcloud-initを実行します。ブートフックはブートごとに実行されます。再起動自体がトリガーする可能性があるため、スクリプトはべき等である必要があります。まず現在の状態を確認し、すでに完了している作業をスキップします。詳細については「cloud-init ドキュメント」を参照してください。

次の例では、すべての GPUs で MIG モードを有効にし、起動のたびに MIG インスタンスを作成します。GPU クライアントがまだ開始されていないため、モードの変更はすぐに有効になり、再起動は必要ありません。

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" #!/bin/bash if ! nvidia-smi -i 0 -q | grep -A1 'MIG Mode' | grep -q 'Current.*Enabled'; then nvidia-smi -mig 1 fi if [ -z "$(nvidia-smi -L | grep MIG)" ]; then for i in 0 1 2 3 4 5 6 7; do nvidia-smi mig -i $i -cgi 9,14,19,19 -C done fi --==MYBOUNDARY==--

オペレーションで再起動が必要であることが出力された場合は、状態が変更された後に同じブートフックから再起動します。次の起動時にべき等性チェックで作業がすでに完了していることがわかったため、ノードは通常どおり PCS AWS ブートストラップに入ります。