建構 Azure Stack HCI 工作坊環境 | Azure Cloud Shell



簡介

由於,在 Cloud Summit 2023 大會當天和結束至今,有幾位朋友來詢問怎麼準備當天實戰工作坊的環境。所以,透過本文分享一下個人的準備方式給有興趣的朋友參考。

下列為當天在戰工作坊中,以 Azure 公有雲為實機操作環境,提供與會者每人一台 Azure VM 虛擬主機啟用「巢狀式虛擬化」(Nested Virtualization) 機制,以便說明和實際展示並手把手帶領與會者,體驗在 Microsoft Build 2022 大會中,所發佈的「Azure Stack HCI Single-Node」技術。下列為當天實戰工作坊的簡報檔,有興趣的朋友可以參考看看。






透過 Azure Cloud Shell 大量部署 Azure VMs

過去,在準備工作坊環境時,當然比較簡單的方法,就是透過 Azure Cloud Shell,配合簡單的迴圈即可輕鬆部署大量的 Azure VMs 虛擬主機。為了方便抓圖,再順利登入 Azure Portal 操作介面後,另外開新頁連結「https://shell.azure.com/bash」網址,即可直接使用全畫面的 Azure Cloud Shell

首先,透過「az account show --output table」指令,查詢目前 Azure CLI 預設採用的 Azure 訂閱帳戶資訊。

透過「az account list-locations --output table」指令,查詢這個 Azure 訂閱帳戶,可以使用的 Azure Datacenter 有哪些。

由於,預計選擇「JapanEast」的 Azure Datacenter,所以執行「az vm image list-skus --location japaneast --offer WindowsServer --publisher MicrosoftWindowsServer --output table | grep 2022」指令,查詢有哪些 Windows Server 2022 的 VM Images 可以使用。

確認後,因為 Azure CLI 指令部署 VM 時必須指定完整的 URN 才行,所以透過「az vm image list --all --location japaneast --publisher MicrosoftWindowsServer --output table | grep 2022」指令,即可查詢完整的 VM Images 和 URN 完整名稱。

然而,當執行迴圈準備部署 VM 時,卻發生 Security Type 參數值不支援Standard」的情況 😓。因為,這次的實作工作坊環境中,Security Type 參數值一定要設定為 Standard,否則 Nested Virtualization 將無法運作,詳細資訊請參考 Azure Stack HCI in Azure Nested VM 注意事項





使用 JSON template 進行部署

由於,目前的 Azure Cloud Shell 環境中, Security Type 參數值不支援Standard」,所以我無法很簡單的進行大量部署。所以,轉為採用 JSON template 方式進行部署。

因此,很簡單的先從 Azure Portal 操作介面中,去執行新增 VM 虛擬主機的流程。首先,當然是選擇到 VM Image 採用 Windows Server 2022 - x64 Gen 時,可以看到預設採用的 Security Type 參數值為「Trusted launch virtual machines」,並支援多種安全性機制。

在此次的實戰工作坊環境,記得 Security Type 參數值選擇至「Standard」,以便實作 Nested Virtualization 環境。


其中比較麻煩的部份是,部署的每台 VM 需要額外新增「Stadndard SSD 64GB x16個」,只能先苦一次了 😏。等到建立 VM 的流程最後階段時,點選下方的「Download a template for automation」,即可下載一個壓縮檔,內容包含  Template.jsonParameters.json 檔案。

那麼,有客製化的 Template.json 和 Parameters.json 後,該怎麼進行部署作業呢? 請在 Azure Portal 搜尋列中,鍵入「Deploy a custom template」關鍵字。

進入後,點選「Build your own template in the editor」連結。


進入 Edit template 畫面後,點選「Load file」,選擇剛才下載的 Template.json 檔案,載入成功後按下 Save 鈕。


接著,點選「Edit parameters」準備載入 Parameters.json 檔案。


進入 Edit parameters 畫面後,點選「Load file」,選擇剛才下載的 Parameters.json 檔案,載入成功後按下 Save 鈕。


此時,可以看到準備部署 VM 虛擬主機的資訊,例如,主機名稱、VM Size、管理帳號、管理密碼……等。


雖然用 JSON Template 來部署也算方便,但一次就只能部署一台,對於準備 40 台 VM 虛擬主機的實戰工作坊環境來講還是不太方便。 😅





Azure Cloud Shell 搭配 JSON Template 進行部署

由於,部署 VM 虛擬主機時,還是會有些資訊不同,例如,主機名稱、Data Disk 名稱……等,所以只要修改 Parameters.json 檔案內容然後另存,接著上傳至 Azure Cloud Shell 環境。


此時,請先執行「export ResourceGroup="RG-AzSHCI-HOL0719"」指令,建立「ResourceGroup」變數,然後執行「az group create --name ${ResourceGroup} --location japaneast」,在 JapanEast 中建立 ResourceGroup 名稱為「RG-AzSHCI-HOL0719」。

為了截圖方便,用個簡單的 for 迴圈,搭配剛才上傳的  Template.json 和 Parameters.json 檔案,即可在剛才的 ResourceGroup 中部署 5 台客製化的 VM 虛擬主機。

部署好 5 台 VM 虛擬主機後,為了屆時連線方便,準備幫這 5 台 VM 虛擬主機建立網際網路連線的 DNS 名稱。請先執行「az network public-ip list --resource-group ${ResourceGroup} --output table」指令,確認 Name 的欄位名稱。

再次採用簡單的 for 迴圈,指定剛才確認的 Name 名稱,然後指定 VM 虛擬主機的網際網路連線的 DNS 名稱。舉例來說,可以看到順利為第一台 VM 虛擬主機,建立的 FQDN 為「hci-hol-1.japaneast.cloudapp.azure.com」。


至此,便完成大量部署客製化 Azure VM 虛擬主機,並且支援 Nested Virtualization 實作環境。此外,每台 Azure VM 虛擬主機除了 OS Disk 之外,還額外配置 Standard SSD 64GB * 16 個。 😁