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.
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:
- Estrutura de arquivos de modelo: Condição.
- Implantar condicionalmente um recurso em um modelo do ARM.
- Função de modelo: If.
- Funções de comparação para modelos do ARM
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:
Visual Studio Code com a extensão de Ferramentas do Resource Manager. Confira Início Rápido: Criar modelos do ARM com o Visual Studio Code.
Para aumentar a segurança, use uma senha gerada para a conta de administrador da máquina virtual. Você pode usar 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 é projetado para proteger chaves de criptografia e outros segredos. Para saber mais, confira 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
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.
No Visual Studio Code, escolha Arquivo>Abrir Arquivo.
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
Escolha Abrir para abrir o arquivo.
Há seis recursos definidos pelo modelo:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
É útil examinar a referência do modelo antes de personalizar um modelo.
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:
Abra azuredeploy.json no Visual Studio Code.
Substitua as três
variables('storageAccountName')
porparameters('storageAccountName')
em todo o modelo.Remova as declarações de variável a seguir:
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:
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:
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.
Salve as alterações.
Implantar o modelo
Entrar no Cloud Shell.
Escolha seu ambiente preferencial selecionando PowerShell ou Bash (para a CLI) no canto superior esquerdo. Ao alternar, é necessário reiniciar o shell.
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
ecat
para verificar se o arquivo foi carregado com êxito.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: