Tutorial: Utilizar uma condição nos modelos do ARM

Saiba como implementar recursos do Azure com base em condições num modelo de Resource Manager do Azure (modelo arm).

No tutorial Definir a ordem de implementação de recursos, cria uma máquina virtual, uma rede virtual e alguns outros recursos dependentes, incluindo uma conta de armazenamento. Em vez de criar sempre uma nova conta de armazenamento, permite que as pessoas optem entre criar uma nova conta de armazenamento e utilizar uma conta de armazenamento existente. Para alcançar este objetivo, tem de definir um parâmetro adicional. Se o valor do parâmetro for novo, será criada uma nova conta de armazenamento. Caso contrário, é utilizada uma conta de armazenamento existente com o nome fornecido.

Resource Manager diagrama de condição de utilização do modelo

Este tutorial abrange as seguintes tarefas:

  • Abrir um modelo de Início Rápido
  • Modificar o modelo
  • Implementar o modelo
  • Limpar os recursos

Este tutorial abrange apenas um cenário básico de utilização de condições. Para obter mais informações, consulte:

Para um módulo do Learn que abrange as condições, veja Gerir implementações de cloud complexas através de funcionalidades avançadas do modelo arm.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

Para concluir este artigo, precisa de:

Abrir um modelo de Início Rápido

Os Modelos de Início Rápido do Azure são um repositório para modelos arm. Em vez de criar um modelo do zero, pode encontrar um modelo de exemplo e personalizá-lo. O modelo utilizado neste tutorial é denominado Implementar uma VM do Windows simples.

  1. No Visual Studio Code, selecione Ficheiro>Abrir Ficheiro.

  2. em Nome de ficheiro, cole o seguinte URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Selecione Abrir para abrir o ficheiro.

  4. Existem seis recursos definidos pelo modelo:

    É útil rever a referência do modelo antes de personalizar um modelo.

  5. Selecione Ficheiro>Guardar Como para guardar uma cópia do ficheiro no seu computador local com o nome azuredeploy.json.

Modificar o modelo

Introduza duas alterações ao modelo existente:

  • Adicionar um parâmetro do nome da conta de armazenamento. Os utilizadores podem especificar um novo nome da conta de armazenamento ou um nome da conta de armazenamento existente.
  • Adicione um novo parâmetro chamado newOrExisting. A implementação utiliza este parâmetro para determinar se pretende criar uma nova conta de armazenamento ou utilizar uma conta de armazenamento existente.

Este é o procedimento para fazer as alterações:

  1. Abra azuredeploy. JSON no Visual Studio Code.

  2. Substitua os três variables('storageAccountName') por parameters('storageAccountName') em todo o modelo.

  3. Remova a definição de variável seguinte:

    Captura de ecrã que realça as definições de variáveis que precisa de remover.

  4. Adicione os dois parâmetros seguintes ao início da secção de parâmetros:

    "storageAccountName": {
      "type": "string"
    },
    "newOrExisting": {
      "type": "string",
      "allowedValues": [
        "new",
        "existing"
      ]
    },
    

    Prima Alt+Shift+F para formatar o modelo no Visual Studio Code.

    A definição de parâmetros atualizada assemelha-se a:

    Condição de utilização do Resource Manager

  5. Adicione a linha seguinte ao início da definição de conta de armazenamento.

    "condition": "[equals(parameters('newOrExisting'),'new')]",
    

    A condição verifica o valor do parâmetro newOrExisting. Se o valor do parâmetro for New (novo), a implementação cria a conta de armazenamento.

    A definição de conta de armazenamento atualizada assemelha-se a:

    Captura de ecrã que mostra a definição da conta de armazenamento atualizada.

  6. Atualize a storageUri propriedade da definição de recurso da máquina virtual com o seguinte valor:

    "storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
    

    Esta alteração é necessária quando utiliza uma conta de armazenamento existente num grupo de recursos diferente.

  7. Guarde as alterações.

Implementar o modelo

  1. Inicie sessão no Cloud Shell.

  2. Escolha o seu ambiente preferido ao selecionar PowerShell ou Bash (para a CLI) no canto superior esquerdo. É necessário reiniciar o Shell quando mudar.

    portal do Azure Cloud Shell carregar ficheiro

  3. Selecione Carregar/transferir ficheiros e, em seguida, selecione Carregar. Veja a captura de ecrã anterior. Selecione o ficheiro que guardou na secção anterior. Depois de carregar o ficheiro, pode utilizar o ls comando e o cat comando para verificar se o ficheiro foi carregado com êxito.

  4. Execute o seguinte script do PowerShell para implementar o modelo.

    Importante

    O nome da conta do Storage tem de ser exclusivo em todo o Azure. O nome tem de ter apenas letras minúsculas ou números. Não pode ter mais de 24 carateres. O nome da conta de armazenamento é o nome do projeto com a loja anexada. Certifique-se de que o nome do projeto e o nome da conta de armazenamento gerado cumprem os requisitos de nome da conta de armazenamento.

    $projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names"
    $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)"
    $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)"
    $vmAdmin = Read-Host -Prompt "Enter the admin username"
    $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString
    $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix"
    
    $resourceGroupName = "${projectName}rg"
    $storageAccountName = "${projectName}store"
    
    New-AzResourceGroup -Name $resourceGroupName -Location $location
    New-AzResourceGroupDeployment `
        -ResourceGroupName $resourceGroupName `
        -adminUsername $vmAdmin `
        -adminPassword $vmPassword `
        -dnsLabelPrefix $dnsLabelPrefix `
        -storageAccountName $storageAccountName `
        -newOrExisting $newOrExisting `
        -TemplateFile "$HOME/azuredeploy.json"
    
    Write-Host "Press [ENTER] to continue ..."
    

    Nota

    A implementação falha se newOrExisting for nova, mas a conta de armazenamento com o nome da conta de armazenamento especificado já existe.

Tente efetuar outra implementação com newOrExisting definida como existente e especifique uma conta de armazenamento existente. Para criar uma conta do armazenamento antecipadamente, consulte Criar uma conta de armazenamento.

Limpar os recursos

Quando os recursos do Azure já não forem necessários, limpe os recursos implementados ao eliminar o grupo de recursos. Para eliminar o grupo de recursos, selecione Experimentar para abrir o Cloud Shell. Para colar o script do PowerShell, clique com o botão direito do rato no painel da shell e, em seguida, selecione Colar.

$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

Write-Host "Press [ENTER] to continue ..."

Passos seguintes

Neste tutorial, desenvolveu um modelo que permite que os utilizadores optem entre criar uma conta de armazenamento nova e utilizar uma conta de armazenamento existente. Para saber como obter segredos a partir do Azure Key Vault e utilizá-los como palavras-passe na implementação do modelo, veja: