Поделиться через


Создание файла параметров Resource Manager

Вместо передачи параметров в виде встроенных значений в сценарии можно использовать JSON-файл, содержащий значения параметров. В этой статье показано, как создать используемый файл параметров с помощью шаблона JSON.

Совет

Мы рекомендуем использовать Bicep, так как он предоставляет те же возможности, что и шаблоны ARM, и имеет более простой синтаксис. Дополнительные сведения см. в описании файлов параметров.

Файл параметров

Файл параметров имеет следующий формат.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "value": "<second-value>"
    }
  }
}

Следует отметить, что файл параметров сохраняет значения параметров в виде обычного текста. По соображениям безопасности этот подход не рекомендуется использовать для конфиденциальных значений, таких как пароли. Если необходимо передать параметр с конфиденциальным значением, сохраните значение в хранилище ключей. Затем в файле параметров добавьте ссылку на хранилище ключей. Во время развертывания конфиденциальное значение безопасно извлекается. Дополнительные сведения см. в статье Использование Azure Key Vault для передачи защищенного значения параметра во время развертывания.

Следующий файл параметров включает в себя значение в простом тексте и конфиденциальное значение, которое хранится в хранилище ключей.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "reference": {
        "keyVault": {
          "id": "<resource-id-key-vault>"
        },
        "secretName": "<secret-name>"
      }
    }
  }
}

Дополнительные сведения об использовании значений из хранилища ключей см. в статье Использование Azure Key Vault для передачи защищенного значения параметра во время развертывания.

Определение значений параметров

Чтобы понять, как определить имена и значения параметров, откройте шаблон JSON и просмотрите раздел parameters. В следующем примере показаны параметры из шаблона JSON.

"parameters": {
  "storagePrefix": {
    "type": "string",
    "maxLength": 11
  },
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS",
    "Standard_ZRS",
    "Premium_LRS"
    ]
  }
}

Первой деталью, которую следует отметить в файле параметров, является имя каждого параметра. Имена параметров в файле параметров должны совпадать с именами параметров в шаблоне.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
    },
    "storageAccountType": {
    }
  }
}

Обратите внимание на тип параметра. Типы параметров в файле параметров должны совпадать с типами в шаблоне. В этом примере оба типа параметров являются строками.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": ""
    },
    "storageAccountType": {
      "value": ""
    }
  }
}

Проверьте шаблон на наличие параметров со значением по умолчанию. Если параметр имеет значение по умолчанию, можно указать значение в файле параметров, но это не обязательно. Значение в файле параметров переопределяет значение по умолчанию в шаблоне.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "" // This value must be provided.
    },
    "storageAccountType": {
      "value": "" // This value is optional. Template will use default value if not provided.
    }
  }
}

Проверьте допустимые значения в шаблоне и все ограничения, такие как максимальная длина. Эти значения задают диапазон значений, которые можно указать для параметра. В этом примере длина storagePrefix не должна превышать 11 символов, а storageAccountType должен указывать допустимое значение.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "storage"
    },
    "storageAccountType": {
      "value": "Standard_ZRS"
    }
  }
}

Примечание.

Файл параметров может содержать только значения параметров, которые определены в шаблоне. Если файл параметров содержит дополнительные параметры, которые не соответствуют параметрам в шаблоне, возникает ошибка.

Форматы типов параметров

В следующем примере показаны форматы различных типов параметров: строка, целое число, логическое значение, массив и объект.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "exampleString": {
      "value": "test string"
    },
    "exampleInt": {
      "value": 4
    },
    "exampleBool": {
      "value": true
    },
    "exampleArray": {
      "value": [
        "value 1",
        "value 2"
      ]
    },
    "exampleObject": {
      "value": {
        "property1": "value1",
        "property2": "value2"
      }
    }
  }
}

Развертывание шаблона с помощью файла параметров

В Azure CLI вы передаете локальный файл параметров с помощью @ и имени файла параметров. Например, @storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Дополнительные сведения см. в статье Развертывание ресурсов с помощью шаблонов ARM и Azure CLI.

Из Azure PowerShell вы передаете локальный файл параметров с помощью параметра TemplateParameterFile.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.json `
  -TemplateParameterFile C:\MyTemplates\storage.parameters.json

Дополнительные сведения см. в статье Развертывание ресурсов с помощью шаблонов ARM и Azure PowerShell.

Примечание.

Невозможно использовать файл параметров с колонкой настраиваемого шаблона на портале.

Совет

Если вы используете проект группы ресурсов Azure в Visual Studio, убедитесь, что для файла параметров в качестве действия сборки задано Содержимое.

Имя файла

Общее соглашение об именовании файла параметров заключается в добавлении parameters к имени шаблона. Например, если шаблон имеет имя azuredeploy.json, файл параметров будет называться azuredeploy.parameters.json. Это соглашение об именовании помогает увидеть связь между шаблоном и параметрами.

Для развертывания в разных средах создайте более одного файла параметров. При именовании файлов параметров укажите их использование, например разработка и производство. К примеру, используйте azuredeploy.parameters-dev.json и azuredeploy.parameters-prod.json для развертывания ресурсов.

Приоритет параметров

Вы можете использовать в ходе одной операции развертывания как встроенные параметры, так и локальный файл параметров. Например, часть значений можно указать в локальном файле параметров, а другую часть — в команде развертывания. Если значения для одного параметра указаны одновременно и в локальном файле параметров, и в командной строке, более высокий приоритет имеет значение из командной строки.

Можно использовать внешний файл параметров, указав универсальный код ресурса (URI) для файла. При использовании внешнего файла параметров нельзя передавать другие значения в командной строке или локальном файле. Все встроенные параметры игнорируются. Все значения параметров следует указать во внешнем файле.

Конфликты параметров

Если шаблон содержит параметр, имя которого совпадает с именем одного из параметров в команде PowerShell, параметр из шаблона отображается с постфиксом FromTemplate. Например, параметр с именем ResourceGroupName в шаблоне конфликтует с параметром ResourceGroupName командлета New-AzResourceGroupDeployment. Вам будет предложено указать значение для ResourceGroupNameFromTemplate. Этой путаницы можно избежать, используя имена параметров, которые не используются для команд развертывания.

Следующие шаги