簡介
由於,在 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 有哪些。
確認後,因為 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」,並支援多種安全性機制。
那麼,有客製化的 Template.json 和 Parameters.json 後,該怎麼進行部署作業呢? 請在 Azure Portal 搜尋列中,鍵入「Deploy a custom template」關鍵字。
進入後,點選「Build your own template in the editor」連結。
進入 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環境。
為了截圖方便,用個簡單的 for 迴圈,搭配剛才上傳的 Template.json 和 Parameters.json 檔案,即可在剛才的 ResourceGroup 中部署 5 台客製化的 VM 虛擬主機。
再次採用簡單的 for 迴圈,指定剛才確認的 Name 名稱,然後指定 VM 虛擬主機的網際網路連線的 DNS 名稱。舉例來說,可以看到順利為第一台 VM 虛擬主機,建立的 FQDN 為「hci-hol-1.japaneast.cloudapp.azure.com」。