Implementar recursos com modelos ARM e Azure Resource Manager REST API
Este artigo explica como usar o Azure Resource Manager REST API com modelos de Resource Manager Azure (modelos ARM) para implantar os seus recursos para a Azure.
Pode incluir o seu modelo no corpo de pedido ou ligar-se a um ficheiro. Ao utilizar um ficheiro, pode ser um ficheiro local ou um ficheiro externo que esteja disponível através de um URI. Quando o seu modelo estiver numa conta de armazenamento, pode restringir o acesso ao modelo e fornecer um sinal de assinatura de acesso partilhado (SAS) durante a implementação.
Permissões obrigatórias
Para implementar um ficheiro Bicep ou modelo do ARM, precisa de acesso 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 implantar uma máquina virtual, é necessário Microsoft.Compute/virtualMachines/write
e Microsoft.Resources/deployments/*
permissões. A operação "e se" tem os mesmos requisitos de permissão.
Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.
Âmbito de implantação
Pode direcionar a sua implantação para um grupo de recursos, subscrição Azure, grupo de gestão ou inquilino. Dependendo do âmbito de implantação, utiliza-se diferentes comandos.
Para implementar num grupo de recursos, utilize implementações - Criar. O pedido é enviado para:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Para implementar uma subscrição, utilize implementações - Criar no âmbito de subscrição. O pedido é enviado para:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Para obter mais informações sobre as implementações do nível de subscrição, consulte Criar grupos de recursos e recursos ao nível da subscrição.
Para implantar num grupo de gestão, utilize implementações - Crie no Âmbito do Grupo de Gestão. O pedido é enviado para:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Para obter mais informações sobre as implementações de nível de grupo de gestão, consulte Criar recursos a nível do grupo de gestão.
Para implantar num inquilino, utilize implementações - Criar ou Atualizar no Âmbito do Inquilino. O pedido é enviado para:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Para obter mais informações sobre as implementações ao nível do arrendatário, consulte Criar recursos ao nível do arrendatário.
Os exemplos deste artigo utilizam as implementações de grupos de recursos.
Implementar com a API REST
Desacorda parâmetros e cabeçalhos comuns, incluindo fichas de autenticação.
Se estiver a implantar para um grupo de recursos que não existe, crie o grupo de recursos. Forneça o seu ID de subscrição, o nome do novo grupo de recursos e a localização que necessita para a sua solução. Para obter mais informações, consulte Criar um grupo de recursos.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
Com um corpo de pedido como:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }
Antes de implementar o seu modelo, pode visualizar as alterações que o modelo irá fazer para o seu ambiente. Utilize a operação "e se" para verificar se o modelo faz as alterações que espera. E se também valida o modelo para erros.
Para implementar um modelo, forneça o seu ID de subscrição, o nome do grupo de recursos, o nome da implementação no pedido URI.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
No corpo de pedido, forneça um link para o seu modelo e arquivo de parâmetros. Para obter mais informações sobre o ficheiro de parâmetros, veja Criar ficheiro de parâmetros do Resource Manager.
Note que o
mode
é definido para Incremental. Para executar uma implementação completa, definirmode
para completar. Tenha cuidado ao utilizar o modo completo, pois pode eliminar inadvertidamente recursos que não estão no seu modelo.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental" } }
Se pretender registar o conteúdo da resposta, solicite o conteúdo, ou ambos, inclua
debugSetting
no pedido.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental", "debugSetting": { "detailLevel": "requestContent, responseContent" } } }
Pode configurar a sua conta de armazenamento para utilizar um token de assinatura de acesso partilhado (SAS). Para mais informações, consulte o Delegado de acesso com uma assinatura de acesso partilhado.
Se precisar de fornecer um valor sensível para um parâmetro (como uma palavra-passe), adicione esse valor a um cofre de chaves. Recupere o cofre da chave durante a colocação, como mostra o exemplo anterior. Para obter mais informações, consulte Use Azure Key Vault para passar o valor do parâmetro seguro durante a implementação.
Em vez de ligar aos ficheiros para o modelo e parâmetros, pode incluí-los no corpo de pedido. O exemplo a seguir mostra o corpo de pedido com o modelo e o parâmetro inline:
{ "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "description": "Storage Account type" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } } }, "variables": { "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2018-02-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }, "parameters": { "location": { "value": "eastus2" } } } }
Para obter o estado da implementação do modelo, use Implementações - Obtenha.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Implementar com ARMClient
ARMClient é uma simples ferramenta de linha de comando para invocar a API AZure Resource Manager. Para instalar a ferramenta, consulte o ARMClient.
Para listar as suas subscrições:
armclient GET /subscriptions?api-version=2021-04-01
Para listar os seus grupos de recursos:
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Substitua o <id> de subscrição pelo seu ID de subscrição Azure.
Criar um grupo de recursos na região central dos EUA :
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
Em alternativa, pode colocar o corpo num ficheiro JSON chamado CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Para obter mais informações, consulte ARMClient: uma ferramenta de linha de comando para a API Azure.
Nome de implantação
Pode dar à sua implantação um nome como ExampleDeployment
.
Sempre que executar uma implantação, uma entrada é adicionada ao histórico de implantação do grupo de recursos com o nome de implantação. Se executar outra implantação e lhe der o mesmo nome, a entrada anterior é substituída pela implementação atual. Se pretender manter entradas únicas no histórico de implantação, dê a cada implementação um nome único.
Para criar um nome único, pode atribuir um número aleatório. Ou adicionar um valor de data.
Se executar implementações simultâneas para o mesmo grupo de recursos com o mesmo nome de implantação, apenas a última implementação é concluída. Quaisquer implementações com o mesmo nome que não tenham terminado são substituídas pela última implementação. Por exemplo, se executar uma implantação com o nome newStorage
de uma conta de armazenamento chamada storage1
, e ao mesmo tempo executar outra implantação com o nome newStorage
de uma conta de armazenamento chamada storage2
, implementa apenas uma conta de armazenamento. A conta de armazenamento resultante é nomeada storage2
.
No entanto, se executar uma implementação com o nome newStorage
que implementa uma conta de armazenamento chamada storage1
, e imediatamente após a sua conclusão, executar outra implantação com o nome newStorage
de uma conta de armazenamento chamada storage2
, então tem duas contas de armazenamento. Um tem o nome storage1
, e o outro chama-se storage2
. Mas só tens uma entrada na história da implantação.
Quando especificar um nome único para cada implantação, pode executá-los simultaneamente sem conflitos. Se executar uma implantação com o nome newStorage1
de uma conta de armazenamento chamada storage1
, e ao mesmo tempo executar outra implantação com o nome newStorage2
de uma conta de armazenamento , storage2
então tem duas contas de armazenamento e duas entradas no histórico de implantação.
Para evitar conflitos com implementações simultâneas e para garantir entradas únicas no histórico de implantação, dê a cada implementação um nome único.
Passos seguintes
- Para voltar a uma implementação bem sucedida quando tiver um erro, consulte o Reversão do erro para uma implementação bem sucedida.
- Para especificar como lidar com os recursos que existem no grupo de recursos mas não estão definidos no modelo, consulte Azure Resource Manager modos de implementação.
- Para aprender a lidar com operações assíncronas do REST, consulte as operações de Azure assíncrona.
- Para saber mais sobre modelos, consulte a estrutura e a sintaxe dos modelos ARM.