練習 - 建立 cloud-init 指令碼在 Azure CycleCloud 中使用

已完成

佈建叢集的節點時,您可能要在作業系統開機過程中,在排程器驅動的任何變更生效之前,執行自訂的設定工作。 例如,這些工作可能包括更新路徑環境變數、設定功能變數名稱系統 (DNS) 名稱解析設定,或將節點系結至 Microsoft Entra Domain Services (AD DS) 網域。

若要實作這項功能,您決定探索在 Azure CycleCloud 叢集中使用 cloud-init,並使用簡單的 Bash 腳本來測試它,以修改每個節點上本機檔案的內容。 您想要連線到叢集節點並檢閱已修改檔案的內容,以驗證結果。

備註

撰寫 cloud-init 腳本時,您可以使用任何在目標節點上執行的作業系統可以辨識和處理的腳本或配置方法,包括傳統的殼層腳本、Python 和 YAML。

在本教學課程中,您將執行下列工作:

  • 工作 1:設定以 SSH 為基礎的驗證至 Azure CycleCloud 叢集節點
  • 工作 2:將 cloud-init 腳本新增至叢集節點
  • 工作 3:在排程器節點上確認 cloud-init 的功能
  • 工作 4:確認計算節點上的 cloud-init 功能
  • 工作 5:清除練習環境

備註

在開始本練習之前,請確定您已成功完成前一個練習。

工作 1:設定以 SSH 為基礎的驗證至 Azure CycleCloud 叢集節點

若要驗證 cloud-init 腳本的執行,您將從 Azure Cloud Shell 使用 Azure CycleCloud CLI 連線到叢集節點。 此連線依賴 SSH 金鑰型驗證,因此您必須將對應至散發至叢集節點之公鑰的私鑰上傳至 Azure Cloud Shell 主目錄。

  1. 流覽至 Azure 入口網站,並在出現提示時,使用Microsoft帳戶或具有您在本課程模組中使用之 Azure 訂用帳戶中參與者或擁有者角色的 Microsoft Entra 帳戶進行驗證。

  2. 從 Azure 入口網站中,選取搜尋方塊旁邊的工具列圖示,並確定您正在執行 Bash 會話,以開啟 Cloud Shell

  3. Azure Cloud Shell 窗格中,選取窗格工具列中的第四個圖示,其中顯示一個頁面,具有指向相反方向的一對垂直箭號。 然後,在下拉功能表中,選取 [ 上傳]。

  4. 在 [ 開啟 ] 對話框中,流覽至包含私鑰的 .pem 檔案位置,然後選取 [ 開啟]。

  5. 在 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 檔案。

  1. 如果您尚未連線到 Azure CycleCloud Web 應用程式,請開啟另一個瀏覽器視窗,並流覽至 https://< IP_address> URL。 如果出現提示,請確認您要繼續進行。

  2. 如果系統提示您進行驗證,請使用系統管理員角色提供 Azure CycleCloud 應用程式使用者帳戶的認證來登入。

  3. 在 Azure CycleCloud 圖形化介面中,瀏覽至 [叢集] 頁面。 在叢集清單中,選取 [contoso-custom-slurm-lab-cluster] 項目,然後再選取 [編輯]

  4. Edit contoso-custom-slurm-lab-cluster 彈出視窗中,選取 Cloud-init 項目,然後在 scheduler 索引標籤裡的 Cloud-init 組態區段中,輸入下列腳本:

    #!/bin/bash
    echo "10.10.10.10 www.contoso.com" >> /etc/hosts
    

    此螢幕擷取畫面顯示 Azure CycleCloud Web 應用程式中的 [編輯 contoso-custom-slurm-lab-cluster] 快顯視窗的 [Cloud-init] 索引標籤。

  5. 在相同的彈出視窗中,選取 [ Cloud-init ] 項目,選取其餘每個索引標籤(包括 cudahpctc),然後輸入相同的腳本。 選取 [ 儲存]。

工作 3:在排程器節點上確認 cloud-init 的功能

為了確認排程器節點上的 cloud-init 功能,您將啟動叢集。 這會觸發排程器節點的布建。 節點執行之後,您可以從 Azure Cloud Shell 連接到該節點,並確認 /etc/hosts 檔案包含項目 10.10.10.10 www.contoso.com

  1. 在顯示 Azure CycleCloud Web 應用程式的瀏覽器視窗中,選取 contoso-custom-slurm-lab-cluster 頁面上的 [開始] 連結。 當系統提示您確認時,請選取 [ 確定]。

    備註

    如果叢集已在執行中,您必須終止並重新啟動它,才能套用更新的組態,否則後續步驟中不會顯示該組態。

  2. 在節點清單中,選取 [排程器] 項目,並在 [詳細資料] 窗格上監視其狀態,等到從 [取得] 變更為 [就緒] 為止。

    備註

    這可能需要大約三分鐘的時間。

  3. 在 [ 詳細數據] 窗格中,選取 [ 連線]。 在 連接到節點:排程器 的彈出視窗中,使用 CycleCloud CLI 區段中,選擇包含讓您連結到排程器節點的命令的項目,然後選取 關閉

    Azure CycleCloud Web 應用程式中 [連線到節點:排程器] 彈出視窗的螢幕快照。

    備註

    命令的格式應為 cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster

  4. 使用 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 ~]$
    
  5. 當您連線到排程器節點時,請執行下列命令以確認 /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設定不會影響現有的節點。

  1. 線上到排程器節點時,請在 Cloud Shell 中執行下列命令,以移除並重新配置 Azure CycleCloud 叢集中的計算節點,並終止與排程器節點的連線:

    sudo -i
    cd /opt/cycle/jetpack/system/bootstrap/slurm
    ./cyclecloud_slurm.sh remove_nodes
    ./cyclecloud_slurm.sh scale
    exit
    exit
    

    備註

    此步驟完成後,您將會看到訊息指出 [正在嘗試移除下列節點],接著會出現 [重新調整叢集完成]

  2. 在您的計算機上,切換至顯示 Azure CycleCloud Web 應用程式的 contoso-custom-slurm-lab-cluster 頁面的網頁瀏覽器視窗。 在 節點 標籤上,選取 htc 數據列,然後在 詳細數據 窗格中,選取 htc-1 專案,然後選取 動作 標籤頁標頭。 在下拉功能表中,選取 [ 開始],然後在提示確認時選取 [ 確定 ]。

    Azure CycleCloud Web 應用程式中 contoso-custom-slurm-lab-cluster 頁面的 [動作] 功能表螢幕快照。

  3. 在 [ 詳細數據 ] 窗格中,監視新啟動的節點,並等候其狀態從 [取得 ] 變更為 [ 就緒]。

    備註

    這可能需要大約三分鐘的時間。

  4. 在 [ 詳細數據] 窗格中,選取 [ 連線]。 在 連線到節點:htc-1 的彈出視窗中,選擇 使用 CycleCloud CLI 區段中包含讓您連接至排程器節點的命令的條目,然後選擇 關閉

    Azure CycleCloud Web 應用程式中連接到節點 htc-1 的彈出視窗螢幕截圖。

    備註

    命令的格式應為 cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster

  5. 切換至 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 ~]$
    
  6. 當您連線到 tc-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 資源相關聯的不必要的成本,您現在將會終止叢集,並移除您在本課程模組練習中布建的所有資源。

  1. 在顯示 Azure CycleCloud Web 應用程式的圖形化介面的網頁瀏覽器中,選取 contoso-custom-slurm-lab-cluster 頁面上的 [終止] 鏈接,當系統提示您確認時,請選取 [確定]。

  2. 監視終止流程。

    備註

    此過程涉及解除佈建擔任叢集前端節點角色的 Azure VM。 這大約需要五分鐘的時間。

    備註

    若要刪除您在此實驗室中布建的所有其他資源,您將刪除裝載叢集資源的資源群組。

  3. 在 Azure 入口網站中,瀏覽至裝載叢集資源的資源群組頁面,選取工具列中的 [ 刪除資源群組 ] 項目。 在 [ 輸入資源組名以確認刪除 ] 文本框中,輸入資源組名,然後選取 [ 刪除]。 再次選取 [刪除] 以確認刪除。

    備註

    您的 Slurm 資源可能會有其他相關聯的資源群組。 若要避免額外費用,請務必刪除所有這些與 Slurm 相關的資源群組及其資源。

祝賀! 您已成功完成本課程模組的第三個和最後一個練習。 在本練習中,您探索了在 Azure CycleCloud 叢集中使用 cloud-init,並使用簡單的 Bash 指令碼,修改每個節點上的本機檔案內容,做個測試。 您已連線到叢集節點並檢閱已修改檔案的內容,來驗證結果。 之後,您已終止叢集,並刪除您在此課程模組中使用的所有叢集資源,以避免任何不必要的成本。