CycleCloud 支援 cloud-init 作為在 VM 上執行任何其他 CycleCloud 特定設定 之前 ,先在開機時設定虛擬機 (VM) 的方式。 在安裝任何由 CycleCloud (HPC 排程器) 管理的軟體之前,使用 cloud-init 是設定 VM 各個層面 (例如網路連接、yum/apt 鏡像等) 的有效方法。
下列範例示範如何在叢集範本中使用 `CloudInit` 屬性,指定要在開機時執行的 Bash 腳本:
[node scheduler]
CloudInit = '''#!/bin/bash
echo "cloud-init works" > /tmp/cloud-init.txt
'''
備註
在叢集範本中使用三引號字串來指定多行字串,例如bash或YAML腳本。
警告
並非 Azure 中的所有 OS 映像檔都支援 cloud-init。 如需哪些映像支援 cloud-init 以及更廣泛支援的時間表的詳細資訊,請參閱 Azure 中適用於虛擬機器的 cloud-init 支援。
使用 UI 設定 cloud-init
CycleCloud UI 支援 cloud-init 編輯。 當您建立或編輯任何叢集時,可以使用 [Cloud-Init ] 索引卷標來編輯叢集中每個節點的 cloud-init 腳本。 CycleCloud UI 中的編輯器接受任何文字輸入。 它提供 Python、Shell腳本或 YAML 的語法高亮顯示。

Cloud-init 排序和錯誤處理
針對具有 CloudInit 指定之 CycleCloud 節點,CycleCloud 會布建 VM,並等到 cloud-init 執行完成 ,再 啟動任何其他設定。 如果您在節點上指定 CloudInit ,但 CycleCloud 不會偵測 OS 的 cloud-init 支援,則節點會進入錯誤狀態,並將原因轉送至 CycleCloud。 CloudInit如果腳本無法執行(例如,由於腳本錯誤或語法錯誤),節點會進入錯誤狀態,並將 cloud-init 所回報的錯誤轉送至 CycleCloud。
Cloud-init 執行至完成且沒有任何錯誤后,CycleCloud 會繼續如往常設定 VM。
這很重要
CycleCloud 不會自動合併 cloud-init 腳本。 如果您在 [node defaults] 中指定 cloud-init 腳本,且具有繼承自這些預設值的節點,則 [node defaults] 中的 cloud-init 腳本會被覆寫。 若要共用程式代碼,建議您手動合併腳本。 或者,您也可以使用 include 檔案的 user-data 格式來包含 cloud-init 要處理的 URL 清單。