Share via


教學課程:建立具有相依資源的 ARM 範本

了解如何建立 Azure Resource Manager 範本 (ARM 範本) 以部署多個資源,以及設定部署順序。 在建立範本之後,您可以從 Azure 入口網站使用 Azure Cloud Shell 來部署範本。

在本教學課程中,您會建立儲存體帳戶、虛擬機器、虛擬網路和其他相依資源。 某些資源必須在另一項資源已存在時才能部署。 例如,在虛擬機器的儲存體帳戶和網路介面存在之前,您無法建立虛擬機器。 您可以讓一項資源相依於其他資源,以定義此關聯性。 資源管理員會評估資源之間的相依性,並依其相依順序進行部署。 如果資源並未彼此相依,Resource Manager 就會平行部署資源。 如需詳細資訊,請參閱定義在 ARM 範本中部署資源的順序

Diagram that shows the deployment order of dependent resources in a Resource Manager template.

本教學課程涵蓋下列工作:

  • 開啟快速入門範本
  • 瀏覽範本
  • 部署範本

如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

如需涵蓋資源相依性的 Learn 模組,請參閱使用進階 ARM 範本功能,管理複雜的雲端部署

必要條件

若要完成本文,您需要:

開啟快速入門範本

Azure 快速入門範本是 ARM 範本的存放庫。 您可以尋找範例範本並加以自訂,而不要從頭建立範本。 本教學課程中使用的範本名為部署簡單的 Windows VM

  1. 在 Visual Studio Code 中,選取 [檔案]>[開啟檔案]

  2. 在 [檔案名稱] 中,貼上下列 URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. 選取 [開啟] 以開啟檔案。

  4. 選取 [檔案]>[另存新檔],以名稱 azuredeploy.json 將檔案的複本儲存至您的本機電腦。

瀏覽範本

當您探索這一節中的範本時,請試著回答下列問題:

  • 此範本中定義了多少個 Azure 資源?
  • 其中一項資源是 Azure 儲存體帳戶。 定義是否與最後一個教學課程中使用的定義相仿?
  • 您是否可找到此範本中定義的資源所適用的範本參考?
  • 您是否可找到資源的相依性?
  1. 在 Visual Studio Code 中摺疊元素,直到您只看到 resources 內的第一層元素和第二層元素:

    Screenshot of Visual Studio Code displaying an ARM template with collapsed elements.

    範本中定義了六項資源:

  2. 展開第一項資源。 這是儲存體帳戶。 將資源定義與範本參考相比較。

    Screenshot of Visual Studio Code showing the storage account definition in an ARM template.

  3. 展開第二項資源。 資源類型為 Microsoft.Network/publicIPAddresses。 將資源定義與範本參考相比較。

    Screenshot of Visual Studio Code showing the public IP address definition in an ARM template.

  4. 展開第三項資源。 資源類型為 Microsoft.Network/networkSecurityGroups。 將資源定義與範本參考相比較。

    Screenshot of Visual Studio Code showing the network security group definition in an ARM template.

  5. 展開第四項資源。 資源類型為 Microsoft.Network/virtualNetworks

    Screenshot of Visual Studio Code showing the virtual network definition with dependsOn element in an ARM template.

    dependsOn 元素可讓您定義一項資源,作為一或多項資源的相依項目。 此資源依存於另一項資源:

    • Microsoft.Network/networkSecurityGroups
  6. 展開第五項資源。 資源類型為 Microsoft.Network/networkInterfaces。 此資源依存於其他兩項資源:

    • Microsoft.Network/publicIPAddresses
    • Microsoft.Network/virtualNetworks
  7. 展開第六項資源。 此資源是虛擬機器。 它依存於其他兩項資源:

    • Microsoft.Storage/storageAccounts
    • Microsoft.Network/networkInterfaces

下圖說明此範本的資源和相依性資訊:

Diagram that shows the dependency relationships between resources in an ARM template displayed in Visual Studio Code.

藉由指定相依性,Resource Manager 將可有效部署解決方案。 它會以平行方式部署儲存體帳戶、公用 IP 位址和虛擬網路,因為它們沒有相依性。 在公用 IP 位址和虛擬網路部署之後,會建立網路介面。 當所有其他資源皆部署後,Resource Manager 會部署虛擬機器。

部署範本

  1. 登入 Cloud Shell

  2. 藉由選取左上角的 PowerShellBash (適用於 CLI) 來選擇您慣用的環境。 切換時必須重新啟動殼層。

    Screenshot of Azure portal Cloud Shell with the upload file option highlighted.

  3. 選取 [上傳/下載檔案],然後選取 [上傳]。 請參閱上一個螢幕擷取畫面。 選取您稍早儲存的檔案。 上傳檔案之後,您可以使用 ls 命令和 cat 命令來確認檔案是否已成功上傳。

  4. 然後執行下列 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
    
  5. 透過 RDP 連線至虛擬機器,以確認虛擬機器已成功建立。

清除資源

不再需要 Azure 資源時,可藉由刪除資源群組來清除您所部署的資源。

  1. 在 Azure 入口網站中,選取左側功能表中的 [資源群組]
  2. 在 [依名稱篩選] 欄位中輸入資源群組名稱。
  3. 選取資源群組名稱。 您在資源群組中應該會看到共計六個資源。
  4. 從頂端功能表中選取 [刪除資源群組]

下一步

在本教學課程中,您已開發和部署用來建立虛擬機器、虛擬網路和相依資源的範本。 若要了解如何使用部署指令碼來執行部署前/後的作業,請參閱: