共用方式為


教學課程:在 ARM 範本中使用條件

瞭解如何根據 Azure Resource Manager 範本 (ARM 範本) 中的條件部署 Azure 資源。

設定資源部署順序 教學課程中,您會建立虛擬機器、虛擬網路,以及一些其他相依資源,包括儲存體帳戶。 您不需要每次都建立新的儲存體帳戶,而是讓使用者在建立新的儲存體帳戶和使用現有的儲存體帳戶之間進行選擇。 若要達成此目標,您可以定義其他參數。 如果參數的值是 新的,則會建立新的儲存體帳戶。 否則,會使用具有所提供名稱的現有儲存體帳戶。

Resource Manager 範本使用條件圖

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

  • 開啟快速入門範本
  • 修改範本
  • 部署範本
  • 清理資源

本教學課程僅涵蓋使用條件的基本案例。 如需詳細資訊,請參閱:

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

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

先決條件

若要完成本文,您需要:

  • Visual Studio Code

  • 若要提高安全性,請使用虛擬機器管理員帳戶產生的密碼。 您可以使用 Azure Cloud Shell 在 PowerShell 或 Bash 中執行下列命令:

    openssl rand -base64 32
    

    若要進一步了解,請執行 man openssl rand 以開啟手冊頁。

    Azure 金鑰保存庫的設計目的是要保護密碼編譯金鑰和其他秘密。 如需詳細資訊,請參閱 教學課程:在 ARM 範本部署中整合 Azure 金鑰保存庫。 我們也建議您每三個月更新一次密碼。

開啟快速入門範本

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. 範本定義了六個資源:

    在自訂範本之前檢閱範本參考會很有幫助。

  5. 選取 檔案>另存新檔 ,將檔案的複本儲存至本機電腦,名稱為 azuredeploy.json

修改範本

對現有範本進行兩項變更:

  • 新增儲存體帳戶名稱參數。 使用者可以指定新的儲存體帳戶名稱或現有的儲存體帳戶名稱。
  • 新增名為 的新參數 newOrExisting。 部署會使用此參數來判斷是否要建立新的儲存體帳戶或使用現有的儲存體帳戶。

以下是進行更改的過程:

  1. 在 Visual Studio Code 中開啟 azuredeploy.json

  2. 將整個模板中的三個variables('storageAccountName')替換為parameters('storageAccountName')

  3. 移除下列變數定義:

    螢幕擷取畫面,醒目提示您需要移除的變數定義。

  4. 將下列兩個參數新增至參數區段的開頭:

    "storageAccountName": {
      "type": "string"
    },
    "newOrExisting": {
      "type": "string",
      "allowedValues": [
        "new",
        "existing"
      ]
    },
    

    按 Alt+Shift+F 在 Visual Studio Code 中格式化範本。

    更新的參數定義如下所示:

    Resource Manager 使用條件

  5. 將下列行新增至儲存體帳戶定義的開頭。

    "condition": "[equals(parameters('newOrExisting'),'new')]",
    

    條件會檢查參數 newOrExisting的值。 如果參數值是 新的,部署會建立儲存帳戶。

    更新的儲存體帳戶定義如下所示:

    螢幕擷取畫面,顯示更新的儲存體帳戶定義。

  6. 使用下列值更新 storageUri 虛擬機器資源定義的內容:

    "storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
    

    當您在不同的資源群組下使用現有的儲存體帳戶時,就需要進行這項變更。

  7. 儲存變更。

部署範本

  1. 登入 Cloud Shell

  2. 選取左上角的 PowerShellBash (適用於 CLI) 來選擇您偏好的環境。 切換時需要重新啟動 shell。

    Azure 入口網站 Cloud Shell 上傳檔案

  3. 選取 [上傳/下載檔案],然後選取 [上傳]。 請參閱上一個螢幕截圖。 選取您在上一節中儲存的檔案。 上傳檔案後,您可以使用 ls 命令和 cat 命令來驗證檔案是否已成功上傳。

  4. 執行下列 PowerShell 腳本來部署範本。

    這很重要

    儲存體帳戶名稱在 Azure 中必須是唯一的。 名稱必須只有小寫字母或數字。 它不能超過 24 個字元。 儲存體帳戶名稱是附加 store 的專案名稱。 請確定專案名稱和產生的儲存體帳戶名稱符合儲存體帳戶名稱需求。

    $projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names"
    $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)"
    $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)"
    $vmAdmin = Read-Host -Prompt "Enter the admin username"
    $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString
    $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix"
    
    $resourceGroupName = "${projectName}rg"
    $storageAccountName = "${projectName}store"
    
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    New-AzResourceGroupDeployment `
        -ResourceGroupName $resourceGroupName `
        -adminUsername $vmAdmin `
        -adminPassword $vmPassword `
        -dnsLabelPrefix $dnsLabelPrefix `
        -storageAccountName $storageAccountName `
        -newOrExisting $newOrExisting `
        -TemplateFile "$HOME/azuredeploy.json"
    
    Write-Host "Press [ENTER] to continue ..."
    

    備註

    如果newOrExisting新的,但具有指定儲存體帳戶名稱的儲存體帳戶已存在,則部署會失敗。

嘗試將 newOrExisting 設定為 現有 來進行另一個部署,並指定現有的儲存體帳戶。 若要事先建立儲存體帳戶,請參閱 建立儲存體帳戶

清理資源

當不再需要 Azure 資源時,請刪除資源群組來清除您部署的資源。 若要刪除資源群組,請選取 [嘗試] 以開啟 Cloud Shell。 若要貼上 PowerShell 腳本,請以滑鼠右鍵按一下 Shell 視窗,然後選取 貼上

$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

Write-Host "Press [ENTER] to continue ..."

後續步驟

在本教學課程中,您開發了一個範本,可讓使用者在建立新的儲存體帳戶和使用現有的儲存體帳戶之間進行選擇。 若要瞭解如何從 Azure 金鑰保存庫擷取秘密,並在範本部署中使用秘密做為密碼,請參閱: