共用方式為


專案

項目是定義節點組態的資源集合。 專案包含規格。 當節點啟動時,它會處理並執行一連串的規格來設定節點。

Azure CycleCloud 使用專案來管理叢集應用程式,例如批次排程器。 在 CycleCloud HPCPack 叢集中,專案會使用 hncn 規格來定義 HPCPack 前端節點和計算節點的設定和配方。

在下列部分節點定義中,docker-registry 節點會執行三個規格: bind Okta 專案 1.3.0 版的規格,以及 core docker 專案 2.0.0 版的 和 registry 規格:

[[node docker-registry]]
    Locker = base-storage
    [[[cluster-init okta:bind:1.3.0]]]
    [[[cluster-init docker:core:2.0.0]]]
    [[[cluster-init docker:registry:2.0.0]]]

尾端標記是專案版本號碼:

[[[cluster-init <project>:<spec>:<project version>]]]

保險箱是儲存體帳戶容器和認證的參考。 節點有預設的保險箱,因此您不一定需要指定此屬性。

Azure CycleCloud 會針對儲存帳戶使用簡易代碼。 例如,您可以撰寫 https://mystorage.blob.core.windows.net/mycontaineraz://mystorage/mycontainer

如果您在節點上定義專案,但它不存在於預期的儲存位置,則節點會向 CycleCloud 報告 Software Installation Failure

CycleCloud 有內部專案,這些專案預設會在所有節點上執行,以進行特殊的磁碟區和網路處理,並設定與 CycleCloud 的通訊。 系統會自動將這些內部專案鏡像到保險箱。

您必須負責將任何額外的專案鏡像到保險箱。 CycleCloud CLI 提供撰寫專案的方法:

cyclecloud project init myproject

而且,將專案鏡像到保險箱:

cyclecloud project init mylocker

規格包含 Python、shell 腳本或 PowerShell 腳本。

建立新專案

若要建立新專案,請使用 CLI 命令 cyclecloud project init myproject ,其中 myproject 是您要建立的項目名稱。 myproject 有一個您可以變更的 default 規格。 命令會建立樹狀目錄,其中包含您以自己的資訊更新的基本架構檔案。

目錄結構

專案命令會建立下列目錄:

      myproject
          ├── project.ini
          ├── blobs
          ├── templates
          ├── specs
          │   ├── default
          │     └── cluster-init
          │        ├── scripts
          │        ├── files
          │        └── tests

範本目錄會保存您的叢集範本,而規格則包含定義項目的規格。 specs 目錄有一個名為 cluster-init 的子目錄(但另請參閱 Chef Orchestration)。 cluster-init 目錄包含具有特殊意義的目錄,包括 scripts 目錄 (其中包含在節點上以字典順序執行的 Script)、檔案 (其中包含節點上的原始資料檔案) 和 tests (其中包含當您在測試模式啟動叢集時執行的測試)。

project.ini

project.ini 是包含專案所有中繼資料的檔案。 其可以包含:

參數 說明
名稱 專案的名稱。 使用虛線分隔單字, 例如 order-66-2018
標籤 專案的名稱。 使用帶有空格的長叢集名稱來用於顯示目的。
型別 三個選項: schedulerapplication<blank>。 此參數會決定項目的類型,併產生適當的範本。 預設值:application
版本 格式:x.x.

保險箱

專案內容會儲存在保險箱內。 您可以執行 命令 cyclecloud project upload (locker),將專案的內容上傳至 CycleCloud 安裝中定義的任何保險箱,其中 (locker) 是 CycleCloud 安裝中的雲端儲存保險箱名稱。 此保險箱是預設目標。 或者,您可以執行 命令 cyclecloud locker list 來查看有哪些保險箱可供您使用。 您可以使用 cyclecloud locker show (locker) 來檢視特定保險箱的詳細資料。

如果您新增多個保險箱,可以使用 cyclecloud project default_target (locker) 來設定預設保險箱,然後執行 cyclecloud project upload。 您也可以執行 命令 cyclecloud project default locker (locker) -global來設定要共用之專案的全域預設保險箱。

備註

預設儲物櫃會儲存在 CycleCloud 組態檔中,位於 ~/.cycle/config.ini 中,而不是 project.ini 檔案。 此設定允許 project.ini的版本控制。

當您上傳專案內容時,CycleCloud 會將 cluster-init 內容同步至您的目標儲存區,其位於 projects/(project)/(version)/(spec_name)/cluster-init

Blob 下載

使用 project downloadproject.ini 中參考的所有 Blob 下載到本機 Blob 目錄。 此命令將使用 [locker] 參數,並嘗試將列於 project.ini 的 Blob 從儲存空間下載到本地存儲。 如果命令找不到檔案,則會傳回錯誤。

專案設定

規格

當您建立新的專案時,您會定義一個 default 規格。使用 cyclecloud project add_spec 命令將更多規格新增至您的專案。

版本控制

根據預設,所有項目都會使用1.0.0版。 在開發及部署項目時設定自訂版本,方法是在 version=x.y.z 檔案中設定

例如,如果locker_url為 az://my-account/my-container/projects,專案名稱為“Order66”,版本為1.6.9,規格為 default,則網址為:

az://my-account/my-container/projects/Order66/1.6.9/default

塊狀物

Blob 有兩種類型: 專案 Blob使用者 Blob

專案 Blob

專案作者提供專案資料塊,這些是可以分發的二進位檔案(例如,可合法重新分發的開放原始碼專案二進位檔案)。 專案數據塊會進入項目的 blobs 目錄,在您將它們上傳至保險箱時會被放置於 /project/blobs

若要將 Blob 新增至專案,請將檔案新增至您的 project.ini

[[blobs optionalname]]
  Files = projectblob1.tgz, projectblob2.tgz, projectblob3.tgz

以逗號分隔多個 Blob。 您也可以指定專案 Blob 目錄的相對路徑。

使用者 Blob

使用者 Blob 是二進位檔案,例如 Univa Grid Engine 二進位檔,專案作者無法合法地轉散布。 這些檔案不會與專案一起封裝。 用戶必須手動將它們放入儲物櫃。 這些檔案位於儲物櫃的 /blobs/my-project/ 中(例如, /blobs/my-project/my-blob.tgz)。 您不需要在 project.ini 中定義使用者 Blob。

若要下載任何 Blob,請使用命令 jetpack download 。 CycleCloud 會先尋找使用者 Blob,如果找不到檔案,則會使用專案層級 Blob。

備註

如果兩個 Blob 有相同的名稱,則使用者 Blob 可以覆寫專案 Blob。

在叢集範本內指定專案

規格是在您的叢集範本中定義,使用節點上的[[[cluster-init]]]區段

[[node defaults]]
[[[cluster-init my-project:common:1.0.0]]]

[[node scheduler]]
[[[cluster-init my-project:scheduler:1.0.0]]]

[[nodearray execute]]
[[[cluster-init my-project:execute:1.0.0]]]

此範例利用所有節點所共同繼承的defaults節點定義。 排程器節點會同時取得 commonscheduler 規格,而執行節點陣列中的節點會同時取得 commonexecute 規格。

檔案位置

節點會將 cluster-init 檔案下載至 /mnt/cluster-init/(project)/(spec)/。 針對 my-projectmy-spec,您的腳本、檔案和測試位於 /mnt/cluster-init/my-project/my-spec中。

同步專案

您可以將 CycleCloud 專案從鏡像同步到叢集本機雲端記憶體。 在範本內的 SourceLocker 區段上設定屬性 [cluster-init]。 您指定的保險箱名稱是專案的來源,而當叢集啟動時,內容會同步至您的保險箱。 您也可以使用保險箱的名稱作為 cluster-init 名稱的第一個部分。 例如,如果來源保險箱是 cyclecloud,則下列兩個定義會相同:

[cluster-init my-project:my-spect:1.2.3]
  SourceLocker=cyclecloud

[cluster-init cyclecloud/my-proect:my-spec:1.2.3]

大型檔案記憶體

專案支援大型檔案。 在新建立專案的最上層,您會看到 blobs 大型檔案的目錄 (Blob)。 您在此目錄中放置的 Blob 會提供特定用途,並採取與目錄內 files 專案不同的動作。

blobs目錄中的專案與規格和版本無關。 您可以在spec或專案版本之間共享 blob 中的任何內容。 例如,您可以將一個不常變更的程式的安裝程式儲存在 Blob 中,並在 您的project.ini 內參考它。 當您反覆運算專案版本時,該單一檔案會維持不變,並複製到您的雲端記憶體一次,這樣可節省傳輸和儲存成本。

若要新增一個 Blob,請將檔案放入blobs目錄中,然後編輯您的project.ini以引用該檔案:

[blobs]
  Files=big_file1.tgz

當您使用 project upload 命令時,會將 project.ini 中參考的所有 Blob 傳輸至雲端記憶體。

記錄檔

執行 cluster-init 時所產生的記錄檔位於 $JETPACK_HOME/logs/cluster-init/(project)/(spec)

執行檔案

當 cluster-init 腳本成功執行時,它會將檔案放在/mnt/cluster-init/.run/(project)/(spec)中,以確保腳本不會在後續收斂時再次執行。 若要再次執行文稿,請刪除此目錄中的適當檔案。

腳本目錄

當 CycleCloud 在scripts目錄中執行文稿時,它會將環境變數新增至specproject目錄的路徑和名稱中。

CYCLECLOUD_PROJECT_NAME
CYCLECLOUD_PROJECT_PATH
CYCLECLOUD_SPEC_NAME
CYCLECLOUD_SPEC_PATH

在 Linux 上,名為 test-project 且 具有 規格 default 的專案具有下列路徑:

CYCLECLOUD_PROJECT_NAME = test-project
CYCLECLOUD_PROJECT_PATH = /mnt/cluster-init/test-project
CYCLECLOUD_SPEC_NAME = default
CYCLECLOUD_SPEC_PATH = /mnt/cluster-init/test-project/default

僅執行指令碼

若要只執行 cluster-init 腳本,請使用下列命令:

jetpack converge --cluster-init

此命令會將其輸出傳送至 STDOUT,並傳送至 jetpack.log。 每個指令碼的輸出也會記錄到:

      $JETPACK_HOME/logs/cluster-init/(project)/(spec)/scripts/(script.sh).out

Jetpack 下載

若要在 cluster-init 腳本內下載 Blob,請使用 命令 jetpack download (filename)blobs 目錄提取 Blob。 從 cluster-init 腳本執行此命令可讓它自動判斷專案和基底 URL。 若要在非叢集初始化內容中使用它,您必須指定專案。 如需詳細資訊,請使用選項 --help