自訂軟體安裝

已完成

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。

範本目錄包含範本,而規格目錄會裝載用來定義要套用至目標叢集節點之組態的規格。

備註

例如,Slurm 專案至少包含兩個規格:一個用於排程器前端節點,另一個用於計算節點。

在規格目錄中,有兩個名為 cluster-init自定義 Chef 的子目錄。 Cluster-init 包含自動在目標節點上執行的腳本。 複製到目標節點的原始資料檔,以及在測試模式中啟動叢集時要執行的測試。 自訂 Chef 子目錄包含 Chef 特定的檔案,包括菜單(cookbook)、數據包(data bag)、和角色定義(role-definition)檔案。 您可以使用 Chef 模板和食譜來設定節點。 Cluster-init 規格對應至 Chef 角色和逐步指南。

備註

Azure CycleCloud 會使用 Chef 作為組態管理工具,以準備和設定每個節點。 CycleCloud 會以不依賴集中式 Chef 伺服器的獨立模式使用 Chef。 相反地,所有要部署到受管理的叢集節點的食譜會在作業系統啟動階段從儲存庫下載。 此時,Chef 會處理節點叢集 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 項目規格。