教學課程:建立具有相依資源的 ARM 範本
了解如何建立 Azure Resource Manager 範本 (ARM 範本) 以部署多個資源,以及設定部署順序。 在建立範本之後,您可以從 Azure 入口網站使用 Azure Cloud Shell 來部署範本。
在本教學課程中,您會建立儲存體帳戶、虛擬機器、虛擬網路和其他相依資源。 某些資源必須在另一項資源已存在時才能部署。 例如,在虛擬機器的儲存體帳戶和網路介面存在之前,您無法建立虛擬機器。 您可以讓一項資源相依於其他資源,以定義此關聯性。 資源管理員會評估資源之間的相依性,並依其相依順序進行部署。 如果資源並未彼此相依,Resource Manager 就會平行部署資源。 如需詳細資訊,請參閱定義在 ARM 範本中部署資源的順序。
本教學課程涵蓋下列工作:
- 開啟快速入門範本
- 瀏覽範本
- 部署範本
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
如需涵蓋資源相依性的 Learn 模組,請參閱使用進階 ARM 範本功能,管理複雜的雲端部署。
必要條件
若要完成本文,您需要:
Visual Studio Code 搭配 Resource Manager Tools 擴充功能。 請參閱快速入門:使用 Visual Studio Code 建立 ARM 範本。
為了提高安全性,請使用為虛擬機器系統管理員帳戶產生的密碼。 您可以使用 Azure Cloud Shell,在 PowerShell 或 Bash 中執行下列命令:
openssl rand -base64 32
若要深入了解,請執行
man openssl rand
以開啟手動頁面。Azure Key Vault 的設計訴求是保護加密金鑰和其他祕密。 如需詳細資訊,請參閱教學課程:在 ARM 範本部署中整合 Azure Key Vault。 我們也建議您每三個月更新一次密碼。
開啟快速入門範本
Azure 快速入門範本是 ARM 範本的存放庫。 您可以尋找範例範本並加以自訂,而不要從頭建立範本。 本教學課程中使用的範本名為部署簡單的 Windows VM。
在 Visual Studio Code 中,選取 [檔案]>[開啟檔案]。
在 [檔案名稱] 中,貼上下列 URL:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
選取 [開啟] 以開啟檔案。
選取 [檔案]>[另存新檔],以名稱 azuredeploy.json 將檔案的複本儲存至您的本機電腦。
瀏覽範本
當您探索這一節中的範本時,請試著回答下列問題:
- 此範本中定義了多少個 Azure 資源?
- 其中一項資源是 Azure 儲存體帳戶。 定義是否與最後一個教學課程中使用的定義相仿?
- 您是否可找到此範本中定義的資源所適用的範本參考?
- 您是否可找到資源的相依性?
在 Visual Studio Code 中摺疊元素,直到您只看到
resources
內的第一層元素和第二層元素:範本中定義了六項資源:
展開第一項資源。 這是儲存體帳戶。 將資源定義與範本參考相比較。
展開第二項資源。 資源類型為
Microsoft.Network/publicIPAddresses
。 將資源定義與範本參考相比較。展開第三項資源。 資源類型為
Microsoft.Network/networkSecurityGroups
。 將資源定義與範本參考相比較。展開第四項資源。 資源類型為
Microsoft.Network/virtualNetworks
:dependsOn
元素可讓您定義一項資源,作為一或多項資源的相依項目。 此資源依存於另一項資源:Microsoft.Network/networkSecurityGroups
展開第五項資源。 資源類型為
Microsoft.Network/networkInterfaces
。 此資源依存於其他兩項資源:Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
展開第六項資源。 此資源是虛擬機器。 它依存於其他兩項資源:
Microsoft.Storage/storageAccounts
Microsoft.Network/networkInterfaces
下圖說明此範本的資源和相依性資訊:
藉由指定相依性,Resource Manager 將可有效部署解決方案。 它會以平行方式部署儲存體帳戶、公用 IP 位址和虛擬網路,因為它們沒有相依性。 在公用 IP 位址和虛擬網路部署之後,會建立網路介面。 當所有其他資源皆部署後,Resource Manager 會部署虛擬機器。
部署範本
登入 Cloud Shell。
藉由選取左上角的 PowerShell 或 Bash (適用於 CLI) 來選擇您慣用的環境。 切換時必須重新啟動殼層。
選取 [上傳/下載檔案],然後選取 [上傳]。 請參閱上一個螢幕擷取畫面。 選取您稍早儲存的檔案。 上傳檔案之後,您可以使用
ls
命令和cat
命令來確認檔案是否已成功上傳。然後執行下列 PowerShell 指令碼來部署範本。
echo "Enter a project name that is used to generate resource group name:" && read projectName && echo "Enter the location (i.e. centralus):" && read location && echo "Enter the virtual machine admin username:" && read adminUsername && echo "Enter the DNS label prefix:" && read dnsLabelPrefix && resourceGroupName="${projectName}rg" && az group create --name $resourceGroupName --location $location && az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json" --parameters adminUsername=$adminUsername dnsLabelPrefix=$dnsLabelPrefix
透過 RDP 連線至虛擬機器,以確認虛擬機器已成功建立。
清除資源
不再需要 Azure 資源時,可藉由刪除資源群組來清除您所部署的資源。
- 在 Azure 入口網站中,選取左側功能表中的 [資源群組]。
- 在 [依名稱篩選] 欄位中輸入資源群組名稱。
- 選取資源群組名稱。 您在資源群組中應該會看到共計六個資源。
- 從頂端功能表中選取 [刪除資源群組]。
下一步
在本教學課程中,您已開發和部署用來建立虛擬機器、虛擬網路和相依資源的範本。 若要了解如何使用部署指令碼來執行部署前/後的作業,請參閱: