Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo explica como usar o CLI do Azure com templates do Azure Resource Manager (templates ARM) para implementar os seus recursos no Azure. Se não estiver familiarizado com os conceitos de implementação e gestão das suas soluções Azure, consulte visão geral da implementação de modelos.
Os comandos de implementação mudaram na versão 2.2.0 do CLI do Azure. Os exemplos neste artigo exigem CLI do Azure versão 2.20.0 ou posterior.
Para executar este exemplo, instale a versão mais recente do CLI do Azure. Para começar, executa az login para criar uma ligação com Azure.
Os exemplos para o CLI do Azure são escritos para o shell bash. Para executar este exemplo no PowerShell do Windows ou no Prompt de Comandos, pode ser necessário alterar elementos do script.
Se não tiver o CLI do Azure instalado, pode usar o Azure Cloud Shell. Para mais informações, consulte Implementar templates ARM a partir do Azure Cloud Shell.
Gorjeta
Recomendamos o Bicep porque oferece as mesmas capacidades dos templates ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte Como implementar recursos com Bicep e CLI do Azure.
Pré-requisitos
Permissões obrigatórias
Para implementar um ficheiro Bicep ou um modelo Azure Resource Manager (ARM), precisa de permissões de escrita nos recursos que está a implementar e acesso a todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implementar uma máquina virtual, precisa de permissões Microsoft.Compute/virtualMachines/write e Microsoft.Resources/deployments/*. A operação hipotética tem os mesmos requisitos de permissão.
CLI do Azure versão 2.76.0 ou posterior e Azure PowerShell versão 13.4.0 ou posterior introduzem o interruptor ValidationLevel para determinar quão completamente o ARM valida o modelo de Bicep durante este processo. Para obter mais informações, consulte Comandos hipotéticos
Para uma lista de funções e permissões, veja Azure funções incorporadas.
Âmbito da implementação
Pode direcionar o seu modelo de implementação do Azure para um grupo de recursos, subscrição, grupo de gestão ou inquilino. Dependendo do escopo da implantação, você usa comandos diferentes.
Para implantar em um grupo de recursos, use az deployment group create:
az deployment group create --resource-group <resource-group-name> --template-file <path-to-template>Para implantar numa assinatura, use az deployment sub create:
az deployment sub create --location <location> --template-file <path-to-template>Para obter mais informações sobre implantações no nível de assinatura, consulte Criar grupos de recursos e recursos no nível de assinatura.
Para implantar em um grupo de gerenciamento, use az deployment mg create:
az deployment mg create --location <location> --template-file <path-to-template>Para obter mais informações sobre implantações no nível do grupo de gerenciamento, consulte Criar recursos no nível do grupo de gerenciamento.
Para implantar em um locatário, use az deployment tenant create:
az deployment tenant create --location <location> --template-file <path-to-template>Para obter mais informações sobre implantações no nível do locatário, consulte Criar recursos no nível do locatário.
Para cada escopo, o usuário que implanta o modelo deve ter as permissões necessárias para criar recursos.
Implementar um modelo local
Você pode implantar um modelo ARM de sua máquina local ou um que é armazenado externamente. Esta seção descreve a implantação de um modelo local.
Caso estejas a implementar num grupo de recursos que ainda não existe, cria o grupo de recursos. O nome do grupo de recursos só pode incluir caracteres alfanuméricos, pontos, sublinhados, hífenes e parênteses. Pode ter até 90 caracteres. O nome não pode terminar em ponto final.
az group create --name ExampleGroup --location "Central US"
Para implantar um modelo local, use o --template-file parâmetro no comando deployment. O exemplo a seguir também mostra como definir um valor de parâmetro.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file <path-to-template> \
--parameters storageAccountType=Standard_GRS
O valor do parâmetro --template-file deve ser um ficheiro Bicep ou um ficheiro .json ou .jsonc. A .jsonc extensão do arquivo indica que o arquivo pode conter // comentários de estilo. O sistema ARM aceita comentários // em ficheiros .json. Ele não se importa com a extensão do arquivo. Para obter mais detalhes sobre comentários e metadados, consulte Compreender a estrutura e a sintaxe dos modelos ARM.
O modelo de implementação do Azure pode demorar alguns minutos a ser concluído. Quando terminar, você verá uma mensagem que inclui o resultado:
"provisioningState": "Succeeded",
Implantar modelo remoto
Em vez de armazenar modelos ARM em sua máquina local, você pode preferir armazená-los em um local externo. Podes armazenar modelos num repositório de controlo de versões (como o GitHub). Ou pode armazená-las numa conta de armazenamento Azure para acesso partilhado na sua organização.
Nota
Para implementar um template ou referenciar um template ligado que está armazenado num repositório privado de GitHub, consulte uma solução personalizada documentada em Creating a Custom and Secure portal do Azure Offering. Podes criar uma função Azure que puxa o token GitHub de Azure Key Vault.
Caso estejas a implementar num grupo de recursos que ainda não existe, cria o grupo de recursos. O nome do grupo de recursos só pode incluir caracteres alfanuméricos, pontos, sublinhados, hífenes e parênteses. Pode ter até 90 caracteres. O nome não pode terminar em ponto final.
az group create --name ExampleGroup --location "Central US"
Para implementar um modelo externo, utilize o parâmetro template-uri.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
O exemplo anterior requer um URI acessível publicamente para o modelo, que funciona para a maioria dos cenários porque seu modelo não deve incluir dados confidenciais. Se você precisar especificar dados confidenciais (como uma senha de administrador), passe esse valor como um parâmetro seguro. No entanto, se você quiser gerenciar o acesso ao modelo, considere usar as especificações do modelo.
Para implantar modelos vinculados remotos com caminho relativo armazenados em uma conta de armazenamento, use query-string para especificar o token SAS:
az deployment group create \
--name linkedTemplateWithRelativePath \
--resource-group myResourceGroup \
--template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
--query-string $sasToken
Para obter mais informações, consulte Usar caminho relativo para modelos vinculados.
Nome do modelo de implantação Azure
Ao implementar um template ARM, pode dar um nome ao template de implantação do Azure. Esse nome pode ajudá-lo a recuperar a implantação a partir do histórico de implantação. Se você não fornecer um nome para a implantação, o nome do arquivo de modelo será usado. Por exemplo, se você implantar um modelo chamado azuredeploy.json e não especificar um nome de implantação, a implantação será nomeada azuredeploy.
Sempre que você executa uma implantação, uma entrada é adicionada ao histórico de implantação do grupo de recursos com o nome da implantação. Se você executar outra implantação e lhe der o mesmo nome, a entrada anterior será substituída pela implantação atual. Se você quiser manter entradas exclusivas no histórico de implantação, dê a cada implantação um nome exclusivo.
Para criar um nome exclusivo, você pode atribuir um número aleatório.
deploymentName='ExampleDeployment'$RANDOM
Ou adicione um valor de data.
deploymentName='ExampleDeployment'$(date +"%d-%b-%Y")
Se você executar implantações simultâneas no mesmo grupo de recursos com o mesmo nome de implantação, somente a última implantação será concluída. Todas as implantações com o mesmo nome que não foram concluídas são substituídas pela última implantação. Por exemplo, se você executar uma implantação nomeada newStorage que implanta uma conta de armazenamento chamada storage1, e ao mesmo tempo executar outra implantação nomeada newStorage que implanta uma conta de armazenamento chamada storage2, você implantará apenas uma conta de armazenamento. A conta de armazenamento resultante é denominada storage2.
No entanto, se você executar uma implantação nomeada newStorage que implanta uma conta de armazenamento chamada storage1, e imediatamente após sua conclusão executar outra implantação nomeada newStorage que implanta uma conta de armazenamento chamada storage2, então você terá duas contas de armazenamento. Um é chamado storage1, e o outro é chamado storage2. Mas só há uma entrada no histórico de implementação.
Ao especificar um nome exclusivo para cada implantação, você pode executá-los simultaneamente sem conflito. Se você executar uma implantação nomeada newStorage1 que implanta uma conta de armazenamento chamada storage1e, ao mesmo tempo, executar outra implantação nomeada newStorage2 que implanta uma conta de armazenamento chamada storage2, terá duas contas de armazenamento e duas entradas no histórico de implantação.
Para evitar conflitos com implantações simultâneas e garantir entradas exclusivas no histórico de implantação, dê a cada implantação um nome exclusivo.
Implantar especificação de modelo
Em vez de implementar um modelo local ou remoto, pode criar uma especificação template. A especificação do template é um recurso na tua subscrição do Azure que contém um template ARM. Ele facilita o compartilhamento seguro do modelo com os usuários em sua organização. Utilizas o controlo de acesso baseado em papéis do Azure (Azure RBAC) para conceder acesso à especificação do template. Esta funcionalidade está atualmente em pré-visualização.
Os exemplos a seguir mostram como criar e implantar uma especificação de modelo.
Primeiro, crie a especificação do modelo fornecendo o modelo ARM.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "./mainTemplate.json"
Em seguida, obtenha a identificação da especificação do modelo e implemente-a.
id = $(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
az deployment group create \
--resource-group demoRG \
--template-spec $id
Para mais informações, consulte as especificações do modelo do Azure Resource Manager.
Pré-visualizar alterações
Antes de implantar seu modelo ARM, você pode visualizar as alterações que o modelo faz em seu ambiente. Use a operação what-if para verificar se o modelo faz as alterações que esperava. O What-if também valida o modelo em busca de erros.
Parâmetros
Para passar valores de parâmetro, você pode usar parâmetros embutidos ou um arquivo de parâmetros. O ficheiro de parâmetros pode ser um ficheiro de parâmetros Bicep ou um ficheiro de parâmetros JSON.
Parâmetros em linha
Para passar parâmetros em linha, forneça os valores em parameters. Por exemplo, para passar uma cadeia de caracteres e uma matriz para um modelo em um shell Bash, use:
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString='inline string' exampleArray='("value1", "value2")'
Se estiver a usar o CLI do Azure com o Prompt de Comando do Windows (CMD) ou o PowerShell, passe o array no formato: exampleArray="['value1','value2']".
Você também pode obter o conteúdo do arquivo e fornecer esse conteúdo como um parâmetro embutido.
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters exampleString=@stringContent.txt exampleArray=@arrayContent.json
Obter um valor de parâmetro de um arquivo é útil quando você precisa fornecer valores de configuração. Por exemplo, pode fornecer valores de cloud-init para uma máquina virtual Linux.
O formato arrayContent.json é:
[
"value1",
"value2"
]
Para passar um objeto, por exemplo, para definir tags, use JSON. Por exemplo, seu modelo pode incluir um parâmetro como este:
"resourceTags": {
"type": "object",
"defaultValue": {
"Cost Center": "IT Department"
}
}
Nesse caso, você pode passar uma cadeia de caracteres JSON para definir o parâmetro conforme mostrado no seguinte script Bash:
tags='{"Owner":"Contoso","Cost Center":"2345-324"}'
az deployment group create --name addstorage --resource-group myResourceGroup \
--template-file $templateFile \
--parameters resourceName=abcdef4556 resourceTags="$tags"
Use aspas duplas ao redor do JSON que você deseja passar para o objeto.
Você pode usar uma variável para conter os valores de parâmetro. Em Bash, defina a variável para todos os valores de parâmetro e adicione-a ao comando deployment.
params="prefix=start suffix=end"
az deployment group create \
--resource-group testgroup \
--template-file <path-to-template> \
--parameters $params
No entanto, se estiveres a usar CLI do Azure com o Windows Command Prompt (CMD) ou PowerShell, define a variável para uma string JSON. Fuja das aspas: $params = '{ \"prefix\": {\"value\":\"start\"}, \"suffix\": {\"value\":\"end\"} }'.
Arquivos de parâmetros JSON
Em vez de passar parâmetros como valores embutidos em seu script, você pode achar mais fácil usar um arquivo de parâmetros, um .bicepparam arquivo ou um arquivo de parâmetros JSON, que contém os valores de parâmetro. O arquivo de parâmetros deve ser um arquivo local. Ficheiros de parâmetros externos não são suportados com CLI do Azure.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters 'storage.parameters.json'
Para mais informações sobre o ficheiro de parâmetros, veja Create Resource Manager ficheiro de parâmetros.
Os ficheiros de parâmetros do Bicep
Com o CLI do Azure versão 2.53.0 ou posterior, e o Bicep CLI versão 0.22.6 ou posterior, pode implementar um ficheiro Bicep utilizando um ficheiro de parâmetros Bicep. Com a instrução using dentro do ficheiro de parâmetros Bicep, não é necessário fornecer o interruptor --template-file ao especificar um ficheiro de parâmetros Bicep para o interruptor --parameters. A inclusão da --template-file opção resulta em um erro "Somente um arquivo .bicep é permitido com um arquivo .bicepparam".
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--parameters storage.bicepparam
O arquivo de parâmetros deve ser um arquivo local. Ficheiros de parâmetros externos não são suportados com CLI do Azure. Para mais informações sobre o ficheiro de parâmetros, consulte Create Resource Manager parameters file.
Comentários e o formato JSON estendido
Você pode incluir // comentários de estilo no seu ficheiro de parâmetros, mas deve nomear o ficheiro com uma .jsonc extensão.
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters '@storage.parameters.jsonc'
Para obter mais detalhes sobre comentários e metadados, consulte Compreender a estrutura e a sintaxe dos modelos ARM.
Se estiveres a usar CLI do Azure com a versão 2.3.0 ou anterior, podes implementar um template com strings ou comentários de várias linhas usando o switch --handle-extended-json-format. Por exemplo:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2025-04-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
Próximos passos
- Para reverter para uma implantação bem-sucedida em caso de erro, consulte Reverter com erro para implantação bem-sucedida.
- Para especificar como gerir recursos que existem no grupo de recursos mas não estão definidos no modelo, veja Azure Resource Manager modos de implementação.
- Para entender como definir parâmetros em seu modelo, consulte Compreender a estrutura e a sintaxe dos modelos ARM.
- Para dicas sobre como resolver erros comuns de implementação, consulte Resolver erros comuns de implementação do Azure com o Azure Resource Manager.