Tutorial: Usar condição em modelos do ARM

Saiba como implantar recursos do Azure com base em condições em um modelo do ARM (modelo do Azure Resource Manager).

No tutorial Definir ordem de implantação de recursos, você criará uma máquina virtual, uma rede virtual e alguns outros recursos dependentes, incluindo uma conta de armazenamento. Em vez de criar uma nova conta de armazenamento todas as vezes, você permitirá que as pessoas escolham entre criar uma nova conta de armazenamento e usar uma conta de armazenamento existente. Para isso, você definirá um parâmetro adicional. Se o valor do parâmetro for new, uma conta de armazenamento será criada. Caso contrário, uma conta de armazenamento existente com o nome fornecido é usada.

Diagrama de condição de uso do modelo do Resource Manager

Este tutorial cobre as seguintes tarefas:

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

Este tutorial aborda apenas um cenário básico de como usar as condições. Para obter mais informações, consulte:

Para acessar um módulo do Learn que aborda as condições, confira Gerenciar implantações de nuvem complexas usando recursos avançados de modelo do ARM.

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

Pré-requisitos

Para concluir este artigo, você precisa do seguinte:

Abrir um modelo de Início Rápido

Modelos de Início Rápido do Azure é um repositório de modelos do ARM. Em vez de criar um modelo do zero, você pode encontrar um exemplo de modelo e personalizá-lo. O modelo usado neste tutorial é chamado Implantar uma VM Windows simples.

  1. No Visual Studio Code, escolha Arquivo>Abrir Arquivo.

  2. Em Nome do arquivo, cole a seguinte URL:

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

  4. Há seis recursos definidos pelo modelo:

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

  5. Selecione Arquivo>Salvar como para salvar uma cópia do arquivo no computador local com o nome azuredeploy.json.

Modificar o modelo

Faça duas alterações no modelo existente:

  • Adicione um parâmetro de nome da conta de armazenamento. Os usuários podem especificar um nome de conta de armazenamento novo ou existente.
  • Adicione um novo parâmetro chamado newOrExisting. A implantação usa esse parâmetro para determinar se uma nova conta de armazenamento será criada ou uma conta de armazenamento existente será usada.

Aqui está o procedimento para fazer as alterações:

  1. Abra azuredeploy.json no Visual Studio Code.

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

  3. Remova as declarações de variável a seguir:

    Captura de tela que realça as definições de variáveis que você precisa remover.

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

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

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

    A definição dos parâmetros atualizados ficará assim:

    Condição de uso do Resource Manager

  5. Adicione a seguinte linha no início da definição da 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, a implantação criará a conta de armazenamento.

    A definição da conta de armazenamento atualizada será assim:

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

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

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

    Essa alteração é necessária quando você usa uma conta de armazenamento existente em um grupo de recursos diferentes.

  7. Salve as alterações.

Implantar o modelo

  1. Entrar no Cloud Shell.

  2. Escolha seu ambiente preferencial selecionando PowerShell ou Bash (para a CLI) no canto superior esquerdo. Ao alternar, é necessário reiniciar o shell.

    Carregar arquivo do Cloud Shell no portal do Azure

  3. Escolha Carregar/fazer o download dos arquivos e, em seguida, escolha Carregar. Consulte a captura de tela anterior. Selecione o arquivo que você salvou na seção anterior. Depois de carregar o arquivo, use os comandos ls e cat para verificar se o arquivo foi carregado com êxito.

  4. Execute o script do PowerShell a seguir para implantar o modelo.

    Importante

    O nome da conta de armazenamento deve ser exclusivo no Azure. O nome deve ter apenas letras minúsculas ou números. Ele não pode ter mais de 24 caracteres. O nome de conta de armazenamento é o nome do projeto acrescentado de store. Verifique se o nome do projeto e o nome da conta de armazenamento gerada atendem aos 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 ..."
    

    Observação

    A implantação falhará se newOrExisting for new, mas a conta de armazenamento com o nome da conta de armazenamento especificado já existir.

Tente criar outra implantação com newOrExisting definido como existing e especifique uma conta de armazenamento existente. Para criar uma conta de armazenamento com antecedência, confira Criar uma conta de armazenamento.

Limpar os recursos

Quando os recursos do Azure já não forem necessários, limpe os recursos implantados excluindo o grupo de recursos. Para excluir o grupo de recursos, selecione Testar para abrir o Cloud Shell. Para colar o script do PowerShell, clique com o botão direito do mouse no painel do 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 ..."

Próximas etapas

Neste tutorial, você desenvolveu um modelo que permite aos usuários escolher entre criar uma nova conta de armazenamento e usar uma conta de armazenamento existente. Para saber como recuperar segredos do Azure Key Vault e usá-los como senhas na implantação de modelo, confira: