Tutorial: Creación de formularios de Azure Portal para una especificación de plantilla
Artikulua
Puede crear un formulario que aparezca en Azure Portal para ayudar a los usuarios a implementar una especificación de plantilla. El formulario permite a los usuarios especificar valores que se pasan como parámetros a la especificación de plantilla.
Al crear la especificación de plantilla, se empaquetan el formulario y la plantilla de Azure Resource Manager conjuntamente. La implementación de la especificación de plantilla a través del portal inicia el formulario automáticamente.
En la captura de pantalla siguiente se muestra un formulario abierto en Azure Portal.
Para mostrar los diferentes elementos del portal que están disponibles en un formulario, usará una plantilla de Resource Manager con varios parámetros. La siguiente plantilla crea un almacén de claves, configura los permisos para el almacén de claves para un usuario y agrega un secreto.
Copie este archivo y guárdelo localmente. En este tutorial se supone que le ha asignado el nombre keyvault.json, pero puede darle cualquier otro.
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')]"
}
}
]
}
Creación de un formulario predeterminado
Azure Portal proporciona un espacio aislado para crear y obtener una vista previa de los formularios. Este espacio aislado puede generar un formulario a partir de una plantilla de ARM existente. Este formulario predeterminado se usará para empezar a crear un formulario para la especificación de plantilla. Para obtener más información sobre la estructura del formulario, vea FormViewType.
En Tipo de paquete, seleccione CustomTemplate. Asegúrese de seleccionar el tipo de paquete antes de especificar la plantilla de implementación.
En Plantilla de implementación (opcional), seleccione la plantilla del almacén de claves que guardó localmente. Cuando se le pregunte si desea sobrescribir los cambios actuales, seleccione Yes (Sí). El formulario generado automáticamente se muestra en la ventana de código. Puede editar el formulario desde el portal. Para personalizar el formulario, consulte Personalización de formularios.
Si examina detenidamente el formulario generado automáticamente, el título predeterminado es Vista formulario de prueba. Solo hay un paso definido, denominado Datos básicos.
Para ver si funciona sin modificaciones, seleccione Vista previa.
El espacio aislado muestra el formulario. Tiene campos para seleccionar una suscripción, un grupo de recursos y una región. También tiene campos para todos los parámetros de la plantilla.
La mayoría de los campos son cuadros de texto, pero algunos de ellos son específicos para el tipo de parámetro. Cuando la plantilla incluye valores permitidos para un parámetro, el formulario generado automáticamente utiliza un elemento desplegable. El elemento desplegable se ha rellenado previamente con los valores permitidos.
Entre el título y Detalles del proyecto, no hay pestañas porque el formulario predeterminado solo tiene un paso definido. En la sección Personalización de formularios, dividirá los parámetros en varias pestañas.
Abisua
No seleccione Crear a medida que inicia una implementación real. Tendrá la oportunidad de implementar la especificación de plantilla más adelante en este tutorial.
Para salir de la versión preliminar, seleccione Cancelar.
Personalización del formulario
El formulario predeterminado es un buen punto de partida para conocer los formularios, pero es habitual que se desee personalizar. Se puede editar en el espacio aislado o en Visual Studio Code. La opción de vista previa solo está disponible en el espacio aislado.
El formulario predeterminado tenía todos los campos de la plantilla combinados en un paso denominado Aspectos básicos. Para ayudar a los usuarios a conocer los valores que proporcionan, divida el formulario en pasos. Cada uno de ellos paso contiene campos relacionados con una parte lógica de la solución que se va a implementar.
Busque el paso con la etiqueta Basics (Aspectos básicos). Mantenga este paso, pero agregue pasos que se centren en configurar el almacén de claves, establecer permisos de usuario y especificar el secreto. Agregue una coma después del paso básico.
Las propiedades del formulario distinguen mayúsculas de minúsculas. Asegúrese de usar las mayúsculas y minúsculas como se muestra en los ejemplos.
Seleccione Vista previa. Verá los pasos, pero la mayoría de ellos no tienen ningún elemento.
Mueva los elementos a los pasos adecuados. Comience por los elementos con la etiqueta Secret Name (Nombre del secreto) y Secret Value (Valor del secreto). Quite estos elementos del paso Basics (Aspectos básicos) y agréguelos al paso Secret (Secreto).
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
}
]
}
Al mover elementos, corrija la sección outputs. Actualmente, la sección de salidas hace referencia a esos elementos como si estuvieran en el paso de aspectos básicos. Corrija la sintaxis para que haga referencia a los elementos del paso secret.
Para probar el formulario, vaya al portal y, después, a la especificación de plantilla. Seleccione Deploy (Implementar).
Verá el formulario que creó. Siga los pasos y especifique los valores adecuados en los distintos campos.
En el paso Datos básicos, verá un campo para Región. Este campo es para la ubicación del grupo de recursos. En el paso Key Vault, verá un campo para Ubicación. Este campo es para la ubicación del almacén de claves.
En el paso Permisos, proporcione el identificador de usuario para el identificador de objeto. Use el valor predeterminado (["list"]) para los permisos de clave y secreto. Puede mejorar esa opción en la sección siguiente.
Cuando termine de proporcionar valores, seleccione Crear para implementar la especificación de plantilla.
Mejora del formulario
En la sección anterior, agregó pasos y movió elementos, pero no cambió ninguno de los comportamientos predeterminados. En esta sección, realizará cambios que mejoran la experiencia de los usuarios de la especificación de plantilla.
Anteriormente, los dos campos de permisos eran cuadros de texto. Ahora, usará una lista desplegable. Establezca el tipo en Microsoft.Common.DropDown.
Estos campos deben pasar una matriz a la plantilla. Una lista desplegable normal no sirve porque solo le permite seleccionar un valor. Para seleccionar más de un valor y pasarlos como una matriz, agregue el campo multiselect y establézcalo en true.
Use construcciones avanzadas de Azure Resource Manager para administrar escenarios complejos, como el orden de implementación, las implementaciones condicionales y los secretos.
Se describe cómo implementar recursos en una plantilla de Azure Resource Manager. Se muestra cómo seleccionar más de un grupo de recursos como destino.
Describe cómo configurar la integración continua en Azure Pipelines mediante plantillas de Azure Resource Manager. Muestra cómo usar un script de PowerShell o copiar archivos en una ubicación de almacenamiento provisional e implementar desde allí.
Busque documentación de referencia para implementar recursos a través de Bicep, plantillas de Azure Resource Manager y proveedor AzAPI de Terraform. Muestra todos los tipos de recursos.