ソフトウェアのインストールをカスタマイズする

完了

Azure CycleCloud テンプレートを使用すると、基になるインフラストラクチャの実装の詳細が抽象化されて、HPC クラスターのセットアップが容易になり、ワークロードの管理に専念することができます。 ただし、通常、そのワークロードにはソフトウェア関連の依存関係がいくつかあり、追加のカスタマイズ手順が必要になります。 幸い、Azure CycleCloud には、クラスター ノードに直接適用されるプロビジョニングと構成の管理タスクをサポートすることで、これらの手順を実装するためのフレームワークが用意されています。

あなたの目標の 1 つとして、カスタム イメージをデプロイし、オンプレミスの HPC 環境で使用している社内で開発した構成スクリプトを使用する必要があります。 これらの目標を達成するための Azure CycleCloud の機能の使用方法を確認することにします。

Azure CycleCloud で構成管理を実装する方法

Azure CycleCloud で提供されている 3 つの主要な方法を自由に組み合わせることで、独自の要件や好みに応じて、クラスター ノード上のオペレーティング システムとソフトウェアをカスタマイズできます。

  • カスタム イメージ
  • プロジェクト
  • cloud-init

Azure CycleCloud でカスタム イメージを使用する方法

Azure CycleCloud では、ほとんどの一般的な Linux ディストリビューションが実行されているクラスター ノードと、スケジューラによっては Windows Server が実行されているノードが、サポートされています。 組み込みのテンプレートは推奨される既定値で事前に構成されていますが、Azure Marketplace のイメージを選択したり、カスタム イメージに基づいてノードをプロビジョニングしたりすることは自由です。 HPC ワークロードのオペレーティング システムや他の依存関係のデプロイ後の設定に関連する遅延を最小限に抑えたい場合は、後者のオプションの方が適している可能性があります。 また、ビジネス、セキュリティ、またはコンプライアンスのニーズを満たすために、それが必要な場合もあります。

カスタム イメージを使うと、プレインストールされるソフトウェアと、オペレーティング システムの初期構成を、完全に制御できます。 主な欠点は、アプリケーションとそのバージョンのさまざまな組み合わせに対応するために複数のイメージを保持することに伴うオーバーヘッドです (特に開発シナリオで)。

ソフトウェアのインストールに Azure CycleCloud プロジェクトを使用する方法

Azure CycleCloud プロジェクトは、テンプレートを使用してクラスター ノードの構成を定義するときに参照するファイルのコレクションです。 プロジェクトのディレクトリ構造は次のとおりです。

\project
      |- project.ini
      |- blobs
      |- templates
      |- specs
      |      | 
      |    default
      |      |- cluster-init
      |            |- scripts
      |            |- files
      |            |- tests
      |      | - chef
      |            |- site-cookbooks
      |            |- data_bag
      |            |- roles

project.ini ファイルには、プロジェクトのメタデータ (名前、ラベル、バージョン、種類など) が含まれています。 サポートされている種類は、スケジューラとアプリケーションです。 前者はヘッド ノードとコンピューティング ノードのスケジューラ デーモンをインストールおよび初期化するために使われ、後者ではクラスターのワークロードが定義されます。

blobs ディレクトリには、自由に再配布できるオープンソース プロジェクト用のバイナリ ファイルなどのプロジェクト BLOB と、ライセンスの制約のためにプロジェクトの再配布から除外する必要があるユーザー BLOB が含まれています。

templates ディレクトリにはテンプレートが含まれており、specs ディレクトリでは、ターゲット クラスター ノードに適用する構成を定義する仕様がホストされています。

Note

たとえば、Slurm プロジェクトには、少なくとも 2 つの仕様 (1 つはスケジューラ ヘッド ノード用、もう 1 つはコンピューティング ノード用) が含まれています。

specs ディレクトリ内には、cluster-initcustom Chef という名前の 2 つのサブディレクトリがあります。 cluster-init には、ターゲット ノード上で自動的に実行されるスクリプトが含まれています。 ターゲット ノードにコピーされる生データ ファイル、クラスターがテスト モードで開始されるときに実行されるテスト。 カスタム Chef サブディレクトリには、クックブック、データ バッグ、ロールの定義ファイルなど、Chef 固有のファイルが含まれています。 Chef のクックブックとレシピは、ノードの構成に使用できます。 cluster-init の仕様は、Chef のロールとクックブックに対応します。

Note

Chef は、各ノードの準備と構成を行うための構成管理ツールとして Azure CycleCloud により使われます。 CycleCloud では、集中型 Chef サーバーに依存しないスタンドアロン モードで Chef が使われます。 代わりに、管理対象のクラスター ノード用のすべてのクックブックは、オペレーティング システムの起動フェーズの間に、ロッカーからダウンロードされます。 その時点で、Chef によってノードの cluster-init 仕様で定義されているレシピのリストが処理され、基になる VM が動作する HPC ノードに効率的に変換されます。

プロジェクトに基づいてクラスターをプロビジョニングするには、プロジェクトの内容を Azure CycleCloud ロッカーにアップロードする必要があります。 その後は、ターゲット ノードが起動されるたびに、必要なプロジェクト ファイルが自動的にロッカーからダウンロードされて、必要な仕様が処理されます。

Azure CycleCloud で cloud-init を使用する方法

Azure CycleCloud では、プロジェクト関連の仕様を適用する前の起動フェーズの間にクラスター ノードを構成する手段として、cloud-init がサポートされています。 これにより、ネットワーク設定の構成やオペレーティング システム パッケージの更新プログラムの適用など、インフラストラクチャまたはソフトウェアに関連する依存関係に対処するための便利な方法が提供されます。

cloud-init の構成の定義はテンプレートを使用してできますが、Azure CycleCloud のグラフィカル インターフェイスから直接行うこともできます。 クラスターを作成または編集するときの関連する設定は [Cloud-Init] というタブにあり、そこで各ノード種類用のスクリプトを入力できます。

注意

cloud-init は CycleCloud プロジェクトの仕様の前に実行されるため、Azure CycleCloud でノードに適用されるスケジューラと構成により、cloud-init によって行われた変更が上書きされる可能性があります。 スケジューラがインストールされた後でコマンドが実行されるようにする必要がある場合は、代わりに Azure CycleCloud プロジェクトの仕様を使用する必要があります。