自訂軟體安裝
Azure CycleCloud 範本可透過將基礎結構的實作細節抽象化來協助設定 HPC 叢集,以讓您專注於工作負載管理。 不過,該工作負載通常涉及軟體相關的一些相依性,需要額外的自訂步驟。 幸運的是,Azure CycleCloud 也提供了一個架構,可透過其對直接套用於叢集節點的佈建和設定管理工作的支援來實作這些步驟。
您的目標包括需要部署自訂映像,以及使用您在內部部署 HPC 環境中已使用的內部開發設定指令碼。 您想知道如何使用 Azure CycleCloud 功能來達成這些目標。
如何使用 Azure CycleCloud 來實作設定管理?
Azure CycleCloud 提供三種主要方法,可任意結合使用,以根據您自己的需求或喜好,自訂叢集節點上的作業系統和軟體:
- 自訂映像
- 專案
- 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 目錄裝載規格,以定義要套用至目標叢集節點的設定。
注意
例如,Slurm 專案至少包含兩個規格:一個用於排程器前端節點,而另一個用於計算節點。
在 specs 目錄中,有兩個子目錄,名為 cluster-init 和 custom Chef。 Cluster-init 包含在目標節點上自動執行的指令碼。 複製到目標節點的原始資料檔,以及在測試模式中啟動叢集時將執行的測試。 自訂 Chef 子目錄包含 Chef 特定的檔案,包括逐步指南、資料包和角色定義檔。 您可以使用 Chef cookbook 和 recipe 來設定節點。 Cluster-init 規格對應至 Chef 角色和逐步指南。
注意
Azure CycleCloud 使用 Chef 作為設定管理工具來準備和設定每個節點。 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 專案規格。