Pular para o conteúdo principal

Resource Group

Um grupo de recursos é um pool de recursos, mas é só uma denominação lógica. Se todos os recursos fossem independentes e precisássemos dar permissão de acesso, precisaríamos ir em todos eles criar a permissão. Com o grupo podemos fazer isso de forma simples: dar a permissão no grupo para algum usuário. Na hora de deletar podemos deletar o grupo inteiro. Podemos calcular os custos para um grupo de recursos ao invés de ter que somar recurso a recurso.

Qualquer novo recurso criado é criado automaticamente dentro de um grupo de recursos, sendo que você pode criar um novo grupo de recursos ou escolher um já existente. Um recurso só pode existir em um único grupo de recursos. Também não é possível agrupar grupos de recursos. Se precisar que todos os recursos estejam no mesmo grupo então mova-os para o grupo que deseja.

A escolha de como criar um grupo de recursos depende de como você quer gerenciar as coisas. O que vou falar abaixo é exemplo e não regra.

  • Um grupo de recursos por região
  • Um grupo de recursos por app
  • Um grupo de recursos só para recursos de rede e cada aplicação em um grupo de recursos separado.
    • Não é porque eu criei a rede em um grupo de recursos que eu não possa usá-la em outro grupo.
  • Um grupo de recursos por ambiente

Um grupo de recursos não pode ser renomeado por causa das dependências. É necessário excluir e recriar. Excluir o grupo de recursos envolve excluir todos os recursos nele presentes.

Uma outra vantagem do grupo de recursos é listar tudo que nele está contido. Muito mais fácil do que a AWS que precisaríamos criar as mesmas tags em todos os recursos.

Criar um grupo de recursos via Portal é muito simples.

alt text

Podemos colocar tags para filtragem.

alt text

alt text

Apertando create irá criar. Observe a seta e veja que podemos fazer o download do template e dos parâmetros via json.

Template

{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"rgName": {
"type": "string"
},
"rgLocation": {
"type": "string"
},
"tags": {
"type": "object",
"defaultValue": {}
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2018-05-01",
"location": "[parameters('rgLocation')]",
"name": "[parameters('rgName')]",
"properties": {},
"tags": "[parameters('tags')]"
}
],
"outputs": {}
}

Parameters

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rgName": {
"value": "prod-rg"
},
"rgLocation": {
"value": "eastus"
},
"tags": {
"value": {
"env": "production",
"method": "portal",
"creator": "david"
}
}
}
}

E só por curiosidade se fosse via Terraform...

resource "azurerm_resource_group" "prod" {
name = "prod-rg"
location = "East US"
tags = {
env = "production",
method = "terraform",
creator = "david"
}
}

alt text

az group list  
[
{
"id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/prod-rg",
"location": "eastus",
"managedBy": null,
"name": "prod-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": {
"creator": "david",
"env": "production",
"method": "portal"
},
"type": "Microsoft.Resources/resourceGroups"
}
]

az group list --output table
Name Location Status
------- ---------- ---------
prod-rg eastus Succeeded

az group create --name development --location brazilsouth

az group list --output table
Name Location Status
----------- ----------- ---------
development brazilsouth Succeeded
prod-rg eastus Succeeded

az group delete --resource-group development
Are you sure you want to perform this operation? (y/n): y