クラスターの作成後にソフトウェアをインストールしたり、ソフトウェア環境をデプロイしたりする必要がある場合は、インストール スクリプトを設定できます。クラスター内のすべてのノードが起動し、選択したすべてのソフトウェアが自動的にインストールされると、インストール スクリプトが自動的にダウンロードされて実行されます。このトピックでは、インストール スクリプトのパラメーターを設定する方法について説明します。
シナリオ
パブリック イメージに基づいてクラスターを作成した後、ソフトウェアをインストールするか、ソフトウェア環境をデプロイする必要があります。
カスタム イメージに基づいてクラスターを作成した後、カスタム スクリプトを実行してソフトウェア環境をデプロイする必要があります。
背景情報
インストール スクリプトを設定するには、[クラスターの作成] ページの [ソフトウェア設定] ステップの [詳細設定] セクションに移動します。インストール スクリプトは、Bash や Python など、Linux シェルでサポートされている言語で記述する必要があります。スクリプトの最初の行には、実行時に呼び出されるコマンドを示す注釈を付ける必要があります。たとえば、bash スクリプトの最初の行は #!/bin/bash です。
例
次のサンプル スクリプトは、クラスター環境変数、クラスター メタデータ、およびノード ロールを /root ディレクトリのログ ファイルに出力します。インストール スクリプトをダウンロードするには、サンプル インストール スクリプト をクリックします。
#!/bin/bash
echo "call $0 with param: $@" | tee /root/command.log
## show all available environment variables // 利用可能なすべての環境変数を表示する
printenv | tee /root/env.log
## Cluster meta data // クラスターメタデータ
echo "ClusterId: ${ClusterId}, HOSTNAME: ${HOSTNAME}" | tee /root/cluster.log
echo "AccountType: ${AccountType}, SchedulerType: ${SchedulerType}" | tee -a /root/cluster.log
## Role of current machine // 現在のマシンのロール
echo "${Role}" | tee /root/role.log
if [ "${isLoginNode}" == "true" ]; then
## Do your work on login node // ログインノードで作業を行う
echo "This is login node" | tee -a /root/role.log
exit $?
fi
if [ "${isAccountManager}" == "true" ]; then
## Do your work on NIS/LDAP master // NIS/LDAP マスターで作業を行う
echo "This is account manager" | tee -a /root/role.log
exit $?
fi
if [ "${isResourceManager}" == "true" ]; then
## Do your work on Slurm/PBS master // Slurm/PBS マスターで作業を行う
echo "This is scheduler" | tee -a /root/role.log
exit $?
fi
if [ "${isComputeNode}" == "true" ]; then
## Do your work with on compute node // コンピュートノードで作業を行う
echo "This is compute node" | tee -a /root/role.log
exit $?
fi環境変数
デフォルトでは、インストール スクリプトはクラスターのすべてのノードで実行されます。環境変数を設定することで、さまざまなタイプのノードで実行される操作を指定できます。次の表に、使用可能な環境変数を示します。
変数 | 例 | 説明 |
ClusterId | ehpc-hz-AQoy7J**** | クラスターの ID。 |
HOSTNAME | i-bp133vs16yb3kqdj**** | ホストの名前。 |
AccountType | NIS | ドメイン アカウントのタイプ。有効な値:
|
SchedulerType | PBS | スケジューラのタイプ。有効な値:
|
Role | AccountManager | Role 変数には、単一のロール名を指定できます。 Role 変数には、コンマ (,) で区切られた複数のロール名を指定して、単一のノードに複数のロールがあることを示すこともできます。有効な値:
|
ResourceManagerIp | 192.168.**.** | プライマリ スケジューリング ノードのプライベート IP アドレス。 |
ResourceManagerHost | scheduler000 | プライマリ スケジューリング ノードのホスト名。 |
AccountManagerIp | 192.168.**.** | プライマリ ドメイン アカウントの管理ノードのプライベート IP アドレス。 |
AccountManagerHost | account000 | プライマリ ドメイン アカウントの管理ノードのホスト名。 |
ResourceManagerBackupIp | 192.168.**.** | セカンダリ スケジューリング ノードのプライベート IP アドレス (高可用性が有効)。 |
ResourceManagerBackupHost | scheduler001 | セカンダリ スケジューリング ノードのホスト名 (高可用性が有効)。 |
AccountManagerBackupIp | 192.168.**.** | セカンダリ ドメイン アカウントの管理ノードのプライベート IP アドレス (高可用性が有効)。 |
AccountManagerBackupHost | account001 | セカンダリ ドメイン アカウントの管理ノードのホスト名 (高可用性が有効)。 |
isLoginNode | true | ノードがログオン ノードかどうかを指定します。有効な値:
|
isAccountManager | true | サーバーがプライマリ ドメイン サーバーかどうかを指定します。有効な値:
|
isResourceManager | true | スケジューラがプライマリ スケジューラかどうかを指定します。有効な値:
|
isAccountManagerBackup | true | サーバーがセカンダリ ドメイン サーバーかどうかを指定します。有効な値:
|
isResourceManagerBackup | true | スケジューラがセカンダリ スケジューラかどうかを指定します。有効な値:
|
isComputeNode | true | ノードがコンピュート ノードかどうかを指定します。有効な値:
|
例外
クラスターの作成時に例外が発生する場合があります。次の例外がよく発生します。
クラスターの作成中に例外が発生し、クラスターの作成に失敗した場合、インストール スクリプトは実行されません。
作成されたクラスターの単一のコンピュート ノードが想定どおりに実行されていない場合、インストール スクリプトはそのノードでは実行されません。
クラスターの作成後、インストール スクリプトの最後に 0 以外の終了コードが返された場合、スクリプトの実行は失敗します。 E-HPC コンソールの [操作ログ] ページでアラート情報を確認できます。 詳細については、クラスターにログオンし、失敗したノードの /root ディレクトリにあるログ ファイルを確認してください。