Partager via


Tutoriel : Créer des formulaires Portail Azure pour un spec de modèle

Vous pouvez créer un formulaire qui s’affiche dans le portail Azure pour aider les utilisateurs à déployer une spec de modèle. Le formulaire permet aux utilisateurs d’entrer des valeurs qui sont passées comme paramètres à la spec de modèle.

Lorsque vous créez le spec de modèle, vous empaquetez le formulaire et le modèle Azure Resource Manager (modèle ARM) ensemble. Le déploiement du spec de modèle via le portail lance automatiquement le formulaire.

La capture d’écran suivante montre un formulaire ouvert dans le portail Azure.

Capture d’écran du formulaire du Portail Azure pour fournir des valeurs à un spec de modèle.

Prérequis

Compte Azure avec un abonnement actif. Créez un compte gratuitement.

Pour Azure PowerShell, utilisez la version 6.0.0 ou ultérieure. Pour Azure CLI, utilisez la version 2.24.0 ou ultérieure.

Créer un modèle

Pour afficher les différents éléments du portail disponibles dans un formulaire, utilisez un modèle ARM avec plusieurs paramètres. Le modèle suivant crée un coffre de clés, configure les autorisations sur le coffre de clés pour un utilisateur et ajoute un secret.

Copiez ce fichier et enregistrez-le localement. Ce tutoriel suppose que vous l'avez nommé keyvault.json mais vous pouvez lui donner n'importe quel nom.

{
  "$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')]"
      }
    }
  ]
}

Créer un formulaire par défaut

Le portail Azure fournit un bac à sable pour la création et la prévisualisation de formulaires. Ce bac à sable peut afficher un formulaire à partir d’un modèle ARM existant. Utilisez ce formulaire par défaut pour commencer à créer un formulaire pour votre spécification de modèle. Pour plus d'informations sur la structure du formulaire, voir FormViewType.

  1. Ouvrez le bac à sable d’affichage de formulaire.

    Capture d’écran de l’interface de bac à sable d’affichage de formulaire du Portail Azure.

  2. Dans Type de package, sélectionnez CustomTemplate. Assurez-vous de sélectionner le type de package avant de spécifier le modèle de déploiement.

  3. Dans Modèle de déploiement (facultatif), sélectionnez le modèle de coffre de clés que vous avez enregistré localement. Lorsque vous y êtes invité, si vous souhaitez remplacer les modifications actuelles, sélectionnez Oui. Le formulaire généré automatiquement s’affiche dans la fenêtre de code. Vous pouvez modifier le formulaire depuis le portail. Pour personnaliser le formulaire, consultez Personnaliser le formulaire. Si vous regardez attentivement le formulaire généré automatiquement, le titre par défaut est Vue du formulaire de test. Il n'y a qu'une seule étape appelée les bases définie.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Test Form View",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                ...
              ]
            }
          ]
        },
        "outputs": {
          ...
        }
      }
    }
    
  4. Pour voir que cela fonctionne sans aucune modification, sélectionnez Aperçu.

    Capture d’écran du formulaire de base généré du Portail Azure.

    Le bac à sable affiche le formulaire. Il comporte des champs pour sélectionner un abonnement, un groupe de ressources et une région. Il contient également des champs pour tous les paramètres du modèle.

    La plupart des champs sont des zones de texte, mais certains champs sont spécifiques au type de paramètre. Lorsque votre modèle comprend des valeurs autorisées pour un paramètre, le formulaire généré automatiquement utilise une liste déroulante. La liste déroulante est préremplie avec les valeurs autorisées.

    Entre le titre et les détails du projet, il n'y a pas d'onglets car le formulaire par défaut n'a qu'une seule étape définie. Dans la section Personnaliser le formulaire, vous divisez les paramètres en plusieurs onglets.

    Avertissement

    Ne sélectionnez pas Créer car cela lance un véritable déploiement. Vous avez la possibilité de déployer la spécification du modèle plus tard dans ce didacticiel.

  5. Pour quitter l’aperçu, sélectionnez Annuler.

Personnaliser le formulaire

Le formulaire par défaut est un bon point de départ pour comprendre les formulaires, mais vous souhaitez généralement le personnaliser. Vous pouvez le modifier dans le bac à sable ou dans Visual Studio Code. L’option d’aperçu est uniquement disponible dans le bac à sable.

  1. Donnez au formulaire un titre qui décrit son utilisation.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
    
  2. Dans votre formulaire par défaut, tous les champs de votre modèle ont été regroupés en une seule étape appelée Basics. Pour aider les utilisateurs à comprendre les valeurs qu’ils fournissent, divisez le formulaire en étapes. Chaque étape contient des champs associés à une partie logique de la solution à déployer.

    Recherchez l’étape étiquetée Basics. Conservez cette étape, mais ajoutez des étapes axées sur la configuration du coffre-fort de clés, la définition des autorisations utilisateur et la spécification du secret. Ajoutez une virgule après l’étape de base.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                ...
              ]
            },
            {
              "name": "keyvault",
              "label": "Key Vault",
              "elements": [
              ]
            },
            {
              "name": "permissions",
              "label": "Permissions",
              "elements": [
              ]
            },
            {
              "name": "secret",
              "label": "Secret",
              "elements": [
              ]
            }
          ]
        },
        "outputs": {
          ...
        }
      }
    }
    

    Important

    Les propriétés du formulaire respectent la casse. Veillez à utiliser la casse indiquée dans les exemples.

  3. Sélectionnez Aperçu. Vous voyez les étapes, mais la plupart d’entre elles n’ont aucun élément.

    Capture d’écran du formulaire du Portail Azure avec plusieurs étapes.

  4. Déplacez les éléments vers les étapes appropriées. Commencez par les éléments étiquetés Secret Name et Secret Value. Supprimez ces éléments de l’étape Basics et ajoutez-les à l’étape Secret.

    {
      "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
        }
      ]
    }
    
  5. Lorsque vous déplacez des éléments, fixez la section outputs. Actuellement, la section outputs fait référence à ces éléments comme s’ils étaient toujours dans l’étape basics. Corrigez la syntaxe de manière à ce qu’elle fasse référence aux éléments de l’étape secret.

    "outputs": {
      "parameters": {
        ...
        "secretName": "[steps('secret').secretName]",
        "secretValue": "[steps('secret').secretValue]"
      }
    
  6. Continuez à déplacer les éléments vers les étapes appropriées. Plutôt que de parcourir chacun d’eux, regardez le formulaire mis à jour.

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form",
        "properties": {
          "title": "Key Vault and secret",
          "steps": [
            {
              "name": "basics",
              "label": "Basics",
              "elements": [
                {
                  "name": "resourceScope",
                  "type": "Microsoft.Common.ResourceScope",
                  "location": {
                    "resourceTypes": [
                      "microsoft.resources/resourcegroups"
                    ]
                  }
                }
              ]
            },
            {
              "name": "keyvault",
              "label": "Key Vault",
              "elements": [
                {
                  "name": "keyVaultName",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Key Vault Name",
                  "defaultValue": "",
                  "toolTip": "Specifies the name of the key vault.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "skuName",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Sku Name",
                  "defaultValue": "Standard",
                  "toolTip": "Specifies whether the key vault is a standard vault or a premium vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "Standard",
                        "value": "Standard"
                      },
                      {
                        "label": "Premium",
                        "value": "Premium"
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "location",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Location",
                  "defaultValue": "[[resourceGroup().location]",
                  "toolTip": "Specifies the Azure location where the key vault should be created.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "enabledForDeployment",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Deployment",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "enabledForDiskEncryption",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Disk Encryption",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                },
                {
                  "name": "enabledForTemplateDeployment",
                  "type": "Microsoft.Common.DropDown",
                  "label": "Enabled For Template Deployment",
                  "defaultValue": "false",
                  "toolTip": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.",
                  "constraints": {
                    "required": false,
                    "allowedValues": [
                      {
                        "label": "true",
                        "value": true
                      },
                      {
                        "label": "false",
                        "value": false
                      }
                    ]
                  },
                  "visible": true
                }
              ]
            },
            {
              "name": "permissions",
              "label": "Permissions",
              "elements": [
                {
                  "name": "tenantId",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Tenant Id",
                  "defaultValue": "[[subscription().tenantId]",
                  "toolTip": "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.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "objectId",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Object Id",
                  "defaultValue": "",
                  "toolTip": "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.",
                  "constraints": {
                    "required": true,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "keysPermissions",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Keys Permissions",
                  "defaultValue": "[[\"list\"]",
                  "toolTip": "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.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                },
                {
                  "name": "secretsPermissions",
                  "type": "Microsoft.Common.TextBox",
                  "label": "Secrets Permissions",
                  "defaultValue": "[[\"list\"]",
                  "toolTip": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.",
                  "constraints": {
                    "required": false,
                    "regex": "",
                    "validationMessage": ""
                  },
                  "visible": true
                }
              ]
            },
            {
              "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": {
          "parameters": {
            "keyVaultName": "[steps('keyvault').keyVaultName]",
            "location": "[steps('keyvault').location]",
            "enabledForDeployment": "[steps('keyvault').enabledForDeployment]",
            "enabledForDiskEncryption": "[steps('keyvault').enabledForDiskEncryption]",
            "enabledForTemplateDeployment": "[steps('keyvault').enabledForTemplateDeployment]",
            "tenantId": "[steps('permissions').tenantId]",
            "objectId": "[steps('permissions').objectId]",
            "keysPermissions": "[steps('permissions').keysPermissions]",
            "secretsPermissions": "[steps('permissions').secretsPermissions]",
            "skuName": "[steps('keyvault').skuName]",
            "secretName": "[steps('secret').secretName]",
            "secretValue": "[steps('secret').secretValue]"
          },
          "kind": "ResourceGroup",
          "location": "[steps('basics').resourceScope.location.name]",
          "resourceGroupId": "[steps('basics').resourceScope.resourceGroup.id]"
        }
      }
    }
    
  7. Enregistrez ce fichier localement sous le nom keyvaultform.json.

Créer une spec de modèle

Lorsque vous créez le spec de modèle, fournissez les deux fichiers.

Pour PowerShell, utilisez New-AzTemplateSpec et fournissez le formulaire dans le paramètre -UIFormDefinitionFile.

New-AzTemplateSpec `
  -name keyvaultspec `
  -version 1 `
  -ResourceGroupName templateSpecRG `
  -location westus2 `
  -templatefile keyvault.json `
  -UIFormDefinitionFile keyvaultform.json

Pour Azure CLI, utilisez az ts create et fournissez le formulaire dans le paramètre --ui-form-definition.

az ts create \
  --name keyvaultspec \
  --version 1 \
  --resource-group templatespecRG \
  --location westus2 \
  --template-file keyvault.json \
  --ui-form-definition keyvaultform.json

Déployer via le portail

Pour tester le formulaire, rendez-vous sur le portail et accédez à votre spec de modèle. Sélectionnez Déployer.

Capture d’écran de l’affichage d’une spec de modèle Azure avec l’option de déploiement mise en évidence.

Vous voyez le formulaire que vous avez créé. Suivez les étapes et fournissez des valeurs pour les champs.

À l’étape Principes De base, vous voyez un champ pour la Région. Ce champ concerne l'emplacement du groupe de ressources. À l’étape Key Vault, vous voyez un champ pour l’Emplacement. Ce champ concerne l'emplacement du coffre-fort à clés.

À l’étape Autorisations, indiquez votre ID utilisateur pour l’ID d’objet. Utilisez la valeur par défaut (["list"]) pour les autorisations de clé et de secret. Vous améliorez cette option dans la section suivante.

Une fois que vous avez terminé de fournir des valeurs, sélectionnez Créer pour déployer la spécification du modèle.

Améliorer le formulaire

Dans la section précédente, vous avez ajouté des étapes et déplacé des éléments, mais vous n’avez modifié aucun des comportements par défaut. Dans cette section, vous apportez des modifications qui améliorent l'expérience des utilisateurs de votre spécification de modèle.

Auparavant, les deux champs d’autorisations étaient des zones de texte. Maintenant, vous utilisez une liste déroulante. Définissez le type sur Microsoft.Common.DropDown.

Mettez à jour keysPermissions :

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",

Et secretsPermissions :

{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",

Ces champs doivent transmettre un tableau au modèle. Une liste déroulante classique ne fonctionne pas car elle ne vous permet de sélectionner qu'une seule valeur. Pour sélectionner plusieurs valeurs et les transmettre sous forme de tableau, ajoutez le champ multiselect et définissez-le sur true.

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Keys Permissions",
  "multiselect": true,
{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Secrets Permissions",
  "multiselect": true,

Enfin, spécifiez les valeurs autorisées pour la liste déroulante et une valeur par défaut.

{
  "name": "keysPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Keys Permissions",
  "multiselect": true,
  "defaultValue":{
    "value": "list"
  },
  "toolTip": "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.",
  "constraints": {
    "required": false,
    "allowedValues":[
      {
        "label": "all",
        "value": "all"
      },
      {
        "label": "encrypt",
        "value": "encrypt"
      },
      {
        "label": "decrypt",
        "value": "decrypt"
      },
      {
        "label": "list",
        "value": "list"
      },
      {
        "label": "delete",
        "value": "delete"
      },
      {
        "label": "backup",
        "value": "backup"
      },
      {
        "label": "restore",
        "value": "restore"
      },
      {
        "label": "recover",
        "value": "recover"
      },
      {
        "label": "purge",
        "value": "purge"
      },
      {
        "label": "wrapKey",
        "value": "wrapKey"
      },
      {
        "label": "unwrapKey",
        "value": "unwrapKey"
      },
      {
        "label": "sign",
        "value": "sign"
      },
      {
        "label": "verify",
        "value": "verify"
      },
      {
        "label": "get",
        "value": "get"
      },
      {
        "label": "create",
        "value": "create"
      },
      {
        "label": "update",
        "value": "update"
      },
      {
        "label": "import",
        "value": "import"
      }
    ]
  },
  "visible": true
},
{
  "name": "secretsPermissions",
  "type": "Microsoft.Common.DropDown",
  "label": "Secrets Permissions",
  "multiselect": true,
  "defaultValue":{
    "value": "list"
  },
  "toolTip": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge.",
  "constraints": {
    "required": false,
    "allowedValues":[
      {
        "label": "all",
        "value": "all"
      },
      {
        "label": "get",
        "value": "get"
      },
      {
        "label": "list",
        "value": "list"
      },
      {
        "label": "set",
        "value": "set"
      },
      {
        "label": "delete",
        "value": "delete"
      },
      {
        "label": "backup",
        "value": "backup"
      },
      {
        "label": "restore",
        "value": "restore"
      },
      {
        "label": "recover",
        "value": "recover"
      },
      {
        "label": "purge",
        "value": "purge"
      }
    ]
  },
  "visible": true
}

Créez une nouvelle version du spec de modèle.

Avec PowerShell :

New-AzTemplateSpec `
  -name keyvaultspec `
  -version 2 `
  -ResourceGroupName templateSpecRG `
  -location westus2 `
  -templatefile keyvault.json `
  -UIFormDefinitionFile keyvaultform.json

Ou Azure CLI :

az ts create \
  --name keyvaultspec \
  --version 2 \
  --resource-group templatespecRG \
  --location westus2 \
  --template-file keyvault.json \
  --ui-form-definition keyvaultform.json

Redéployez votre spec de modèle avec le formulaire de portail amélioré.

Capture d’écran du formulaire du Portail Azure pour fournir des valeurs à une spec de modèle.

Notez que vos champs d’autorisation sont désormais des listes déroulantes qui autorisent plusieurs valeurs.

Étapes suivantes

Pour découvrir le déploiement d’une spec de modèle en tant que modèle lié, consultez Tutoriel : Déployer une spec de modèle en tant que modèle lié.