練習 - 建立 cloud-init 指令碼在 Azure CycleCloud 中使用
佈建叢集的節點時,您可能要在作業系統開機過程中,在排程器驅動的任何變更生效之前,執行自訂的設定工作。 例如,這些工作可能包括更新路徑環境變數、設定網域名稱系統 (DNS) 名稱解析設定,或將節點繫結至 Microsoft Entra Domain Services (AD DS) 網域。
為了實作此功能,您決定探索在 Azure CycleCloud 叢集中使用 cloud-init,並使用一個簡單的 Bash 指令碼來測試它 (而該指令碼會修改每個節點上的本機檔案的內容)。 您想要連接到叢集節點並檢閱修改過的檔案內容,以驗證結果。
注意
撰寫 cloud-init 指令碼時,您可以使用目標節點上執行的作業系統可辨識及處理的任何指令碼或設定方法,包括傳統的殼層指令碼、Python 和 YAML。
在本教學課程中,您將執行下列工作:
- 工作 1:對 Azure CycleCloud 叢集節點設定以 SSH 為基礎的驗證
- 工作 2:將 cloud-init 指令碼新增至叢集節點
- 工作 3:確認排程器節點上的 cloud-init 功能
- 工作 4:確認計算節點上的 cloud-init 功能
- 工作 5:清理練習環境
注意
在開始本練習之前,請確定您已成功完成前一個練習。
工作 1:對 Azure CycleCloud 叢集節點設定以 SSH 為基礎的驗證
為了驗證 cloud-init 指令碼的執行,您將從 Azure Cloud Shell 中使用 Azure CycleCloud CLI 來連線到叢集節點。 此連線依賴於 SSH 金鑰型驗證,因此您必須將對應於散發至叢集節點的公開金鑰的私密金鑰上傳至 Azure Cloud Shell 主目錄。
瀏覽至 Azure 入口網站,並在出現提示時,使用您在本課程模組中使用的 Azure 訂用帳戶中具有「參與者」或「擁有者」角色的 Microsoft 帳戶或 Microsoft Entra 帳戶進行驗證。
從 Azure 入口網站中,在搜尋方塊旁的工具列中選取圖示來開啟 Cloud Shell,並確定您正在執行 Bash 工作階段。
在 Azure Cloud Shell 窗格中,選取該窗格工具列上的第四個圖示 (其中會顯示含有一對垂直箭號指向相反方向的頁面)。 然後,在下拉式功能表中,選取 [上傳]。
在 [開啟] 對話方塊中,瀏覽至內含私密金鑰的 .pem 檔案所在的位置,然後選取 [開啟]。
在 Cloud Shell 中執行下列命令,以將上傳的 .pem 檔案移至正確的位置,並設定必要的檔案層級權限 (將
<private_key.pem>
預留位置取代為 .pem 檔案的名稱):mkdir -p ~/.ssh mv private_key.pem ~/.ssh chmod 600 ~/.ssh/cc-ssh-keys.pem
工作 2:將 cloud-init 指令碼新增至叢集節點
在 Azure CycleCloud 圖形化介面中,直接就有選項可將指令碼新增至叢集節點。 您將用它來將相同的 cloud-init 指令碼指派給排程器和計算節點,並確認其功能。 此指令碼會將項目 10.10.10.10 cc.contoso.com 新增至 /etc/hosts 檔案。
如果您尚未連線到 Azure CycleCloud Web 應用程式,請開啟另一個瀏覽器視窗,並瀏覽至 https://<IP_address> URL。 如果出現提示,請確認您要繼續進行。
如果提示您進行驗證,請提供您的 Azure CycleCloud 應用程式使用者帳戶 (具備管理員角色) 的認證來登入。
在 Azure CycleCloud 圖形化介面中,瀏覽至 [叢集] 頁面。 在叢集清單中,選取 [contoso-custom-slurm-lab-cluster] 項目,然後再選取 [編輯]。
在 [編輯 contoso-custom-slurm-lab-cluster] 快顯視窗中,選取 [Cloud-init] 項目,然後在 [Cloud-init 設定] 區段的 [排程器] 索引標籤上,輸入下列指令碼:
#!/bin/bash echo "10.10.10.10 www.contoso.com" >> /etc/hosts
在相同的快顯視窗中,選取 [Cloud-init] 項目後,選取其餘的每個索引標籤 (包括 [cuda]、[hpc] 和 [htc]),然後輸入相同的指令碼。 選取 [儲存]。
工作 3:確認排程器節點上的 cloud-init 功能
為了確認排程器節點上的 cloud-init 功能,您將啟動叢集。 這將會觸發佈建排程器節點。 節點執行之後,您將能夠從 Azure Cloud Shell 連線到該節點,並確認 /etc/hosts 檔案包含項目 10.10.10.10 www.contoso.com。
在顯示 Azure CycleCloud Web 應用程式的瀏覽器視窗中,選取 [contoso-custom-slurm-lab-cluster] 頁面上的 [啟動] 連結。 提示您確認時,請選取 [確定]。
注意
如果叢集已在執行中,您必須終止它然後再重新啟動,才能套用更新的設定,否則後續步驟中不會顯示該設定。
在節點清單中,選取 [排程器] 項目,並在 [詳細資料] 窗格上監視其狀態,等待它從 [取得中] 變成 [就緒]。
注意
這可能需要大約三分鐘的時間。
在 [詳細資料] 窗格上,選取 [連線]。 在 [連線到節點:排程器] 快顯視窗的 [使用 CycleCloud CLI] 區段中,選取可讓您連線到排程器節點的命令項目,然後選取 [關閉]:
注意
命令的格式應為
cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster
使用 Cloud Shell 窗格切換至網頁瀏覽器視窗,並執行您在上一個步驟中複製的命令。
注意
此命令應該會產生下列格式的輸出:
m@Azure:~$ cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@40.87.52.25 (contoso-custom-slurm-lab-cluster scheduler) using SSH [cc-admin@ip-0A000304 ~]$
連線到排程器節點後,執行下列命令來確認 /etc/hosts 檔案包含項目 10.10.10.10 www.contoso.com:
grep "10.10.10.10 www.contoso.com" /etc/hosts
注意
此命令應該會產生下列格式的輸出:
[cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts 10.10.10.10 www.contoso.com
工作 4:確認計算節點上的 cloud-init 功能
現在,您將重複同等的步驟序列以確認計算節點上的 cloud-init 功能。
重要
您必須先移除並重新配置對應的虛擬機器擴展集,才能套用同等的程序來確認計算節點上的 cloud-init 功能。 此步驟專屬於以 Slurm 為基礎的叢集,因為在這種情況下,排程器自動調整整合需要 Azure CycleCloud 預先填入計算節點。 因此,您先前在本練習中套用的 cloud-init 設定不會影響現有的節點。
連線到排程器節點時,請在 Cloud Shell 中執行下列命令,以移除並重新配置 Azure CycleCloud 叢集中的計算節點,然後終止與排程器節點的連線:
sudo -i cd /opt/cycle/jetpack/system/bootstrap/slurm ./cyclecloud_slurm.sh remove_nodes ./cyclecloud_slurm.sh scale exit exit
注意
此步驟完成後,您將會看到訊息指出 [正在嘗試移除下列節點],接著會出現 [重新調整叢集完成]。
在您的電腦上,切換至網頁瀏覽器視窗,其中顯示 Azure CycleCloud Web 應用程式的 [contoso-custom-slurm-lab-cluster] 頁面。 在 [節點] 索引標籤上選取 [htc] 列,並在 [詳細資料] 窗格上選取 [htc-1] 項目,然後再選取 [動作] 索引標籤標頭。 在下拉式功能表中,選取 [啟動],然後在提示確認時選取 [確定]。
在 [詳細資料] 窗格上,監視剛啟動的節點並等待其狀態從 [取得中] 變成 [就緒]。
注意
這可能需要大約三分鐘的時間。
在 [詳細資料] 窗格上,選取 [連線]。 在 [連線到節點: htc-1] 快顯視窗中,選取 [使用 CycleCloud CLI] 區段 (其中包含可讓您連線到排程器節點的命令) 中的項目,然後選取 [關閉] :
注意
命令的格式應為
cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster
。切換至 Cloud Shell 窗格,並執行您在上一個步驟中複製的命令。
注意
此命令應該會產生下列格式的輸出:
m@Azure:~$ cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@10.0.3.5 (contoso-custom-slurm-lab-cluster htc-1) through SSH bastion at cc-admin@40.87.52.25 [cc-admin@ip-0A000305 ~]$
連線到 htc-1 節點後,執行下列命令以確認 /etc/hosts 檔案包含項目 10.10.10.10 www.contoso.com:
cat /etc/hosts | grep "10.10.10.10 www.contoso.com"
注意
一旦達到這一點,您應該刪除您在本課程模組的這個練習及先前練習中所部署的所有資源。 這可讓您避免針對您的 Azure 訂用帳戶維護這些資源所產生的相關費用。
工作 5:清理實驗室環境
使用 Azure CycleCloud 應用程式來自訂叢集已完成測試。 為了避免因為使用 Azure 資源而產生不必要的成本,您現在將終止叢集,並移除您在本課程模組的所有練習中佈建的所有資源。
在顯示 Azure CycleCloud Web 應用程式的圖形化介面的網頁瀏覽器中,選取 [contoso-custom-slurm-lab-cluster] 頁面上的 [終止] 連結,然後在提示確認時選取 [確定]。
監視終止流程。
注意
此流程涉及取消佈建充當叢集前端節點的 Azure VM。 這大約需要五分鐘的時間。
注意
為了刪除您在此實驗室佈建的所有其他資源,您將刪除裝載叢集資源的資源群組。
在 Azure 入口網站中,瀏覽至裝載叢集資源的資源群組所在的窗格,然後在工具列中選取 [刪除資源群組] 項目。 在 [輸入資源群組名稱以確認刪除] 文字方塊中,輸入資源群組的名稱並選取 [刪除]。 再次選取 [刪除] 以確認刪除。
注意
可能還有與您的 Slurm 資源相關聯的其他資源群組。 為了避免額外的費用,請確保刪除所有這些與 Slurm 相關的資源群組及其資源。
恭喜! 您已成功完成本課程模組的第三個和最後一個練習。 在本練習中,您探索了在 Azure CycleCloud 叢集中使用 cloud-init,並使用簡單的 Bash 指令碼,修改每個節點上的本機檔案內容,做個測試。 您連線到叢集節點並檢閱修改過的檔案內容,以驗證結果。 之後,您終止叢集並刪除您在本課程模組中使用的所有叢集資源,以避免任何不必要的成本。