Упражнение. Использование переменных Azure Resource Manager для хранения выражений

Завершено

В этом упражнении вы сохраните выражение имени учетной записи хранения Azure в переменной шаблона Azure Resource Manager (ARM). Затем эта переменная используется для указания имени создаваемой учетной записи хранения.

В этом упражнении мы используем средства Azure Resource Manager для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.

Добавление переменной

Добавьте переменную для хранения выражения имени учетной записи хранения в одном месте в шаблоне.

  1. В Visual Studio Code в файле azuredeploy.json поместите курсор между фигурными скобками в блоке "variables":{} переменных и нажмите клавишу ВВОД.

  2. Введите var внутри скобок. Появится список связанных фрагментов кода. Выберите arm-variable:

    Screenshot of Visual Studio Code that shows the snippets for Azure Resource Manager template variables.

  3. Раздел переменных выглядит следующим образом:

    "variables": {"variable1": "value"},
    
  4. Измените имя переменной на uniqueStorageName и измените значение на "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]". Раздел переменных выглядит следующим образом:

    "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
    

    Обратите внимание, что вместо литеральной строки в выражении используется параметр storagePrefix. В остальном это то же самое выражение, которое вы изучили в предыдущем уроке.

  5. Используйте переменную в разделе ресурсов. Измените значения атрибутов name: и displayName на "[variables('uniqueStorageName')]".

  6. Весь файл выглядит следующим образом:

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
           "storagePrefix": {
               "type": "string",
               "minLength": 3,
               "maxLength": 11
           },
            "storageSKU": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_RAGRS",
                    "Standard_ZRS",
                    "Premium_LRS",
                    "Premium_ZRS",
                    "Standard_GZRS",
                    "Standard_RAGZRS"
                ]
            }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": {
                "displayName": "[variables('uniqueStorageName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    

Развертывание шаблона (необязательно)

Обновленный шаблон не имеет никаких изменений в развернутом ресурсе, поэтому развертывание этого шаблона не вносит никаких изменений в среду Azure.

Если вы хотите развернуть этот шаблон, используйте приведенные ниже команды Azure CLI. Не забудьте использовать то же значение параметра storagePrefix, которое использовалось при последнем развертывании.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addVariable-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storagePrefix={your-Prefix}

Если вы хотите развернуть этот шаблон, используйте приведенные ниже команды Azure PowerShell. Не забудьте использовать то же значение параметра storagePrefix, которое использовалось при последнем развертывании.

$templateFile = "azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addVariable-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storagePrefix {your-Prefix}