Compartilhar via


Tutorial: Usar a condição em modelos do ARM

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

No tutorial Definir ordem de implantação de recursos , você cria 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ê permite que as pessoas escolham entre criar uma nova conta de armazenamento e usar uma conta de armazenamento existente. Para atingir essa meta, você define um parâmetro adicional. Se o valor do parâmetro for novo, uma nova 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 aborda 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 uso de condições. Para obter mais informações, consulte:

Para obter um módulo do Learn que abrange condições, consulte 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:

  • Visual Studio Code.

  • Para aumentar a segurança, use uma senha gerada para a conta de administrador da máquina virtual. Você pode usar o Azure Cloud Shell para executar o seguinte comando no PowerShell ou bash:

    openssl rand -base64 32
    

    Para saber mais, execute man openssl rand para abrir a página manual.

    O Azure Key Vault foi projetado para proteger chaves criptográficas e outros segredos. Para obter mais informações, consulte Tutorial: Integrar o Azure Key Vault na implantação de modelo do ARM. Também recomendamos que você atualize sua senha a cada três meses.

Abrir um modelo de Início Rápido

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

  1. No Visual Studio Code, selecione Arquivo>Aberto arquivo.

  2. No 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. Selecione Abrir para abrir o arquivo.

  4. Há seis recursos definidos pelo modelo:

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

  5. Selecione Salvar Arquivo>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 de conta de armazenamento. Os usuários podem especificar um novo nome de conta de armazenamento ou um nome de conta de armazenamento existente.
  • Adicionar um novo parâmetro chamado newOrExisting. A implantação usa esse parâmetro para determinar se uma nova conta de armazenamento deve ser criada ou usar 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') no modelo inteiro.

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

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

  4. Adicione os dois parâmetros a seguir 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 de parâmetros atualizados é semelhante a:

    Condição de uso do Resource Manager

  5. Adicione a linha a seguir ao 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 novo, a implantação criará a conta de armazenamento.

    A definição da conta de armazenamento atualizada tem a seguinte aparência:

    Captura de tela 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'))]"
    

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

  7. Salve as alterações.

Implantar o modelo

  1. Entre no Cloud Shell.

  2. Escolha seu ambiente preferido selecionando o PowerShell ou o Bash (para CLI) no canto superior esquerdo. A reinicialização do shell é necessária quando você alterna.

    Arquivo de upload do Cloud Shell do portal do Azure

  3. Selecione Carregar/baixar arquivos e, em seguida, selecione Carregar. Confira a captura de tela anterior. Selecione o arquivo salvo na seção anterior. Depois de carregar o arquivo, você pode usar o ls comando e o cat comando 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. Não pode ter mais de 24 caracteres. O nome da conta de armazenamento é o nome do projeto com o repositório acrescentado. Verifique se o nome do projeto e o nome da conta de armazenamento gerado 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 fazer outra implantação com newOrExisting definido como existente e especifique uma conta de armazenamento existente. Para criar uma conta de armazenamento com antecedência, consulte Criar uma conta de armazenamento.

Limpar os recursos

Quando os recursos do Azure não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos. Para excluir o grupo de recursos, selecione Experimentar para abrir o Cloud Shell. Para colar o script do PowerShell, clique com o botão direito do mouse no painel do shell e 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 que os usuários escolham entre criar uma nova conta de armazenamento e usar uma conta de armazenamento existente. Para saber como recuperar segredos do Azure Key Vault e usar os segredos como senhas na implantação do modelo, consulte: