Explorar a estrutura do modelo do Azure Resource Manager
Nesta unidade, ficará a saber mais sobre a utilização dos modelos do Azure Resource Manager (modelos ARM) para implementar a infraestrutura como código. Vai analisar as secções de um modelo ARM, saber como implementar o modelo ARM no Azure e ver a secção recursos do modelo ARM.
O que é a infraestrutura como código?
Infraestrutura como código permite descrever, através de código, a infraestrutura que você precisa para seu aplicativo.
Com a infraestrutura como código, pode manter o código da aplicação e tudo o que precisa para implementar a sua aplicação num repositório central de código. As vantagens da infraestrutura como código são:
- Configurações consistentes
- Melhoria da escalabilidade
- Implementações mais rápidas
- Melhor rastreabilidade
Este vídeo explica a infraestrutura como código:
O que é um modelo ARM?
Os modelos do Resource Manager são ficheiros JSON (JavaScript Object Notation) que definem a infraestrutura e a configuração da sua implementação. O modelo utiliza uma sintaxe declarativa. A sintaxe declarativa é uma maneira de construir a estrutura e os elementos que descrevem a aparência dos recursos sem descrever o fluxo de controle. A sintaxe declarativa é diferente da sintaxe imperativa, que utiliza comandos para o computador efetuar ações. O scripting imperativo concentra-se em especificar cada passo na implementação de recursos.
Os modelos ARM permitem-lhe declarar o que quer implementar sem ter de escrever a sequência de comandos de programação para o criar. Num modelo ARM, especifica os recursos e as propriedades desses recursos. Em seguida, o Azure Resource Manager usa essas informações para implantar os recursos de maneira organizada e consistente.
Benefícios da utilização de modelos do Resource Manager
Os modelos ARM permitem automatizar as implementações e utilizar a prática de infraestrutura como código (IaC). O código do modelo torna-se parte da sua infraestrutura e projetos de desenvolvimento. Tal como o código da aplicação, pode armazenar os ficheiros IaC num repositório de origem e controlar a versão.
Os modelos do Resource Manager são idempotentes, o que significa que pode implementar o mesmo modelo várias vezes e obter os mesmos tipos de recursos no mesmo estado.
O Resource Manager orquestra a implantação dos recursos para que eles sejam criados na ordem correta. Quando possível, os recursos são criados em paralelo, para que as implantações de modelo ARM sejam concluídas mais rapidamente do que as implantações com script.
O Resource Manager também tem validação incorporada. Ele verifica o modelo antes de iniciar a implantação para garantir que ela seja bem-sucedida.
Se as implementações se tornarem mais complexas, poderá dividir os modelos ARM em componentes mais pequenos e reutilizáveis. Poderá ligar todos estes modelos mais pequenos no momento da implementação. Também poderá aninhar modelos dentro de outros modelos.
No portal do Azure, pode rever o histórico de implementações e obter informações sobre o estado da implementação. O portal apresenta os valores para todos os parâmetros e saídas.
Também pode integrar os seus modelos do Resource Manager em ferramentas de integração e implementação contínuas (CI/CD), como o Azure Pipelines, que podem automatizar os pipelines de versão para obter uma aplicação rápida e fiável e atualizações de infraestrutura. Ao utilizar as tarefas do modelo do Resource Manager e Azure DevOps, pode criar e implementar continuamente os seus projetos.
Estrutura de ficheiros do modelo do Resource Manager
Ao escrever um modelo ARM, você precisa entender todas as partes que compõem o modelo e o que elas fazem. Os arquivos de modelo ARM são compostos pelos seguintes elementos:
Elemento | Description |
---|---|
Esquema | uma secção obrigatória que define a localização do ficheiro de esquema JSON, que descreve a estrutura de dados JSON. O número de versão que utiliza depende do âmbito da implementação e do seu editor de JSON. |
contentVersion | uma secção obrigatória que define a versão do modelo (como 1.0.0.0). Pode utilizar este valor para documentar alterações significativas no seu modelo, garantindo que está a implementar o modelo correto. |
apiProfile | uma secção opcional que define uma coleção de versões da API para tipos de recurso. Pode utilizar este valor para evitar ter de especificar versões da API para cada recurso no modelo. |
parameters | uma secção opcional onde se definem os valores proporcionados durante a implementação. Você pode fornecer esses valores em um arquivo de parâmetro, por parâmetros de linha de comando ou no portal do Azure. |
variáveis | uma secção opcional na qual define os valores que servem para simplificar expressões de linguagem de modelos. |
funções | uma secção opcional na qual pode definir funções definidas por utilizadores, disponíveis no modelo. As funções definidas pelo utilizador podem simplificar o modelo quando são utilizadas expressões complicadas repetidamente no modelo. |
Recursos | uma secção obrigatória que define os itens reais que quer implementar ou atualizar, num grupo de recursos ou numa subscrição. |
Saída | Uma seção opcional onde você especifica os valores que são retornados no final da implantação. |
Implementar um modelo ARM no Azure
Pode implementar um modelo ARM no Azure de uma das seguintes formas:
- Implementar um modelo local
- Implementar um modelo ligado
- Implementar num pipeline de implementação contínua
Este módulo centra-se na implementação de um modelo ARM local. Em módulos do Learn futuros, você aprenderá como implantar uma infraestrutura mais complicada e como integrar com o Azure Pipelines.
Para implementar um modelo local, tem de ter o Azure PowerShell ou a CLI do Azure instalados localmente.
Primeiro, inicie sessão no Azure com a CLI do Azure ou o Azure PowerShell.
az login
Em seguida, defina seu grupo de recursos. Você pode usar um grupo de recursos já definido ou criar um novo com o seguinte comando. Você pode obter valores de local disponíveis em: az account list-locations
(CLI) ou Get-AzLocation
(PowerShell). Você pode configurar o local padrão usando az configure --defaults location=<location>
.
az group create \
--name {name of your resource group} \
--location "{location}"
Para iniciar uma implantação de modelo no grupo de recursos, use o comando az deployment group create da CLI do Azure ou o comando New-AzResourceGroupDeployment do Azure PowerShell.
Gorjeta
A diferença entre az deployment group create
e az group deployment create
é que az group deployment create
é um comando antigo a ser preterido e será substituído por az deployment group create
. Portanto, recomendamos usar az deployment group create
para implantar recursos no escopo do grupo de recursos.
Ambos os comandos exigem o grupo de recursos, a região e o nome da implantação para que você possa identificá-la facilmente no histórico de implantação. Por conveniência, os exercícios criam uma variável que armazena o caminho para o arquivo de modelo. Essa variável facilita a execução de comandos de implantação, pois não é necessário redigitar o caminho toda vez que implanta. Eis um exemplo:
Para executar este comando de implementação, tem de ter a versão mais recente da CLI do Azure.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Utilize modelos ligados para implementar soluções complexas. Pode dividir um modelo em muitos modelos e implementar esses modelos através de um modelo principal. Quando você implanta o modelo principal, ele aciona a implantação do modelo vinculado. Pode armazenar e proteger o modelo ligado através de um token de SAS.
Um pipeline CI/CD automatiza a criação e implementação de projetos de desenvolvimento, que incluem projetos do modelo ARM. Os dois pipelines mais comuns utilizados na implementação de modelos são Azure Pipelines ou GitHub Actions.
Pode obter mais informações sobre estes dois tipos de implementação noutros módulos.
Adicionar recursos ao modelo
Para adicionar um recurso ao seu modelo, você precisa conhecer o provedor de recursos e seus tipos de recursos. A sintaxe desta combinação assume o formato de {fornecedor de recursos}/{tipo de recurso}. Por exemplo, para adicionar um recurso de conta de armazenamento ao seu modelo, você precisa do Microsoft.Storage
provedor de recursos. Um dos tipos para este provedor é storageAccount
. Assim, seu tipo de recurso é exibido como Microsoft.Storage/storageAccounts
. Pode utilizar uma lista de fornecedores de recursos para serviços do Azure de forma a encontrar os fornecedores necessários.
Depois de definir o provedor e o tipo de recurso, você precisa entender as propriedades de cada tipo de recurso que deseja usar. Para obter mais detalhes, veja Definir os recursos nos modelos do Azure Resource Manager. Para localizar o recurso, exiba a lista na coluna da esquerda. Note que as propriedades estão ordenadas por versão da API.
Veja a seguir um exemplo com algumas das propriedades listadas na página Contas de Armazenamento:
No nosso exemplo de armazenamento, o seu modelo pode ter o seguinte aspeto:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}