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.
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:
- Estrutura de ficheiros de modelo: Condição.
- Implementar condicionalmente um recurso num modelo do ARM.
- Função de modelo: Se.
- Funções de comparação para modelos arm
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:
Visual Studio Code com extensão Ferramentas do Resource Manager. Veja Início Rápido: Criar modelos do ARM com o Visual Studio Code.
Para aumentar a segurança, utilize uma palavra-passe gerada para a conta de administrador da máquina virtual. Pode utilizar 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 criado para salvaguardar chaves criptográficos e outros segredos. Para obter mais informações, veja Tutorial: Integrar o Azure Key Vault na implementação de modelos do ARM. Também recomendamos que atualize a palavra-passe 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 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.
No Visual Studio Code, selecione Ficheiro>Abrir Ficheiro.
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
Selecione Abrir para abrir o ficheiro.
Existem seis recursos definidos pelo modelo:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
É útil rever a referência do modelo antes de personalizar um modelo.
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:
Abra azuredeploy. JSON no Visual Studio Code.
Substitua os três
variables('storageAccountName')
porparameters('storageAccountName')
em todo o modelo.Remova a definição de variável seguinte:
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:
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:
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.
Guarde as alterações.
Implementar o modelo
Inicie sessão no Cloud Shell.
Escolha o seu ambiente preferido ao selecionar PowerShell ou Bash (para a CLI) no canto superior esquerdo. É necessário reiniciar o Shell quando mudar.
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 ocat
comando para verificar se o ficheiro foi carregado com êxito.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: