Учебник по созданию форм портала Azure для спецификации шаблона
Статья
Вы можете создать форму, которая отображается в портал Azure, чтобы помочь пользователям в развертывании спецификации шаблона. Форма позволяет пользователям вводить значения, передаваемые в качестве параметров спецификации шаблона.
При создании спецификации шаблона форма и шаблон Azure Resource Manager (шаблон ARM) упаковываются вместе. Во время развертывания спецификации шаблона на портале автоматически запускается форма.
На следующем снимке экрана показана форма, открытая в портал Azure.
Чтобы отобразить различные элементы портала, доступные в форме, используйте шаблон ARM с несколькими параметрами. Следующий шаблон создает хранилище ключей, настраивает к нему разрешения для пользователя и добавляет секрет.
Скопируйте этот файл и сохраните его локально. В этом руководстве предполагается, что вы назвали его keyvault.json , но вы можете присвоить ему любое имя.
JSON
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"keyVaultName": {
"type": "string",
"metadata": {
"description": "Specifies the name of the key vault."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specifies the Azure location where the key vault should be created."
}
},
"enabledForDeployment": {
"type": "bool",
"defaultValue": false,
"allowedValues": [
true,
false
],
"metadata": {
"description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
}
},
"enabledForDiskEncryption": {
"type": "bool",
"defaultValue": false,
"allowedValues": [
true,
false
],
"metadata": {
"description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
}
},
"enabledForTemplateDeployment": {
"type": "bool",
"defaultValue": false,
"allowedValues": [
true,
false
],
"metadata": {
"description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
}
},
"tenantId": {
"type": "string",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
}
},
"objectId": {
"type": "string",
"metadata": {
"description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
}
},
"keysPermissions": {
"type": "array",
"defaultValue": [
"list"
],
"metadata": {
"description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
}
},
"secretsPermissions": {
"type": "array",
"defaultValue": [
"list"
],
"metadata": {
"description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
}
},
"skuName": {
"type": "string",
"defaultValue": "standard",
"allowedValues": [
"standard",
"premium"
],
"metadata": {
"description": "Specifies whether the key vault is a standard vault or a premium vault."
}
},
"secretName": {
"type": "string",
"metadata": {
"description": "Specifies the name of the secret that you want to create."
}
},
"secretValue": {
"type": "secureString",
"metadata": {
"description": "Specifies the value of the secret that you want to create."
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2022-07-01",
"name": "[parameters('keyVaultName')]",
"location": "[parameters('location')]",
"properties": {
"enabledForDeployment": "[parameters('enabledForDeployment')]",
"enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
"enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
"tenantId": "[parameters('tenantId')]",
"accessPolicies": [
{
"objectId": "[parameters('objectId')]",
"tenantId": "[parameters('tenantId')]",
"permissions": {
"keys": "[parameters('keysPermissions')]",
"secrets": "[parameters('secretsPermissions')]"
}
}
],
"sku": {
"name": "[parameters('skuName')]",
"family": "A"
},
"networkAcls": {
"defaultAction": "Allow",
"bypass": "AzureServices"
}
}
},
{
"type": "Microsoft.KeyVault/vaults/secrets",
"apiVersion": "2022-07-01",
"name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
],
"properties": {
"value": "[parameters('secretValue')]"
}
}
]
}
Создание формы по умолчанию
Портал Azure предоставляет песочницу для создания и предварительного просмотра форм. Эта песочница может отобразить форму из существующего шаблона ARM. Используйте эту форму по умолчанию, чтобы приступить к созданию формы для спецификации шаблона. Дополнительные сведения о структуре формы см. в разделе FormViewType.
В типе пакета выберите CustomTemplate. Перед указанием шаблона развертывания необходимо выбрать тип пакета.
В шаблоне развертывания (необязательно) выберите шаблон хранилища ключей, сохраненный локально. При появлении запроса на перезапись текущих изменений выберите Да. Автоматически созданная форма отображается в окне кода. Форму можно изменить на портале. Сведения о настройке формы см. в разделе "Настройка формы".
Если вы внимательно посмотрите на автогенерированную форму, заголовок по умолчанию — тестовое представление формы. Существует только один шаг, называемый основными понятиями .
Чтобы увидеть, что он работает без каких-либо изменений, выберите "Предварительный просмотр".
В песочнице отображается форма. Она содержит поля для выбора подписки, группы ресурсов и региона. Он также содержит поля для всех параметров из шаблона.
Большинство полей являются текстовыми, но некоторые поля характерны для типа параметра. Если шаблон содержит допустимые значения для параметра, автоматически созданная форма использует раскрывающийся элемент. Этот элемент предварительно заполняется допустимыми значениями.
Между заголовком и сведениями о проекте нет вкладок, так как форма по умолчанию определяет только один шаг. В разделе " Настройка формы " вы разбиваете параметры на несколько вкладок.
Предупреждение
Не нажимайте кнопку "Создать" при запуске реального развертывания. Вы можете развернуть спецификацию шаблона далее в этом руководстве.
Чтобы выйти из предварительной версии, нажмите кнопку "Отмена".
Настройка формы
Форма по умолчанию является хорошей отправной точкой для понимания форм, но обычно требуется настроить ее. Вы можете ее изменить в песочнице или в Visual Studio Code. Параметр "Предварительный просмотр" доступен только в песочнице.
Присвойте форме заголовок, описывающий ее использование.
В вашей форме по умолчанию все поля для шаблона объединены в один шаг под названием Основы. Чтобы помочь пользователям понять предоставляемые ими значения, разделите форму на шаги. Каждый шаг содержит поля, связанные с логическим элементом решения, которое нужно развернуть.
Найдите шаг с меткой Основы. Сохраните этот шаг, но добавьте шаги, которые сосредоточены на настройке хранилища ключей, настройке разрешений пользователей и указании секрета. Добавьте запятую после шага "Основы".
В свойствах формы учитывается регистр. Убедитесь, что вы используете регистр, показанный в примерах.
Выберите Предварительный просмотр. Вы видите шаги, но большинство из них не имеют элементов.
Переместите элементы на соответствующие шаги. Начните с элементов с метками Имя секрета и Значение секрета. Удалите эти элементы из шага Основы и добавьте их в шаг Секрет.
JSON
{
"name": "secret",
"label": "Secret",
"elements": [
{
"name": "secretName",
"type": "Microsoft.Common.TextBox",
"label": "Secret Name",
"defaultValue": "",
"toolTip": "Specifies the name of the secret that you want to create.",
"constraints": {
"required": true,
"regex": "",
"validationMessage": ""
},
"visible": true
},
{
"name": "secretValue",
"type": "Microsoft.Common.PasswordBox",
"label": {
"password": "Secret Value",
"confirmPassword": "Confirm password"
},
"toolTip": "Specifies the value of the secret that you want to create.",
"constraints": {
"required": true,
"regex": "",
"validationMessage": ""
},
"options": {
"hideConfirmation": true
},
"visible": true
}
]
}
При перемещении outputs элементов исправьте раздел. В настоящее время раздел с выходными данными ссылается на эти элементы, будто они все еще находятся на шаге "Основы". Исправьте синтаксис, чтобы он ссылался на элементы в шаге secret.
Чтобы протестировать форму, перейдите на портал, а затем — к спецификации шаблона и выберите Развернуть.
Вы видите созданную форму. Выполните шаги и укажите значения для полей.
На шаге "Основы" отображается поле для региона. Это поле предназначено для расположения группы ресурсов. На шаге Key Vault отображается поле для расположения. Это поле предназначено для расположения хранилища ключей.
На шаге "Разрешения" укажите идентификатор пользователя для идентификатора объекта. Используйте значение по умолчанию (["list"]) для разрешений ключа и секрета. Этот параметр улучшен в следующем разделе.
После завершения предоставления значений нажмите кнопку "Создать ", чтобы развернуть спецификацию шаблона.
Улучшение формы
В предыдущем разделе вы добавили шаги и переместили элементы, но вы не изменили поведения по умолчанию. В этом разделе вы вносите изменения, которые улучшают взаимодействие с пользователями спецификации шаблона.
Ранее два поля разрешений были текстовыми. Теперь вы используете раскрывающийся список. Для параметра "Тип" задайте значение Microsoft.Common.DropDown.
Эти поля должны передать массив в шаблон. Обычный раскрывающийся список не работает, так как он позволяет выбрать только одно значение. Чтобы выбрать несколько значений и передать их в виде массива, добавьте multiselect поле и задайте для него значение true.
Используйте расширенные конструкции в Azure Resource Manager для управления сложными сценариями, такими как порядок развертывания, условные развертывания и секреты.
Планирование, доставка, управление и мониторинг возможностей виртуального рабочего стола и удаленных приложений в Microsoft Azure для любого устройства.
Описание рекомендуемых подходов для разработки шаблонов Azure Resource Manager (шаблонов ARM). Содержит рекомендации, как избежать распространенных проблем при использовании шаблонов.
Сведения о том, как применить Azure Resource Manager и REST API Resource Manager для развертывания ресурсов в Azure. Эти ресурсы определяются в шаблоне Resource Manager.
Описывается, как настроить непрерывную интеграцию в Azure Pipelines с помощью шаблонов Azure Resource Manager. В этой статье показано, как использовать сценарий PowerShell или скопировать файлы в промежуточное расположение и выполнить развертывание из него.