CreateUiDefinition.json para experiência de criação de aplicação gerida do Azure

Este documento apresenta os principais conceitos do ficheiro createUiDefinition.json . O portal do Azure utiliza este ficheiro para definir a interface de utilizador ao criar uma aplicação gerida.

O modelo é o seguinte

{
    "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
    "handler": "Microsoft.Azure.CreateUIDef",
    "version": "0.1.2-preview",
    "parameters": {
        "config": {
            "isWizard": false,
            "basics": { }
        },
        "basics": [ ],
        "steps": [ ],
        "outputs": { },
        "resourceTypes": [ ]
    }
}

A CreateUiDefinition contém sempre três propriedades:

  • processador
  • versão
  • parâmetros

O processador deve ser Microsoft.Azure.CreateUIDefsempre e a versão suportada mais recente é 0.1.2-preview.

O esquema da propriedade parameters depende da combinação do processador e da versão especificados. Para aplicações geridas, as propriedades suportadas são config, basics, stepse outputs. config Utilize apenas quando precisar de substituir o comportamento predefinido do basics passo. As propriedades básicas e passos contêm os elementos , como caixas de texto e listas pendentes, a serem apresentados no portal do Azure. A propriedade outputs é utilizada para mapear os valores de saída dos elementos especificados para os parâmetros do modelo de Resource Manager do Azure.

A inclusão $schema é recomendada, mas opcional. Se especificado, o valor de version tem de corresponder à versão no $schema URI.

Pode utilizar um editor JSON para criar a sua createUiDefinition e, em seguida, testá-la no Sandbox createUiDefinition para pré-visualizar. Para obter mais informações sobre o sandbox, veja Testar a interface do portal das Aplicações Geridas do Azure.

Configurar

A config propriedade é opcional. Utilize-o para substituir o comportamento predefinido do passo básico ou para definir a sua interface como um assistente passo a passo. Se config for utilizado, é a primeira propriedade na secção do parameters ficheiro createUiDefinition.json. O exemplo seguinte mostra as propriedades disponíveis.

"config": {
    "isWizard": false,
    "basics": {
        "description": "Customized description with **markdown**, see [more](https://www.microsoft.com).",
        "subscription": {
            "constraints": {
                "validations": [
                    {
                        "isValid": "[not(contains(subscription().displayName, 'Test'))]",
                        "message": "Can't use test subscription."
                    },
                    {
                        "permission": "Microsoft.Compute/virtualmachines/write",
                        "message": "Must have write permission for the virtual machine."
                    },
                    {
                        "permission": "Microsoft.Compute/virtualMachines/extensions/write",
                        "message": "Must have write permission for the extension."
                    }
                ]
            },
            "resourceProviders": [
                "Microsoft.Compute"
            ]
        },
        "resourceGroup": {
            "constraints": {
                "validations": [
                    {
                        "isValid": "[not(contains(resourceGroup().name, 'test'))]",
                        "message": "Resource group name can't contain 'test'."
                    }
                ]
            },
            "allowExisting": true
        },
        "location": {
            "label": "Custom label for location",
            "toolTip": "provide a useful tooltip",
            "resourceTypes": [
                "Microsoft.Compute/virtualMachines"
            ],
            "allowedValues": [
                "eastus",
                "westus2"
            ],
            "visible": true
        }
    }
},

Para a isValid propriedade , escreva uma expressão que resolva como verdadeira ou falsa. Para a permission propriedade , especifique uma das ações do fornecedor de recursos.

Assistente

A isWizard propriedade permite-lhe exigir uma validação bem-sucedida de cada passo antes de avançar para o passo seguinte. Quando a isWizard propriedade não é especificada, a predefinição é falsa e a validação passo a passo não é necessária.

Quando isWizard estiver ativado, definido como verdadeiro, o separador Informações Básicas está disponível e todos os outros separadores são desativados. Quando o botão Seguinte é selecionado, o ícone do separador indica se a validação de um separador foi aprovada ou falhou. Depois de os campos necessários de um separador serem concluídos e validados, o botão Seguinte permite a navegação para o separador seguinte. Quando todos os separadores passarem a validação, pode aceder à página Rever e Criar e selecionar o botão Criar para iniciar a implementação.

Assistente de tabulações

Noções básicas sobre substituição

A configuração básica permite-lhe personalizar o passo básico.

Para description, forneça uma cadeia com markdown ativada que descreva o recurso. O formato e as ligações de várias linhas são suportados.

Os subscription elementos e resourceGroup permitem-lhe especificar mais validações. A sintaxe para especificar validações é idêntica à validação personalizada da caixa de texto. Também pode especificar permission validações na subscrição ou no grupo de recursos.

O controlo de subscrição aceita uma lista de espaços de nomes do fornecedor de recursos. Por exemplo, pode especificar Microsoft.Compute. Mostra uma mensagem de erro quando o utilizador seleciona uma subscrição que não suporta o fornecedor de recursos. O erro ocorre quando o fornecedor de recursos não está registado nessa subscrição e o utilizador não tem permissão para registar o fornecedor de recursos.

O controlo do grupo de recursos tem uma opção para allowExisting. Quando true, os utilizadores podem selecionar grupos de recursos que já têm recursos. Este sinalizador é mais aplicável a modelos de solução, em que o comportamento predefinido obriga os utilizadores a selecionar um grupo de recursos novo ou vazio. Na maioria dos outros cenários, não é necessário especificar esta propriedade.

Para location, especifique as propriedades do controlo de localização que pretende substituir. Todas as propriedades não substituídas são definidas para os respetivos valores predefinidos. resourceTypes aceita uma matriz de cadeias que contêm nomes de tipos de recursos completamente qualificados. As opções de localização estão restritas apenas a regiões que suportam os tipos de recursos. allowedValues aceita uma matriz de cadeias de região. Apenas essas regiões aparecem na lista pendente. Pode definir e allowedValuesresourceTypes. O resultado é a interseção de ambas as listas. Por fim, a visible propriedade pode ser utilizada para desativar condicional ou completamente a lista pendente de localização. 

Noções básicas

O passo Básico é o primeiro passo gerado quando o portal do Azure analisa o ficheiro. Por predefinição, o passo básico permite que os utilizadores escolham a subscrição, o grupo de recursos e a localização para a implementação.

Noções básicas predefinidas

Pode adicionar mais elementos nesta secção. Sempre que possível, adicione elementos que consultam parâmetros ao nível da implementação, como o nome de um cluster ou credenciais de administrador.

O exemplo seguinte mostra uma caixa de texto que foi adicionada aos elementos predefinidos.

"basics": [
    {
        "name": "textBox1",
        "type": "Microsoft.Common.TextBox",
        "label": "Textbox on basics",
        "defaultValue": "my text value",
        "toolTip": "",
        "visible": true
    }
]

Passos

A propriedade steps contém zero ou mais passos a apresentar após as noções básicas. Cada passo contém um ou mais elementos. Considere adicionar passos por função ou camada da aplicação que está a ser implementada. Por exemplo, adicione um passo para entradas de nós primários e um passo para os nós de trabalho num cluster.

"steps": [
    {
        "name": "demoConfig",
        "label": "Configuration settings",
        "elements": [
          ui-elements-needed-to-create-the-instance
        ]
    }
]

Saídas

O portal do Azure utiliza a outputs propriedade para mapear elementos de basics e steps para os parâmetros do modelo de implementação Resource Manager do Azure. As chaves deste dicionário são os nomes dos parâmetros do modelo e os valores são propriedades dos objetos de saída dos elementos referenciados.

Para definir o nome do recurso da aplicação gerida, tem de incluir um valor com o nome applicationResourceName na propriedade outputs. Se não definir este valor, a aplicação atribui um GUID para o nome. Pode incluir uma caixa de texto na interface de utilizador que pede um nome ao utilizador.

"outputs": {
    "vmName": "[steps('appSettings').vmName]",
    "trialOrProduction": "[steps('appSettings').trialOrProd]",
    "userName": "[steps('vmCredentials').adminUsername]",
    "pwd": "[steps('vmCredentials').vmPwd.password]",
    "applicationResourceName": "[steps('appSettings').vmName]"
}

Tipos de recurso

Para filtrar as localizações disponíveis apenas para as localizações que suportam os tipos de recursos a implementar, forneça uma matriz dos tipos de recursos. Se fornecer mais do que um tipo de recurso, só são devolvidas as localizações que suportam todos os tipos de recursos. Esta propriedade é opcional.

{
    "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
    "handler": "Microsoft.Azure.CreateUIDef",
    "version": "0.1.2-preview",
    "parameters": {
        "resourceTypes": ["Microsoft.Compute/disks"],
        "basics": [
          ...

Funções

CreateUiDefinition fornece funções para trabalhar com entradas e saídas de elementos, e funcionalidades como condicionais. Estas funções são semelhantes tanto na sintaxe como na funcionalidade das funções de modelo Resource Manager do Azure.

Passos seguintes

O próprio ficheiro createUiDefinition.json tem um esquema simples. A profundidade real da mesma provém de todos os elementos e funções suportados. Estes itens são descritos com maior detalhe em:

Está disponível um esquema JSON atual para createUiDefinition aqui: https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json.

Para obter um ficheiro de interface de utilizador de exemplo, veja createUiDefinition.json.