A la lliçó anterior vas crear un grup de recursos i un compte d'emmagatzematge fent clics, i van quedar preguntes a l'aire: què és realment un grup de recursos? Per què esborrar-lo elimina tot el que conté? Per què les etiquetes no s'hereten? I com pot ser que el portal, la línia d'ordres i una plantilla facin exactament el mateix?
La resposta a totes és la mateixa: Azure Resource Manager (ARM), el pla de control d'Azure. Entendre ARM és el que separa qui "sap fer servir el portal" de qui entén Azure. Aquesta lliçó és la més important del mòdul des del punt de vista conceptual, i les seves conseqüències pràctiques —organització, governança, cost, protecció de producció— t'acompanyaran fins a l'últim mòdul.
Contingut
- Què és Azure Resource Manager
- La jerarquia completa d'Azure
- Proveïdors de recursos i el seu registre
- L'ID de recurs i com llegir-lo
- Criteris reals per agrupar recursos
- Bloquejos de recurs: protegir producció
- Moure recursos entre grups i subscripcions
- Etiquetes: per a què serveixen de debò
- L'esquema d'etiquetatge de Contoso Airlines
- Plantilles ARM i Bicep com a concepte
- Límits i quotes de subscripció
- Errors Comuns i Consells
- Exercicis
- Conclusió
- Què és Azure Resource Manager
Azure Resource Manager és el servei de gestió d'Azure: l'única porta per on passen totes les operacions de creació, modificació, lectura i eliminació de recursos. No és una eina que facis servir directament; és l'API que hi ha darrere de totes les eines.
graph TD
P[Portal d'Azure] --> ARM
C[Azure CLI] --> ARM
PS[Azure PowerShell] --> ARM
S[SDK: .NET, Python, Java...] --> ARM
T[Plantilles ARM / Bicep / Terraform] --> ARM
R[REST API directa] --> ARM
ARM["Azure Resource Manager<br/>autenticacio, autoritzacio RBAC,<br/>validacio, control de politiques,<br/>orquestracio i registre d'activitat"]
ARM --> RP1[Proveidor: Microsoft.Compute]
ARM --> RP2[Proveidor: Microsoft.Storage]
ARM --> RP3[Proveidor: Microsoft.Web]
ARM --> RP4[Proveidor: Microsoft.Sql]
Conseqüències pràctiques d'aquest disseny, totes comprovables:
- Coherència total. El que pots fer pel portal ho pots fer per CLI, i a l'inrevés. Si alguna cosa apareix en una eina i no en una altra, sol ser qüestió de versió, no de capacitat.
- Un sol punt de seguretat. Els permisos RBAC (mòdul 4) i les polítiques (mòdul 4) s'apliquen a ARM, així que valen per a totes les eines per igual. No pots "esquivar" una política fent servir la CLI.
- Auditoria unificada. El registre d'activitat que vas veure a la lliçó anterior recull les operacions vinguin d'on vinguin.
- Desplegaments declaratius. ARM accepta plantilles que descriuen l'estat desitjat, resol l'ordre de creació i paral·lelitza el que pot.
- Operacions idempotents. Enviar dues vegades el mateix estat desitjat no crea dos recursos: convergeix al mateix resultat. Aquesta propietat és la base de la infraestructura com a codi.
Un matís que evita confusions futures: ARM governa el pla de control (crear un compte d'emmagatzematge, canviar-ne el nivell). El pla de dades (pujar un blob, executar una consulta SQL) l'atén cada servei amb el seu propi extrem i els seus propis permisos. Dos plans, dos models d'accés.
- La jerarquia completa d'Azure
Quatre nivells, de major a menor abast. Cadascun té un propòsit diferent i és on s'apliquen determinades coses.
graph TD
MG0[Grup d'administracio arrel<br/>Contoso Airlines]
MG0 --> MG1[Grup d'administracio<br/>Produccio]
MG0 --> MG2[Grup d'administracio<br/>No produccio]
MG1 --> S1[Subscripcio<br/>Contoso Airlines - Produccion]
MG2 --> S2[Subscripcio<br/>Contoso Airlines - Desarrollo]
S1 --> RG1[rg-contoso-reservas-pro]
S1 --> RG2[rg-contoso-red-pro]
S2 --> RG3[rg-contoso-reservas-dev]
RG1 --> R1[app-contoso-reservas-pro]
RG1 --> R2[sttarjetascontosopro]
RG1 --> R3[sql-contoso-reservas-pro]
RG2 --> R4[vnet-contoso-pro]
| Nivell | Què és | Per a què serveix | S'hi aplica |
|---|---|---|---|
| Grup d'administració | Contenidor de subscripcions, imbricable fins a 6 nivells | Aplicar governança a moltes subscripcions alhora | Polítiques, permisos RBAC heretats per totes les subscripcions que conté |
| Subscripció | Unitat de facturació i contenidor de recursos | Separar entorns, departaments o clients; límit de quotes | Facturació, quotes, polítiques, permisos |
| Grup de recursos | Contenidor lògic dins d'una subscripció | Organitzar per cicle de vida; esborrat i desplegament conjunt | Permisos, polítiques, bloquejos, desplegaments |
| Recurs | La instància concreta (una VM, una base de dades) | Fer la feina | Permisos, bloquejos, configuració |
Regles de ferro que cal memoritzar:
- Tot recurs pertany exactament a un grup de recursos, i aquest exactament a una subscripció.
- Els permisos i les polítiques s'hereten cap avall. Un permís concedit a la subscripció s'aplica a tots els seus grups i recursos.
- Les etiquetes NO s'hereten. Hi insisteixo perquè és contraintuïtiu justament pel punt anterior. Ho veurem a l'apartat 8.
- Un grup de recursos pot contenir recursos de regions diferents. La seva pròpia regió només diu on es desen les metadades del grup.
- Esborrar un grup de recursos esborra tot el seu contingut, sense excepció i sense paperera.
Sobre els grups d'administració: Contoso encara no els necessita amb dues subscripcions, però són l'eina correcta tan bon punt n'hi hagi diverses. Permeten, per exemple, aplicar una política de "només es pot desplegar en regions europees" a tot el que pengi del grup Producción, sense repetir-la subscripció a subscripció. Es desenvolupen a la lliçó 04-06 (Azure Policy).
- Proveïdors de recursos i el seu registre
Un proveïdor de recursos (resource provider) és el component d'ARM que sap crear i gestionar una família de recursos. El seu nom té la forma Microsoft.<Familia>:
| Proveïdor | Què gestiona | Tipus de recurs d'exemple |
|---|---|---|
Microsoft.Compute |
Còmput IaaS | virtualMachines, disks, availabilitySets |
Microsoft.Storage |
Emmagatzematge | storageAccounts |
Microsoft.Web |
App Service i Functions | sites, serverfarms |
Microsoft.Sql |
Azure SQL | servers, servers/databases |
Microsoft.Network |
Xarxes | virtualNetworks, networkSecurityGroups, publicIPAddresses |
Microsoft.KeyVault |
Key Vault | vaults |
Microsoft.Insights |
Monitoratge | components, metricAlerts |
Cada proveïdor ha d'estar registrat a la subscripció per poder-lo fer servir. El portal registra automàticament el proveïdor quan crees el primer recurs d'aquella família, per això normalment ni te n'adones. Però quan despleguis per CLI o amb una plantilla, un proveïdor sense registrar produeix un error críptic del tipus "The subscription is not registered to use namespace 'Microsoft.X'".
# Llista l'estat de registre de tots els proveïdors de la subscripció activa.
az provider list --query "[].{Proveidor:namespace, Estat:registrationState}" --output table
# Registra manualment un proveïdor (operació asíncrona: pot trigar un parell de minuts).
az provider register --namespace Microsoft.Storage
# Comprova si ja està registrat.
az provider show --namespace Microsoft.Storage --query "registrationState" --output tsvEls proveïdors també determinen quines versions d'API hi ha disponibles i en quines regions existeix cada tipus de recurs:
# Mostra en quines regions està disponible el tipus "compte d'emmagatzematge".
# Útil per verificar-ho abans de desplegar en una regió poc comuna.
az provider show --namespace Microsoft.Storage \
--query "resourceTypes[?resourceType=='storageAccounts'].locations" \
--output json
- L'ID de recurs i com llegir-lo
Cada recurs d'Azure té un identificador únic i global. Apareix als registres, als missatges d'error, a les plantilles i a qualsevol automatització, així que cal saber llegir-lo d'un cop d'ull.
/subscriptions/8f4c2b7a-1d3e-4a55-9c11-0a7b6e2d4f90/resourceGroups/rg-contoso-reservas-pro/providers/Microsoft.Storage/storageAccounts/sttarjetascontosopro
Desglossament per segments:
| Segment | Valor a l'exemple | Significat |
|---|---|---|
/subscriptions/ |
8f4c2b7a-...-4f90 |
Identificador de la subscripció (GUID) |
/resourceGroups/ |
rg-contoso-reservas-pro |
Grup de recursos que el conté |
/providers/ |
Microsoft.Storage |
Proveïdor de recursos responsable |
| Tipus de recurs | storageAccounts |
Tipus concret dins del proveïdor |
| Nom | sttarjetascontosopro |
Nom del recurs |
Els recursos fills imbriquen el patró. Una base de dades dins d'un servidor SQL:
/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-pro/providers/Microsoft.Sql/servers/sql-contoso-reservas-pro/databases/db-reservasI alguns recursos viuen directament a la subscripció, sense grup (per exemple, una assignació de política a nivell de subscripció):
Obtenir l'ID d'un recurs des de la CLI:
# Retorna només l'ID, en text pla, llest per fer-lo servir en una altra ordre o script.
az storage account show \
--name sttarjetascontosodev \
--resource-group rg-contoso-reservas-dev \
--query id --output tsv
- Criteris reals per agrupar recursos
La pregunta que tothom fa: "quants grups de recursos creo i què poso a cadascun?". La resposta professional no és "un per projecte" i prou.
El criteri principal: cicle de vida compartit
Posa al mateix grup allò que neix i mor junt. Si esborraràs l'aplicació de reserves, vols que desaparegui també la xarxa virtual corporativa? No. Doncs no van al mateix grup.
Criteris secundaris
| Criteri | Regla | Exemple a Contoso |
|---|---|---|
| Entorn | No barregis mai producció i desenvolupament al mateix grup | rg-contoso-reservas-pro i rg-contoso-reservas-dev |
| Permisos | Els recursos que comparteixen qui els pot administrar van junts, perquè RBAC s'assigna còmodament a nivell de grup | La xarxa corporativa l'administra només la Marta: grup propi |
| Cicle de vida | El compartit i durador, separat de l'efímer | Xarxa i Key Vault duren anys; una aplicació de campanya, setmanes |
| Facturació | Els grups són un eix natural d'anàlisi de cost, complementat amb etiquetes | Cost per grup a Cost Management (mòdul 8) |
Antipatrons que veuràs a empreses reals
- "Tot junt": un únic grup amb 300 recursos. Impossible de donar permisos amb criteri, impossible d'esborrar res amb seguretat.
- "Un per recurs": 300 grups amb un recurs cadascun. Tota la sobrecàrrega de gestió i cap dels avantatges.
- "Per tipus de recurs": un grup per a totes les VM, un altre per a totes les bases de dades. Sona ordenat i és un desastre: res no comparteix cicle de vida i no pots esborrar un projecte sense anar peça a peça.
L'organització de Contoso Airlines
| Grup de recursos | Contingut | Cicle de vida |
|---|---|---|
rg-contoso-reservas-pro |
Web, API, base de dades i emmagatzematge de la plataforma en producció | Viu mentre visqui el producte |
rg-contoso-reservas-dev |
Els mateixos components en versió de desenvolupament | Es pot recrear sencer quan convingui |
rg-contoso-red-pro |
Xarxa virtual, subxarxes, passarel·la de VPN | Llarga durada, compartida per diverses aplicacions |
rg-contoso-seguridad-pro |
Key Vault, espai de treball de Log Analytics | Llarga durada, permisos molt restringits |
Els tres últims s'aniran poblant als mòduls 2, 4 i 7. Fixa't que la xarxa està separada: és exactament el tipus de recurs compartit i durador que no ha de morir amb una aplicació.
- Bloquejos de recurs: protegir producció
Un bloqueig (lock) impedeix operacions destructives fins i tot a qui té permisos de propietari. És la xarxa de seguretat contra l'error humà, no contra l'atac.
| Tipus de bloqueig | Què impedeix | Què permet |
|---|---|---|
| CanNotDelete (No es pot eliminar) | Eliminar el recurs | Llegir i modificar |
| ReadOnly (Només lectura) | Eliminar i modificar | Només lectura |
Es poden aplicar a subscripció, grup de recursos o recurs individual, i s'hereten cap avall: un bloqueig al grup protegeix tots els seus recursos.
# Bloqueig CanNotDelete sobre el grup de producció complet.
# --notes documenta per què existeix; el teu jo del futur t'ho agrairà.
az lock create \
--name "no-borrar-produccion" \
--lock-type CanNotDelete \
--resource-group rg-contoso-reservas-pro \
--notes "Protegeix la plataforma de venda. Demanar a la Marta Rios per retirar-lo."
# Llistar els bloquejos existents en un grup.
az lock list --resource-group rg-contoso-reservas-pro --output table
# Eliminar un bloqueig (requereix permís específic sobre Microsoft.Authorization/locks).
az lock delete --name "no-borrar-produccion" --resource-group rg-contoso-reservas-proDes del portal: recurs o grup → Bloquejos → Afegeix.
Efectes secundaris que cal conèixer
ReadOnly és més agressiu del que sembla i provoca sorpreses:
- Un
ReadOnlysobre un grup amb un compte d'emmagatzematge impedeix llistar les claus d'accés, perquè aquesta operació és tècnicament una escriptura (listKeys). Aplicacions que funcionaven deixen de funcionar. - Un
ReadOnlysobre una màquina virtual impedeix iniciar-la o aturar-la. - Els bloquejos afecten el pla de control, no el de dades: amb
CanNotDeletesobre un compte d'emmagatzematge, ningú no pot esborrar el compte, però qualsevol amb permisos de dades sí que pot esborrar els blobs de dins. Per a això existeixen altres proteccions (retenció, eliminació temporal), que es veuen al mòdul 2.
Pràctica recomanada a Contoso: CanNotDelete a tots els grups de producció i als recursos amb estat (bases de dades, comptes d'emmagatzematge, Key Vault). ReadOnly només en casos molt justificats i amb proves prèvies.
- Moure recursos entre grups i subscripcions
Els recursos es poden moure, però amb regles. És una operació habitual quan reorganitzes o quan un projecte passa de desenvolupament a producció.
# Moure un compte d'emmagatzematge a un altre grup de recursos de la mateixa subscripció.
# --ids accepta un o diversos ID complets, separats per espais.
az resource move \
--destination-group rg-contoso-reservas-pro \
--ids "/subscriptions/8f4c2b7a-1d3e-4a55-9c11-0a7b6e2d4f90/resourceGroups/rg-contoso-reservas-dev/providers/Microsoft.Storage/storageAccounts/sttarjetascontosodev"Límits que has de conèixer abans d'intentar-ho
- No tots els recursos es poden moure. Hi ha una llista oficial per tipus de recurs; comprova-ho sempre abans. Exemples habituals de restricció: passarel·les de VPN, algunes configuracions de xarxa i certs recursos amb dependències regionals.
- Moure no canvia la regió. Un recurs a West Europe continua a West Europe encara que el moguis a un grup la regió del qual sigui una altra. Per "moure'l de regió" cal recrear-lo o replicar-lo.
- Durant el moviment, el grup d'origen i el de destinació queden bloquejats per a escriptura fins que acabi.
- Cal moure els recursos dependents junts. Una VM necessita anar amb la seva interfície de xarxa, els seus discos i la seva IP pública.
- Els identificadors canvien, perquè l'ID inclou el grup. Qualsevol script, alerta o assignació de política que apunti a l'ID antic deixarà de funcionar.
- Les assignacions de permisos i les polítiques no viatgen amb el recurs: s'apliquen les del nou àmbit. Revisa l'accés després de moure.
- Moure entre subscripcions exigeix a més que totes dues siguin al mateix inquilí de Microsoft Entra ID i que els proveïdors estiguin registrats a la de destinació.
Consell pràctic: en un moviment important, valida primer:
# Simula la validació del moviment sense executar-lo (endpoint validateMoveResources).
# Si retorna error, et diu exactament quin recurs no es pot moure i per què.
az resource invoke-action \
--action validateMoveResources \
--ids "/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-dev" \
--request-body '{
"resources": ["/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-dev/providers/Microsoft.Storage/storageAccounts/sttarjetascontosodev"],
"targetResourceGroup": "/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-pro"
}'
- Etiquetes: per a què serveixen de debò
Una etiqueta (tag) és un parell nom-valor que s'adjunta a una subscripció, un grup de recursos o un recurs. Cada recurs admet fins a 50 etiquetes.
Les etiquetes semblen un adorn fins que l'empresa té 400 recursos. Llavors es converteixen en l'única manera de respondre a preguntes crítiques:
| Pregunta real | Etiqueta que la respon |
|---|---|
| Quant ens costa el projecte de reserves comparat amb el de fidelització? | proyecto |
| A quin centre de cost imputem aquesta factura? | centro-coste |
| A qui truco si aquesta màquina falla diumenge? | propietario |
| Quins recursos són de producció i no es poden tocar? | entorno |
| Què es pot apagar a la nit per estalviar? | horario o entorno |
| Quins recursos contenen dades personals? | clasificacion-datos |
És a dir: cost, propietat i compliment. Sense etiquetes, la conversa del mòdul 8 amb la Nuria Peña ("per què gastem 4.000 € aquest mes?") és impossible de mantenir, perquè Cost Management et sabrà dir que gastes en màquines virtuals, però no de qui són.
L'herència que NO existeix
Les etiquetes no s'hereten. Una etiqueta posada en un grup de recursos no apareix als recursos que conté. És el parany número u d'Azure per a qui ve del portal, perquè tota la resta (permisos, polítiques, bloquejos) sí que s'hereta.
Per què importa tant? Perquè els informes de cost s'agreguen per l'etiqueta del recurs que genera el càrrec. Si vas etiquetar només el grup, els teus informes per centro-coste sortiran buits.
Les tres solucions reals:
- Etiquetar en la creació, sempre, a la pestanya Etiquetes o amb el paràmetre
--tags. És la disciplina bàsica. - Azure Policy amb efecte
Modify: una política que afegeix automàticament al recurs l'etiqueta heretada del grup. És la solució professional i es veu a la lliçó 04-06. - Infraestructura com a codi: les etiquetes van escrites a la plantilla i s'apliquen soles a cada desplegament (lliçó 05-06).
Altres detalls operatius:
- Els noms d'etiqueta no distingeixen majúscules de minúscules per a les operacions, però els valors sí que les conserven tal com les escrius. Tria un format i respecta'l:
produccioniProducciones comptaran com a valors diferents als informes. - No posis secrets a les etiquetes: són visibles per a qualsevol amb permís de lectura.
- Alguns tipus de recurs no admeten etiquetes; són minoria, però existeixen.
Treballar amb etiquetes des de la CLI
# Aplicar (o substituir) el conjunt complet d'etiquetes d'un grup de recursos.
# Compte: "az tag create" SUBSTITUEIX totes les etiquetes existents.
az tag create \
--resource-id "/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-pro" \
--tags entorno=produccion proyecto=contoso-reservas centro-coste=CC-1042 [email protected]
# Afegir o actualitzar etiquetes SENSE esborrar les que ja existeixen.
az tag update \
--resource-id "/subscriptions/{sub}/resourceGroups/rg-contoso-reservas-pro" \
--operation Merge \
--tags criticidad=alta
# Llistar tots els recursos que porten una etiqueta concreta, a tota la subscripció.
az resource list --tag proyecto=contoso-reservas --output table
# Veure les etiquetes d'un recurs concret en format JSON.
az resource show \
--name sttarjetascontosodev \
--resource-group rg-contoso-reservas-dev \
--resource-type "Microsoft.Storage/storageAccounts" \
--query tagsSortida típica de l'última ordre:
{
"centro-coste": "CC-1042",
"entorno": "desarrollo",
"propietario": "[email protected]",
"proyecto": "contoso-reservas"
}I al portal: recurs o grup → secció Etiquetes → afegir parells nom/valor → Aplica. Per etiquetar molts recursos alhora, fes servir Tots els recursos, marca les caselles i prem Assigna etiquetes.
- L'esquema d'etiquetatge de Contoso Airlines
La Marta Ríos publica aquest esquema com a norma interna. És obligatori a tots els recursos i el farem servir durant tot el curs.
| Etiqueta | Obligatòria | Valors permesos | Per a què |
|---|---|---|---|
entorno |
Sí | produccion, desarrollo, pruebas |
Distingir què es pot tocar i què no; base de les polítiques |
proyecto |
Sí | contoso-reservas (i futurs projectes) |
Agrupar cost per producte |
centro-coste |
Sí | CC-1042 (reserves) |
Imputació comptable per a la Nuria Peña |
propietario |
Sí | Correu corporatiu d'una persona | Saber a qui trucar |
criticidad |
Recomanada | alta, media, baja |
Prioritzar en incidències i decidir la redundància |
horario |
Opcional | 24x7, laborable |
Permetre l'apagada automàtica nocturna (mòdul 7) |
Regles de l'esquema:
- Tots els valors en minúscules i sense accents, perquè els informes agrupin bé.
propietarioés sempre una persona, no un departament: els departaments no responen al telèfon.- Els recursos sense les quatre etiquetes obligatòries es marquen com a no conformes i apareixeran a l'informe de compliment quan implantem Azure Policy (lliçó 04-06).
Aplicat als recursos que ja coneixes:
# Etiquetatge complet del grup de producció de Contoso.
az group create \
--name rg-contoso-reservas-pro \
--location westeurope \
--tags entorno=produccion \
proyecto=contoso-reservas \
centro-coste=CC-1042 \
[email protected] \
criticidad=alta \
horario=24x7
- Plantilles ARM i Bicep com a concepte
Ja saps que ARM accepta descripcions declaratives de l'estat desitjat. Aquestes descripcions són les plantilles ARM (JSON) i Bicep (un llenguatge més llegible que es compila a JSON). Aquí només el concepte: el desenvolupament complet és a la lliçó 05-06.
Una plantilla ARM en JSON, reduïda al mínim:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"nomCompte": { "type": "string" }
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[parameters('nomCompte')]",
"location": "westeurope",
"sku": { "name": "Standard_LRS" },
"kind": "StorageV2",
"tags": {
"entorno": "desarrollo",
"proyecto": "contoso-reservas",
"centro-coste": "CC-1042",
"propietario": "[email protected]"
}
}
]
}El mateix en Bicep, molt més llegible:
param nomCompte string
resource compte 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: nomCompte
location: 'westeurope'
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
tags: {
entorno: 'desarrollo'
proyecto: 'contoso-reservas'
'centro-coste': 'CC-1042'
propietario: '[email protected]'
}
}Tres idees per quedar-se:
- És declaratiu: descrius el resultat, no els passos. ARM calcula què cal crear, modificar o deixar igual.
- És idempotent: desplegar cinc vegades deixa el mateix resultat que desplegar-ne una.
- És versionable: la plantilla viu a Git, es revisa en una pull request i es desplega des d'una canalització (mòdul 5).
Truc d'aprenentatge que ja vas veure al portal: en qualsevol recurs, secció Automatització → Exporta la plantilla, obtens el JSON del recurs existent. És la millor manera d'aprendre la sintaxi a partir d'una cosa que ja funciona.
- Límits i quotes de subscripció
Azure no és infinit. Cada subscripció té límits (alguns fixos, altres ampliables obrint una sol·licitud de suport). Assabentar-se d'un límit enmig d'un desplegament urgent és una experiència desagradable i evitable.
| Element | Límit orientatiu per subscripció | Ampliable |
|---|---|---|
| Grups de recursos | 980 | No |
| Recursos per grup de recursos | 800 per tipus de recurs (varia) | Alguns sí |
| Nuclis de màquina virtual per regió | Quota inicial baixa (sovint 10-20 en comptes nous), per família de VM | Sí, és la sol·licitud més comuna |
| Comptes d'emmagatzematge per regió | 250 | Sí |
| Xarxes virtuals | 1.000 | Sí |
| Adreces IP públiques estàndard | 1.000 | Sí |
| Etiquetes per recurs | 50 | No |
| Desplegaments per grup de recursos (històric) | 800 | No (es depura l'històric) |
Les xifres exactes canvien; consulta sempre "Subscripció d'Azure i límits, quotes i restriccions del servei" a la documentació oficial.
La quota que més problemes dona als principiants és la de nuclis de VM per regió i família: un compte gratuït nou pot tenir marge per a molt poques màquines, i l'error en desplegar ("Operation could not be completed as it results in exceeding approved quota") desconcerta perquè sembla una errada del desplegament i no ho és.
Consultar la teva quota real:
# Ús i límit de nuclis de còmput a West Europe.
# CurrentValue = el que ja fas servir; Limit = el teu sostre actual.
az vm list-usage --location westeurope --output table
# Filtrar només les famílies on ja estàs consumint alguna cosa.
az vm list-usage --location westeurope \
--query "[?currentValue > \`0\`].{Recurs:localName, Usat:currentValue, Limit:limit}" \
--output tablePer ampliar la quota: portal → Subscripcions → la teva subscripció → Ús + quotes → Sol·licita un augment. Se sol resoldre en minuts o hores.
Errors Comuns i Consells
- Crear un grup de recursos "calaix de sastre". Si no saps per què un recurs és allà, està mal ubicat. Agrupa per cicle de vida.
- Creure que les etiquetes s'hereten. No s'hereten. Etiqueta cada recurs en la creació o automatitza-ho amb Azure Policy.
- Etiquetar amb valors inconsistents.
Produccion,produccion,PROiprodsón quatre valors diferents als informes de cost, i l'informe queda inservible. Fixa el vocabulari i respecta'l. - Posar
ReadOnlyalegrement. Pot trencar aplicacions en impedir operacions que semblen de lectura però són d'escriptura (com llistar claus). Prova-ho primer a desenvolupament. - Confiar en
CanNotDeleteper protegir dades. Protegeix el recurs, no el seu contingut. Els blobs de dins es poden esborrar igualment. - Moure recursos sense comprovar la llista de compatibles ni avisar que els ID canviaran. Revisa després les alertes, els scripts i els permisos.
- Ignorar el registre de proveïdors en automatitzar en una subscripció nova. Registra els proveïdors al principi de l'script.
- Descobrir la quota de nuclis enmig d'un desplegament. Consulta-la abans amb
az vm list-usage. - Consell de cost: els grups de recursos, les etiquetes i els bloquejos són gratuïts. Fes-los servir sense por: són la infraestructura de governança més barata que existeix i la que més diners estalvia a mitjà termini.
Exercicis
Exercici 1: Dissenyar l'organització de recursos
Contoso Airlines llançarà a més un programa de fidelització ("Contoso Millas"), amb el seu propi web, la seva base de dades i el seu centre de cost CC-2077, propietat d'en Diego Salas. Compartirà la xarxa virtual corporativa i el Key Vault existents.
- Proposa els grups de recursos necessaris i què conté cadascun.
- Justifica per què la xarxa virtual no ha d'estar al grup del projecte.
- Escriu el conjunt d'etiquetes obligatòries per al grup de producció de Contoso Millas.
Exercici 2: Llegir i construir identificadors
- Descompon aquest ID en les seves cinc parts i indica què és cadascuna:
/subscriptions/8f4c2b7a-1d3e-4a55-9c11-0a7b6e2d4f90/resourceGroups/rg-contoso-red-pro/providers/Microsoft.Network/virtualNetworks/vnet-contoso-pro
- Construeix l'ID que tindria una subxarxa anomenada
snet-webdins d'aquesta mateixa xarxa virtual. - Escriu l'ordre de la CLI que retorna només l'ID del compte d'emmagatzematge
sttarjetascontosoprodel gruprg-contoso-reservas-pro.
Exercici 3: Protegir i consultar
- Escriu les ordres per crear el grup
rg-contoso-reservas-proa West Europe amb les quatre etiquetes obligatòries i aplicar-hi un bloqueigCanNotDelete. - Escriu l'ordre que llista tots els recursos de la subscripció etiquetats amb
proyecto=contoso-reservas. - La Marta intenta esborrar el grup des del portal i falla. Explica què passa i què ha de fer per aconseguir-ho legítimament.
- En Diego posa
ReadOnlysobre el grup de desenvolupament i, l'endemà, l'aplicació de proves deixa d'arrencar perquè no pot llegir les claus del compte d'emmagatzematge. Explica per què.
Solucions
Solució 1:
- Grups proposats:
| Grup | Contingut |
|---|---|
rg-contoso-millas-pro |
Web, base de dades i emmagatzematge de fidelització en producció |
rg-contoso-millas-dev |
Els mateixos components en desenvolupament |
rg-contoso-red-pro (ja existeix) |
Xarxa virtual i subxarxes, compartides |
rg-contoso-seguridad-pro (ja existeix) |
Key Vault i Log Analytics, compartits |
-
La xarxa virtual té un cicle de vida diferent: sobreviu als projectes i la comparteixen diverses aplicacions. Si visqués dins del grup del projecte, en retirar Contoso Millas s'esborraria la xarxa de tothom, i a més caldria donar als desenvolupadors permisos sobre un recurs d'infraestructura que no han d'administrar.
-
Etiquetes del grup de producció de Millas:
az group create \
--name rg-contoso-millas-pro \
--location westeurope \
--tags entorno=produccion \
proyecto=contoso-millas \
centro-coste=CC-2077 \
[email protected]Solució 2:
- Descomposició:
| Part | Valor |
|---|---|
| Subscripció | 8f4c2b7a-1d3e-4a55-9c11-0a7b6e2d4f90 |
| Grup de recursos | rg-contoso-red-pro |
| Proveïdor | Microsoft.Network |
| Tipus de recurs | virtualNetworks |
| Nom | vnet-contoso-pro |
- ID de la subxarxa (recurs fill, s'hi imbrica tipus/nom):
/subscriptions/8f4c2b7a-1d3e-4a55-9c11-0a7b6e2d4f90/resourceGroups/rg-contoso-red-pro/providers/Microsoft.Network/virtualNetworks/vnet-contoso-pro/subnets/snet-web
- Ordre:
az storage account show \
--name sttarjetascontosopro \
--resource-group rg-contoso-reservas-pro \
--query id --output tsvSolució 3:
- Creació i bloqueig:
az group create \
--name rg-contoso-reservas-pro \
--location westeurope \
--tags entorno=produccion proyecto=contoso-reservas \
centro-coste=CC-1042 [email protected]
az lock create \
--name "no-borrar-produccion" \
--lock-type CanNotDelete \
--resource-group rg-contoso-reservas-pro \
--notes "Plataforma de venda en produccio"- Llistat per etiqueta:
-
El bloqueig
CanNotDeleteimpedeix l'eliminació encara que la Marta en sigui propietària. Per esborrar-lo legítimament ha d'eliminar primer el bloqueig (az lock deleteo portal → Bloquejos), cosa que exigeix permís sobreMicrosoft.Authorization/locks, i després esborrar el grup. Aquest pas extra, deliberadament incòmode, és exactament el punt: obliga a una decisió conscient. -
Perquè
ReadOnlybloqueja qualsevol operació d'escriptura al pla de control, i obtenir les claus d'un compte d'emmagatzematge s'implementa com l'acciólistKeys, que ARM classifica com a escriptura. L'aplicació no pot recuperar les claus i falla en arrencar. Solució: retirar elReadOnly(fer servirCanNotDeleteen el seu lloc) i, millor encara, deixar de fer servir claus i passar a identitats administrades (lliçó 04-02).
Conclusió
Azure Resource Manager és el pla de control únic d'Azure: portal, CLI, PowerShell, SDK i plantilles parlen amb la mateixa API, i per això els permisos, les polítiques i l'auditoria són coherents vinguis d'on vinguis. S'hi recolza la jerarquia grup d'administració → subscripció → grup de recursos → recurs, on els permisos i les polítiques s'hereten cap avall... i les etiquetes no.
Has après a llegir un ID de recurs, a registrar proveïdors, a agrupar recursos per cicle de vida i entorn (evitant el "tot junt" i l'"un per tipus"), a protegir producció amb bloquejos —coneixent els paranys de ReadOnly i els límits de CanNotDelete—, a moure recursos sabent que els ID canvien i que els permisos no viatgen, i a dissenyar un esquema d'etiquetatge seriós: el de Contoso Airlines, amb entorno, proyecto, centro-coste i propietario com a obligatòries. També has vist de què van les plantilles ARM i Bicep, i on són els límits i quotes que convé mirar abans i no després.
Has notat que en aquesta lliçó els exemples ja eren, gairebé tots, ordres. No és casualitat: governar desenes de recursos amb etiquetes i bloquejos a força de clics no escala. A l'última lliçó del mòdul, Azure CLI, PowerShell i Cloud Shell, aprendràs a manejar Azure des de la línia d'ordres i escriuràs el teu primer script complet, parametritzat i idempotent, que crea tota la base de Contoso Airlines i sap netejar-se després.
Curs d'Azure
Mòdul 1: Introducció a Azure
- Què és Azure?
- Models de servei, regions i zones de disponibilitat
- Crear i configurar el teu compte d'Azure
- Recorregut pel portal d'Azure
- Azure Resource Manager: subscripcions, grups de recursos i etiquetes
- Azure CLI, PowerShell i Cloud Shell
Mòdul 2: Serveis principals d'Azure
- Màquines virtuals d'Azure
- Escalat i alta disponibilitat del còmput
- Azure App Service
- Azure Storage: blobs, fitxers, cues i taules
- Xarxes a Azure: xarxes virtuals, subxarxes i NSG
- Connectivitat híbrida i lliurament global
Mòdul 3: Bases de dades d'Azure
- Triar el servei de dades adequat
- Azure SQL Database
- Azure Cosmos DB
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Analítica de dades: Data Lake, Data Factory i Synapse
Mòdul 4: Seguretat a Azure
- Microsoft Entra ID i gestió d'identitats
- RBAC i identitats administrades
- Azure Key Vault
- Protecció DDoS i tallafoc d'aplicacions web
- Microsoft Defender for Cloud
- Governança i compliment amb Azure Policy
Mòdul 5: Azure DevOps
- Introducció a Azure DevOps
- Azure Repos
- Azure Pipelines: integració contínua
- Desplegament continu amb entorns i aprovacions
- Azure Artifacts
- Infraestructura com a codi amb Bicep
Mòdul 6: Serveis avançats d'Azure
- Contenidors a Azure: Container Registry i Container Apps
- Azure Kubernetes Service (AKS)
- Azure Functions
- Azure Logic Apps
- Missatgeria i esdeveniments: Service Bus, Event Grid i Event Hubs
- Serveis d'IA d'Azure
Mòdul 7: Monitoratge i gestió
- Azure Monitor: mètriques, alertes i taulers
- Log Analytics i consultes KQL
- Application Insights
- Azure Automation i runbooks
- Còpies de seguretat i recuperació davant desastres
Mòdul 8: Gestió i optimització de costos
- Calculadora de preus i estimació de costos
- Azure Cost Management: anàlisi, pressupostos i alertes
- Reserves, plans d'estalvi i Azure Hybrid Benefit
- Azure Advisor
- Estratègies d'optimització i cultura FinOps
