Azure Lesson 2 of 137

What Is Azure? Accounts, Subscriptions, Regions & Resource Groups

If you have never touched a cloud platform before, Azure can feel like an ocean of unfamiliar words — tenant, subscription, resource group, region, ARM. This lesson is the map. By the end you will understand what “the cloud” and Microsoft Azure actually are, how Azure organises everything you create into a clean nested hierarchy, where your resources physically live, who is responsible for what, and how the bill is calculated — and you will have run real commands and created (then deleted) your first piece of Azure infrastructure.

This is the first lesson in the Azure Zero-to-Hero course, so we assume zero prior cloud experience and define every term the first time it appears — but we go deeper than a typical intro. Where most introductions narrate, this one enumerates: every service model, every layer of the hierarchy, every region concept, every billing lever, every beginner failure mode is laid out as a scannable table you can return to. Everything here maps directly to the AZ-900: Azure Fundamentals certification, and lays groundwork for AZ-104 (Administrator).

A note on how to read this lesson: read the prose once to build the mental model, then keep the tables open as your reference. The single most valuable habit you can form on day one is knowing which layer a problem lives in — a billing surprise lives at the subscription, a “can’t reach the database” lives in the network (not the resource group), a “deploy was denied” lives in RBAC or Policy. The tables below are organised so you can find the right layer in seconds.

What problem this solves

Before the cloud, standing up a new application meant a procurement cycle: size the hardware, raise a purchase order, wait weeks for servers to arrive, rack them, cable them, install an operating system, and hope you sized it right — because if you under-provisioned you were stuck, and if you over-provisioned you had paid for idle metal. Scaling for a sale meant buying for the peak and wasting it the other 360 days. A failed disk at 3 a.m. was your problem. Disaster recovery meant a second data centre you also paid for and rarely tested.

Azure removes that entire category of pain. You rent computing on demand: ask for a server, a database, or storage; it appears in minutes; you pay only while you use it; you give it back when you are done. But trading hardware ownership for a rented global platform introduces a new set of things a beginner must understand or get burned by — where does a resource live and bill, who is allowed to create it, what keeps it running when a data centre fails, and whose job is security now. Get the mental model wrong and the classic beginner incidents follow: charges landing in the wrong place, a forgotten VM quietly running up a bill, a deploy denied with a cryptic AuthorizationFailed, or a storage account left open to the internet.

Who hits this: literally everyone starting on Azure. The hierarchy, regions, ARM and the shared-responsibility split are not optional trivia — they are the load-bearing concepts every later lesson assumes. This article exists so that when you create your first real resource, you know exactly which subscription it bills to, which region it sits in, why deleting a resource group is the cleanest way to stop charges, and which security duties just became yours.

To frame the whole field before the deep dive, here is every concept this article covers, the beginner question it answers, and where it sits:

Concept area The beginner question it answers Where it lives First lesson it unlocks
Cloud + service models “What am I actually renting, and how much do I manage?” Conceptual Choosing IaaS vs PaaS vs SaaS
The hierarchy “Where does everything I create go?” Tenant → RG Naming, governance, RBAC
Regions & zones “Where does it physically run, and how does it stay up?” Geography High availability & DR design
ARM (control plane) “What happens when I click Create?” Azure-wide API Infrastructure as code
Billing “How is the bill calculated and how do I control it?” Subscription Cost management & FinOps
Shared responsibility “Whose job is security now?” Across the stack Identity, network, data security

Learning objectives

By the end of this lesson you can:

Prerequisites & where this fits

You need only basic IT literacy — you know what a file, a network, and a terminal are. No prior cloud experience is required. For the hands-on lab you need a free Azure account (the free tier or trial credit is more than enough; the lab itself costs nothing). This lesson is Lesson 1 of Module 1 — Foundations in the Azure Zero-to-Hero course. It builds the vocabulary and mental model that every later lesson assumes, so it is worth getting comfortable here before moving on.

Here is exactly what you should already know, what this lesson teaches, and where each thread continues — so you can see the shape of the journey:

Topic Assumed before this lesson Taught here Goes deeper in
Terminals / CLI You can type commands and read output Running az in Cloud Shell Working with Azure: Portal, CLI, PowerShell & Cloud Shell
Identity What a user account is Tenant, Entra ID basics Microsoft Entra ID Fundamentals
Networking What an IP and a network are RG is not a network boundary Azure Virtual Network Basics
Regions / HA Nothing Regions, zones, region pairs Azure Global Infrastructure: Regions, Zones, Fault & Update Domains
Governance Nothing Management groups, subscriptions Azure RBAC & Governance Deep Dive
Cost A monthly-bill intuition Consumption pricing, tags, budgets Azure Cloud Economics: Pricing, TCO, SLA & Support

What is “the cloud”, and what is Azure?

“The cloud” is a marketing word for a simple idea: instead of buying, racking, and maintaining your own computers, you rent computing on demand from a provider who runs enormous data centres for you. You ask for a server, a database, or storage; it appears in minutes over the internet; you pay only while you use it; and you give it back when you are done. No purchase orders, no waiting weeks for hardware, no replacing failed disks at 3 a.m.

Microsoft Azure is one of the three big public-cloud providers (alongside Amazon Web Services and Google Cloud): a global collection of data centres plus a catalogue of services — virtual machines, databases, storage, networking, AI, and hundreds more — that you provision and control through a web portal, a command line, or code.

The cloud is described by a handful of essential characteristics that distinguish it from a rented server in a colocation cage. These are worth pinning down because each maps to a concrete benefit you will use:

Characteristic What it means Concrete Azure example Why a beginner cares
On-demand self-service Provision without human intervention az group create returns in seconds No tickets, no waiting on a vendor
Broad network access Reach it over standard internet Portal, CLI, REST from anywhere Work from a laptop, no VPN to “the lab”
Resource pooling Shared multi-tenant infrastructure Many customers per physical host Drives the low per-unit price
Rapid elasticity Scale up/out and back in minutes Autoscale a web app for a sale Pay for peak only when peak happens
Measured service Metered, pay-per-use billing Per-second VM, per-GB storage Delete it and the charge stops

There are also three deployment modelswhere the cloud lives — which you should be able to name even though this course focuses on public cloud:

Deployment model Where it runs Who operates it Typical use
Public cloud Microsoft data centres, shared Microsoft Most workloads; lowest cost, fastest start
Private cloud Your own data centre (e.g. Azure Stack HCI) You Strict residency / latency / regulatory needs
Hybrid cloud A mix, connected together Both Gradual migration; burst-to-cloud; on-prem ties

The classic way to describe how much of the stack the provider manages for you is the three service models — how much of the meal you cook yourself versus how much the restaurant handles:

Model You manage Provider manages Everyday Azure example
IaaS (Infrastructure as a Service) OS, runtime, your app, your data Physical servers, storage, networking, virtualisation Azure Virtual Machines
PaaS (Platform as a Service) Just your app and data OS, patching, scaling, runtime Azure App Service, Azure SQL Database
SaaS (Software as a Service) Only your configuration and data The entire application Microsoft 365, Outlook.com

The trade-off is control vs. effort: IaaS gives you the most of both, SaaS the least, and most real systems mix all three. To make the choice concrete rather than abstract, here is the same spectrum read as a decision aid — what each model gives and takes:

Dimension IaaS PaaS SaaS
Control over OS / runtime Full Limited None
Operational effort (patching, scaling) High (yours) Low None
Time to first running app Hours–days Minutes Instant (sign up)
Portability between clouds High Medium Low (vendor-bound)
Typical cost per unit of work Higher (you run idle capacity) Lower Subscription per seat
Best for Lift-and-shift, special OS needs, full control New apps, APIs, fast delivery Buy don’t build (email, CRM)

A useful instinct to build early: prefer the highest-level (most managed) option that still meets your requirements, because every layer you hand to Microsoft is a layer you no longer have to patch, scale, or page someone about. Concretely:

If your situation is… Lean toward Because
A brand-new web app or API PaaS (App Service) No OS to patch; scaling and TLS built in
You need a specific OS kernel/driver or legacy software IaaS (VM) Full control of the machine
A capability that already exists as a product (email, ticketing) SaaS Don’t rebuild what you can rent
Event-driven, spiky, “only run on a request” PaaS serverless (Functions) Scale to zero; pay per execution
Strict data residency or air-gapped Private/Hybrid Keep data on infrastructure you control

Core concepts

Five mental models make everything later in this lesson — and the whole course — fall into place. Read these once; the rest of the article is elaboration.

Azure is a hierarchy of nested scopes. Everything you create lives inside a clean ladder: tenant → management group → subscription → resource group → resource. Governance (policy, access) flows down this ladder by inheritance; billing rolls up it. Knowing which scope a thing belongs to tells you who can manage it, where it bills, and what rules apply.

A subscription is the billing-and-isolation boundary; a resource group is a lifecycle folder. These two are the most-used scopes and the most-confused. The subscription collects costs into one invoice and enforces quotas. The resource group is a logical folder for resources that share a lifecycle, so you deploy and delete them as a unit. Critically, a resource group is not a network or security boundary — a common beginner trap.

Every resource physically lives in a region, optionally spread across zones. A region is a geography with data centres; an availability zone is a physically separate building inside that region. Region choice drives latency, residency and cost; zones give you high availability; region pairs give you disaster recovery.

One control plane — ARM — fronts everything. Portal, CLI, PowerShell and code all call Azure Resource Manager. ARM authenticates you, authorises against your RBAC, enforces Azure Policy, routes to the right resource provider, and logs the action. Because they all funnel through ARM, the tools are interchangeable and deployments are declarative and idempotent.

Security is shared, and identity + data are always yours. Moving to the cloud does not make security entirely Microsoft’s problem. The split shifts with the service model, but your data, your identities and access, and your configuration are always on your side of the line — and that is where most cloud incidents actually happen.

The vocabulary in one table

Before the deep sections, pin down every moving part. The glossary at the end repeats these for lookup; this table is the mental model side by side:

Concept One-line definition Where it sits Bounds what Does NOT bound
Entra tenant One instance of the identity directory Top of the ladder Who can sign in (identity) Billing, network
Management group Container for subscriptions Below tenant Governance at scale (policy/RBAC) Billing per-MG
Subscription Billing + quota + management scope Below MG Cost, quotas, isolation Network reachability
Resource group Lifecycle folder for resources Below subscription Lifecycle, RBAC scope, cost roll-up Network, security perimeter
Resource One service instance (VM, DB, storage) Inside an RG The actual thing
Region Geography with data centres Physical Latency, residency, price (placement, not access)
Availability zone Separate building within a region Inside a region Fault isolation (HA) Cross-region failure
Region pair Two regions in one geography Across regions Disaster recovery Day-to-day latency
ARM The control-plane API Azure-wide Create/read/update/delete The data plane
Tag Key–value label on a resource On resources Cost/ownership attribution Access (tags aren’t security)

How Azure organises everything: the hierarchy

The single most important mental model in this lesson is how Azure structures what you create. Everything you ever build sits inside a clean, nested hierarchy. From the top down:

Here is the full ladder as a reference — what each layer is for, who typically owns it, and what governance you attach there:

Layer Primary purpose What you attach here Typical owner Cardinality
Entra tenant Identity / trust anchor Users, groups, app registrations, Conditional Access Identity team / org 1 per organisation (usually)
Root management group Org-wide guardrails Baseline policies, break-glass RBAC Platform / governance Exactly 1 (auto-created)
Management group Group subscriptions for scale Policy, RBAC, initiative assignments Platform team 0…6 levels of nesting
Subscription Billing, quota, isolation Budgets, subscription-level RBAC, policies App / platform owner Many per tenant
Resource group Lifecycle + cost roll-up RBAC, tags, locks, deployment scope App / project team Many per subscription
Resource Deliver the actual service The config of that one thing The app / dev team Many per RG

A crucial property of this ladder is inheritance: governance set high up flows down and is additive for access. The table below makes explicit what flows and what does not — this is where beginners build wrong intuitions:

Thing set at a scope Inherited downward? Notes
RBAC role assignment Yes (additive) A role at the subscription applies to every RG and resource in it
Azure Policy assignment Yes A “allowed regions” policy on a MG constrains all subscriptions beneath
Resource lock (CanNotDelete/ReadOnly) Yes A lock on an RG protects every resource inside
Tags No (by default) Tags do not auto-inherit to children; use Azure Policy to enforce/append
Deny assignments Yes From Azure Blueprints / managed apps; override allow grants
Cost (charges) Rolls up, not down Resource → RG → subscription → MG (for reporting)

The resource group deserves special emphasis because it is the scope you will touch most, and the one most misunderstood:

Property of a resource group True? What beginners often assume
Holds resources that share a lifecycle Yes (correct)
Deleting it deletes all resources inside Yes Sometimes forgotten — it’s the cleanup superpower
Is a billing roll-up point Yes Useful for “what does this app cost?”
Is an RBAC assignment scope Yes Grant Contributor on an RG, not the whole subscription
Is a network boundary No Wrongly assumed — sharing an RG does not connect resources
Is a security boundary No Wrongly assumed — separate RGs do not isolate traffic
Can span regions Yes (resources in different regions) The RG has a metadata location; resources pick their own
Resources can reference across RGs Yes A VM in one RG can use a VNet in another

Azure organised left to right as five zones — an Entra tenant identity boundary, a governance hierarchy of management group and subscription, the Azure Resource Manager control plane with Azure Policy and the Activity Log, a workload zone of resource group and resources, and a physical zone of region, availability zones and region pair — with numbered badges marking the five places a beginner's first deployment typically breaks

One nuance beginners often miss, restated because it matters: a resource group is a management and lifecycle boundary, not a security or network boundary. Sharing a resource group does not let two resources reach each other on the network, and separate groups do not isolate them. Network reachability is controlled by virtual networks and firewalls (covered in Azure Virtual Network Basics), and access by RBAC.

Where your resources live: regions, region pairs, and availability zones

When you create a resource, you choose a region — a geographic location where Azure has data centres, such as Central India, West Europe, or East US. Region choice matters for several reasons, each of which becomes a design constraint later:

Reason region choice matters What it controls Example consequence of getting it wrong
Latency Round-trip time to your users India users on a US region feel 200+ ms lag
Data residency Which country/geo your data sits in Regulated data in the wrong geography = compliance breach
Service availability Not every service is in every region The SKU you need isn’t offered there → redesign
Price Prices vary slightly by region The “cheap” region may lack the feature you need
Zone support Some regions have availability zones, some don’t No zones = no in-region HA option
Capacity Popular regions can hit capacity limits A VM family may be temporarily unavailable

Within most regions, Azure offers availability zones (AZs): physically separate locations inside the same region, each with independent power, cooling, and networking, connected by a fast low-latency link. Spreading a workload across Zone 1, Zone 2, and Zone 3 means that if one zone has an outage — a power failure or flood in one building — your application keeps running in the others. This is the standard way to achieve high availability within a region.

Azure also groups most regions into region pairs — two regions in the same geography (for example Central India paired with South India) used for disaster recovery. Some services replicate data to the paired region, and Microsoft rolls planned platform updates out to one region of a pair at a time to reduce risk. The pairing gives you a far-away copy to fail over to if an entire region is lost.

A quick way to remember the difference — the two concepts protect against different scales of failure:

Concept Protects against Distance Typical use What you do
Availability zone One data centre / building failing Same region, kilometres apart High availability Deploy across zones 1/2/3
Region pair An entire region failing Hundreds of km, same geography Disaster recovery Replicate + plan a failover
Multi-region active Region failure + global latency Different geographies Global apps, lowest latency Front Door / Traffic Manager

It also helps to name the related grouping concepts you will meet later, so the vocabulary is not new when it arrives:

Term Definition Why it exists
Geography A discrete market/area (e.g. India, Europe) containing ≥1 region Data-residency and compliance boundary
Region A set of data centres within a latency-defined perimeter The thing you pick when deploying
Availability zone One or more data centres with independent power/cooling/network In-region fault isolation
Region pair Two regions in the same geography, linked for DR Sequential updates + replication target
Availability set (legacy, IaaS) Fault + update domain grouping within one data centre Pre-zone HA for VMs
Fault domain (IaaS) A rack-level isolation unit within a data centre Spread VMs across power/network failure units
Update domain (IaaS) A maintenance-reboot grouping Limit how many VMs reboot together during platform updates
Edge / PoP Microsoft points of presence near users CDN, Front Door, low-latency entry

For your very first resources none of this costs extra to understand, but it shapes every serious design: zones for staying up, pairs for surviving a regional disaster. This is covered exhaustively in Azure Global Infrastructure: Regions, Zones, Fault & Update Domains.

The control plane: Azure Resource Manager (ARM)

Here is something that confuses many newcomers. When you click “Create” in the portal, run an az command, or apply infrastructure-as-code, all of those paths talk to the same service underneath: Azure Resource Manager (ARM). ARM is Azure’s control plane — the single front door for creating, reading, updating, and deleting resources.

Every request becomes a call to the ARM REST API. ARM then performs a fixed sequence of steps. Knowing this sequence tells you exactly where a failed deploy went wrong:

Step What ARM does If it fails you see Where to look
1. Authenticate Verifies your Entra identity / token 401, sign-in prompt az login; token expiry
2. Authorise Checks your RBAC at the target scope AuthorizationFailed (403) az role assignment list
3. Validate Schema-checks the request InvalidTemplate / bad-parameter The error detail / template
4. Policy Enforces Azure Policy rules RequestDisallowedByPolicy az policy state list
5. Quota Checks subscription limits QuotaExceeded Usage + quotas blade
6. Route Hands off to the resource provider MissingRegistrationForResourceProvider az provider register
7. Provision Provider builds the resource Provider-specific error Activity Log / deployment
8. Log Records to the Activity Log (audit only) az monitor activity-log list

Two consequences matter from day one. First, because portal, CLI, PowerShell, and code all funnel through ARM, they are interchangeable — create something in the portal, then manage it from the CLI without issue. The table below shows the four ways to drive ARM and when each shines:

Tool / path What it is Best for Idempotent?
Azure Portal Web GUI over ARM Exploring, one-off tasks, learning No (manual clicks)
Azure CLI (az) Cross-platform command line Scripts, automation, Linux/macOS Per command (mostly create-or-update)
Azure PowerShell (Az) PowerShell cmdlets Windows-centric automation Per cmdlet
ARM templates / Bicep Declarative IaC Repeatable, reviewed deployments Yes (desired-state)
Terraform (third-party) Declarative IaC, multi-cloud Cross-cloud estates Yes (state-tracked)
REST API / SDKs Direct programmatic access Apps, custom tooling Depends on calls

Second, with templates ARM is declarative and idempotent: you describe the desired end state, ARM converges to it, and re-running the same deployment is safe. That is the foundation of infrastructure as code, which the course returns to later.

It is also worth distinguishing the control plane (managing a resource — create/delete the database, via ARM) from the data plane (using it — run a query against the database, handled by the service directly). This distinction governs which permissions matter where:

Aspect Control plane Data plane
Example action Create / delete a storage account Upload a blob to it
Fronted by ARM (management.azure.com) The service endpoint (e.g. *.blob.core.windows.net)
Authorised by Azure RBAC Service auth (keys, SAS, or data-plane RBAC roles)
Logged in Activity Log Resource/diagnostic logs
Who typically uses it Admins, IaC pipelines The application / end users
A role like Owner grants… Full control-plane rights Not automatically data access (e.g. Owner ≠ blob data reader)

That last row trips up almost everyone once: being Owner of a storage account lets you delete it, but does not by itself let you read its blobs — you need a data-plane role like Storage Blob Data Reader. Control plane and data plane are governed separately by design.

How billing works

Azure billing follows the rented-computing idea: you mostly pay consumption-based (pay-as-you-go) prices — per second, per hour, per gigabyte stored, per million requests, or per transaction, depending on the service. There is no upfront hardware cost; you pay for what you use and stop paying when you delete the resource.

Different services meter on different units. Knowing the unit tells you how to control the cost:

Service Billed per Example unit price idea Lever to reduce it
Virtual Machine vCPU-second (rounded) Per-hour of the SKU while running Stop/deallocate; right-size; reserve
Blob storage GB-month + transactions Per-GB stored + per-10k ops Lifecycle to cool/archive tiers
App Service Instance-hour Per plan instance, regardless of apps Smaller SKU; scale in off-peak
Azure Functions (Consumption) Executions + GB-seconds Per-million executions Scales to zero — pay per request
Azure SQL (DTU/vCore) Compute-hour + storage Per-vCore-hour Serverless auto-pause; reserve
Managed disk Provisioned GB + IOPS tier Per-GB-month (size, not use) Right-size; delete orphaned disks
Key Vault Operations + (HSM) keys Per-10k operations Cache secrets; fewer reads
Bandwidth (egress) GB out of Azure Per-GB outbound (inbound free) Keep traffic in-region; CDN cache
Public IP / NAT / gateways Hourly + per-GB Per-hour + data processed Delete idle ones; consolidate

The hierarchy maps neatly onto billing, and a small set of tools and constructs do the cost management:

Construct What it does Where you set it Beginner habit
Subscription Accumulates charges into an invoice Account / EA / MCA Separate prod from dev
Resource group Rolls up cost per app/environment On creation One RG per app per env
Tags Key–value labels (env, owner, costCenter) Per resource (or via Policy) Tag from day one
Cost Management Analyse, forecast, export spend Subscription blade Check weekly
Budgets + alerts Email when spend crosses a threshold Cost Management Set on day one
Reservations 1–3 yr commit for big discount Cost Management For steady workloads only
Savings Plans Hourly compute commit, flexible Cost Management Mixed/changing compute
Azure Hybrid Benefit Reuse Windows/SQL licences On the resource If you own licences

Beyond pay-as-you-go, the commitment and licensing levers below cut steady-state cost substantially — they are optimisation topics for later (see Azure Cost: Reservations, Savings Plans & Hybrid Benefit), but worth knowing they exist:

Pricing option Commitment Typical saving Best for
Pay-as-you-go None Baseline (0%) Spiky, short-lived, experiments
Reservations 1 or 3 years, specific family Up to ~72% Predictable, always-on VMs/DBs
Savings Plans 1 or 3 years, $/hour compute Up to ~65% Steady but changing compute mix
Spot VMs None (evictable) Up to ~90% Fault-tolerant, interruptible batch
Azure Hybrid Benefit Own the licence Up to ~85% (with reservations) Existing Windows Server / SQL licences
Dev/Test pricing Eligible subscriptions Reduced rates Non-production environments

The key beginner habit is simpler than any of these: anything you create costs money until you delete it — which is exactly why every lab in this course ends with a cleanup step. Cost is explored in depth in Azure Cloud Economics: Pricing, TCO, SLA & Support and the FinOps cost-engineering guide.

The shared responsibility model

Moving to the cloud does not make security entirely Microsoft’s problem. Responsibility is shared, and the split depends on the service model:

Responsibility layer On-prem IaaS (e.g. VM) PaaS (e.g. App Service) SaaS (e.g. M365)
Data classification & accountability You You You You
Identity & access management You You You You (shared)
Endpoints / clients You You You You
Application code You You You Microsoft
Network controls You Shared Shared Microsoft
Operating system & patching You You Microsoft Microsoft
Virtualisation / host You Microsoft Microsoft Microsoft
Physical hosts, network, data centre You Microsoft Microsoft Microsoft

The single biggest takeaway for beginners: identity and data are always yours to protect. The most common cloud incidents are not Microsoft’s data centre failing — they are configuration and identity mistakes that sit squarely on your side of the line. Here are the classic ones and where they live:

Common cloud incident Whose side Root mistake The right control
Public storage container leaks data Yours Misconfigured access level Private by default; RBAC/SAS; firewall
Compromised admin via stolen password Yours No MFA Enforce MFA / passwordless
Over-permissive role causes blast-radius damage Yours Owner granted broadly Least privilege; scoped roles
Secret leaked in code / Git Yours Credentials in source Key Vault + managed identity
Region-wide platform outage Microsoft’s (mitigated by you) Single-region design Zones + region pair
Host hardware failure Microsoft’s (none — platform handles) Microsoft replaces it

Identity (Lesson 3, Microsoft Entra ID Fundamentals) gets heavy treatment in this course precisely because so much of the responsibility — and so many of the incidents — live there.

Architecture at a glance

Now put it together. The diagram below traces the life of a single deployment left to right, across the five layers this lesson has built up — and that is the most useful way to hold Azure in your head: not as a list of services, but as a path every az group create or portal click travels. Start at IDENTITY: you sign in (portal, CLI, or IaC) and Azure authenticates you against your Entra tenant, the one directory that says who you are. That identity then carries into GOVERNANCE, where your request is scoped by the management group → subscription hierarchy that decides where it bills, what quota it draws on, and which policies apply by inheritance.

The request lands at the CONTROL PLANEAzure Resource Manager — which is the single front door for everything: it authorises you against RBAC, runs your request past Azure Policy (for example an “allowed regions” guardrail), records the action in the Activity Log, and only then routes the work to the right resource provider. ARM provisions into the WORKLOAD zone: your resource group (the lifecycle folder, e.g. rg-shop-prod) and the resources inside it. Finally those resources are placed into the PHYSICAL zone — a region like Central India, ideally spread across availability zones 1/2/3 for high availability, with a region pair standing by for disaster recovery. The five numbered badges mark exactly where a beginner’s first deployment tends to break — wrong tenant, charges in the wrong subscription, a policy/authorisation denial, the resource-group-is-not-a-network trap, and a single-zone deploy with no redundancy — each of which reappears in the troubleshooting section with the exact command to confirm and fix it.

Azure organised as five left-to-right zones tracing one deployment — IDENTITY (user sign-in and a single Entra tenant), GOVERNANCE (management group and subscription enforcing policy, RBAC, billing and quota by inheritance), CONTROL PLANE (Azure Resource Manager as the single front door performing authorisation and validation, Azure Policy enforcing an allowed-regions guardrail, and the Activity Log capturing an audit trail), WORKLOAD (a resource group named rg-shop-prod holding resources such as a VM, database and storage), and PHYSICAL (a region such as Central India, three availability zones for high availability, and a paired region for disaster recovery) — with arrows labelled authenticated, ARM REST call, provision and placed-in, and five numbered failure badges for wrong tenant or missing MFA, charges in the wrong subscription, policy or authorisation blocking the deploy, the resource-group-is-not-a-network-boundary trap, and a single-zone deploy with no redundancy

The whole method of operating Azure follows this picture: when something goes wrong, locate which zone it lives in. A billing surprise is a GOVERNANCE/subscription question; a denied deploy is a CONTROL-PLANE authorisation/policy question; a “can’t reach the database” is a WORKLOAD/network question (never the resource group itself); an outage that should have been survivable is a PHYSICAL/zone question. Naming the zone first is what turns a vague problem into a one-command diagnosis.

Real-world scenario

Saffron Mart, a fictional but representative mid-sized Indian retailer, is moving from a single on-prem server to Azure. Their first month is a perfect catalogue of the mistakes this lesson prevents — and how the right mental model fixes each.

The team is three developers and one ops engineer, no prior cloud experience, with a target of running their checkout web app and its SQL database in Azure within a quarter, under a ₹40,000/month budget. They sign up for a free account, get trial credit, and start clicking.

Week 1 — the “where did it go?” problem. A developer creates a VM to test the app. It works. A second developer creates a database — but in a different subscription, because the portal happened to default there. Now the app VM and the database are in separate subscriptions, billed separately, and nobody can find the database in the cost view they were watching. The fix was conceptual, not technical: they learned that every resource lives in exactly one subscription, ran az account show to see which one was active, standardised on a single Saffron-Prod subscription, and recreated the database there. Lesson: pin your subscription context before you create anything.

Week 2 — the “they can’t talk to each other” trap. With everything now in one subscription, they put the web app and database in the same resource group, assuming that would let them communicate. The app still couldn’t reach the database. They spent half a day convinced Azure was broken. The truth: a resource group is a lifecycle folder, not a network boundary. Reachability is a virtual network concern. Once they put both into a VNet (and opened the right rule), it worked. Lesson: the RG groups for management and billing; the VNet connects.

Week 3 — the denied deploy. A junior developer tried to create a resource and hit AuthorizationFailed. The ops engineer had given them Reader on the subscription. They learned that ARM authorises every request against RBAC, that Reader can look but not create, and that Contributor (scoped to the dev resource group, not the whole subscription) was the least-privilege fix. Lesson: errors like this live at the control plane, and the fix is a scoped role.

Week 4 — the forgotten VM. The Week-1 test VM was never deleted. It quietly ran for three weeks and ate ₹6,000 of credit. The ops engineer set a budget with an alert at ₹30,000 in Cost Management, tagged everything with owner and env, and adopted the rule that every experiment goes in a disposable resource group you delete in one command. Lesson: anything you create costs money until you delete it; budgets and a cleanup discipline are not optional.

By the end of the month Saffron Mart was running the checkout app on App Service (PaaS) rather than a self-managed VM (no OS to patch), the database on Azure SQL, both in one resource group inside the Saffron-Prod subscription in Central India with zone redundancy, fronted by a budget alert, at about ₹22,000/month — comfortably under target. Every one of their four early incidents maps to exactly one concept in this lesson. The incident log, because the pattern is the lesson:

Week Symptom Wrong assumption The concept that fixes it The fix
1 DB and app billed separately, DB “missing” “Everything I make is in one place” Every resource lives in one subscription az account set; standardise the subscription
2 App can’t reach DB in the same RG “Same resource group = connected” RG is not a network boundary Put both in a VNet
3 AuthorizationFailed on create “I’m logged in, so I can deploy” ARM authorises via RBAC Grant scoped Contributor
4 ₹6,000 lost to an idle VM “If I’m not using it, it’s free” Charges accrue until deletion Budget + alert; disposable RGs

Advantages and disadvantages

The cloud model — and Azure’s particular shape of it — is overwhelmingly worth it for most workloads, but a beginner should weigh it honestly rather than treat it as magic:

Advantages (why the cloud wins) Disadvantages (why it bites)
No upfront hardware; pay only for what you use Easy to forget a resource and bleak money continuously
Provision in minutes, not weeks The hierarchy/region/RBAC model is a real learning curve
Elastic — scale up for a sale, back down after Costs are variable, so a runaway can surprise you
Global reach: deploy near users in any geography Data residency / sovereignty becomes your responsibility
Built-in HA (zones) and DR (region pairs) You must design for them; defaults aren’t always HA
Managed services remove patching/ops toil More managed = less control and more vendor lock-in
Microsoft secures the physical layer Identity/data/config security is squarely yours
One control plane (ARM) → consistent automation A misconfigured policy or role can block legitimate work

When does each side matter? The advantages dominate for new applications, spiky or seasonal workloads, startups avoiding capital expense, and any team that would rather ship features than rack servers. The disadvantages bite hardest for teams that lift-and-shift without learning the model (they recreate on-prem habits and get surprised by the bill), for highly regulated data with strict residency, and for workloads needing absolute control of the OS/kernel. The honest summary: the downsides are all manageable with knowledge — which is precisely why this lesson exists.

Hands-on lab

You will open Azure Cloud Shell — a full command-line environment that runs in your browser, pre-authenticated, with the az CLI already installed (nothing to install locally) — and create, inspect, tag, and delete your first resource group. A resource group is the safest possible “hello world”: it is free, and deleting it cleanly removes everything inside it.

Prerequisite: a free Azure account. If you do not have one, go to https://azure.microsoft.com/free and sign up (you need a Microsoft account and a card for identity verification — the free tier and trial credit mean this lab costs nothing), then sign in at https://portal.azure.com.

Step 1 — Open Cloud Shell

In the portal, click the Cloud Shell icon (>_) in the top toolbar, or browse to https://shell.azure.com. When prompted, choose Bash. The first time, Azure offers to create a small storage account to persist your shell files — accept the default (a few pennies a month) or pick the ephemeral option for none. You will land at a prompt already signed in as you.

Step 2 — Confirm your context

Check which subscription you are working in. Everything you create lands here and is billed here. This single command prevents the Week-1 mistake from the scenario above.

az account show --output table

Expected output (your values will differ):

Name                  CloudName    SubscriptionId                        State    IsDefault
--------------------  -----------  ------------------------------------  -------  ----------
Azure subscription 1  AzureCloud   00000000-0000-0000-0000-000000000000  Enabled  True

If you have more than one subscription, list them and select the right one before continuing:

az account list --output table
az account set --subscription "<your-subscription-name-or-id>"

Step 3 — Pick a region (optional but instructive)

List the regions available to you and note one close to you (for example centralindia or westeurope):

az account list-locations --query "[].name" --output tsv | sort

Step 4 — Create a resource group

Create a resource group named rg-kloudvin-lab in your chosen region. This is the same operation the portal performs when you click Create a resource group — both go through ARM.

az group create --name rg-kloudvin-lab --location centralindia

The equivalent in Bicep (infrastructure as code) — note that a resource group is deployed at subscription scope:

targetScope = 'subscription'

param location string = 'centralindia'

resource rg 'Microsoft.Resources/resourceGroups@2024-03-01' = {
  name: 'rg-kloudvin-lab'
  location: location
  tags: {
    env: 'learning'
    owner: 'your-name'
  }
}

Expected output (trimmed JSON) from the az command:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-kloudvin-lab",
  "location": "centralindia",
  "name": "rg-kloudvin-lab",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

The id is the resource group’s resource ID — notice it literally encodes the hierarchy: subscriptions/<id>/resourceGroups/<name>. Every resource in Azure has an ID in this shape. Decoding that ID is a skill worth having on day one:

Segment in a resource ID Example value What it tells you
/subscriptions/<guid> 00000000-...-000000000000 Which subscription bills it
/resourceGroups/<name> rg-kloudvin-lab Which lifecycle folder it’s in
/providers/<RP> Microsoft.Storage Which resource provider owns the type
/<type>/<name> storageAccounts/stkv001 The resource type and its name

"provisioningState": "Succeeded" confirms ARM completed the request.

Step 5 — Tag it for cost attribution

Add tags so this group can be sliced in Cost Management later — building the habit early:

az group update --name rg-kloudvin-lab \
  --set tags.env=learning tags.owner="$(az account show --query user.name -o tsv)"

Step 6 — Validate

Confirm the resource group exists and inspect it:

az group list --output table
az group show --name rg-kloudvin-lab --output table

You should see rg-kloudvin-lab with Location centralindia and ProvisioningState Succeeded. That is your validation: the resource group is real, in the region you chose, in your subscription. (It is empty — a resource group can exist with nothing inside it, which is perfectly normal.)

Step 7 — Cleanup

Always clean up. Deleting the resource group deletes everything inside it in one action — the core reason resource groups are so useful.

az group delete --name rg-kloudvin-lab --yes --no-wait

--yes skips the confirmation prompt; --no-wait returns immediately while Azure deletes in the background. Verify it is gone (it will briefly show Deleting, then disappear):

az group list --output table

The lab steps mapped to the concept each one proves:

Step What you did Concept it proves Real-world analogue
2 az account show Subscription context is explicit Avoiding the Week-1 billing mistake
4 az group create The portal and CLI both call ARM Any first deploy, any tool
4 Read the resource ID The ID encodes the hierarchy Reading any resource’s place in Azure
5 Tag the group Tags drive cost attribution Making the bill explainable
7 az group delete Deleting an RG removes all contents The cleanup superpower; stopping charges

Cost note: An empty resource group is free — you are charged for resources, not for the folder that holds them. This entire lab costs nothing beyond, at most, a few pennies for the optional Cloud Shell storage account (which you can also delete from the portal afterwards if you used it).

Common mistakes & troubleshooting

This is the part you bookmark. Every beginner hits some of these in their first week; each maps to exactly one of the concepts above, and each has a precise way to confirm the cause and fix it. First the scannable playbook table, then the expanded reasoning for the ones that bite hardest.

# Symptom Root cause Confirm (exact cmd / portal path) Fix
1 az: command not found on your own laptop Azure CLI isn’t installed locally which az returns nothing Use Cloud Shell (pre-installed), or install the CLI from Microsoft’s docs
2 Resources/charges appear in the “wrong place” A different subscription is the active default az account show --query name az account set --subscription "<name>" before creating anything
3 (LocationNotAvailableForResourceGroup) / region rejected Region name wrong or not enabled for you az account list-locations --query "[].name" -o tsv Use exact lowercase names (e.g. centralindia, not Central India)
4 (AuthorizationFailed) when creating the group Your identity lacks rights at that scope az role assignment list --assignee <you> -o table Get at least Contributor at the RG/subscription scope
5 (QuotaExceeded) creating a VM/resource The subscription’s quota for that family is reached Portal → Subscription → Usage + quotas Delete unused; request a quota increase
6 (MissingSubscriptionRegistration) for a provider The resource provider isn’t registered az provider show -n Microsoft.X --query registrationState az provider register --namespace Microsoft.X
7 Two resources in one RG still can’t connect Assuming RG = network boundary Check VNet membership of each resource Put both in a VNet; RG never grants reachability
8 Deleted the RG but a resource still lingers --no-wait returns before deletion finishes Re-run az group list after a minute Wait; deletion of contents takes time
9 RequestDisallowedByPolicy on deploy An Azure Policy blocks it (e.g. region/SKU) Activity Log denial; az policy state list Deploy within policy (allowed region/SKU) or ask owner
10 Owner of a storage account, still can’t read blobs Conflating control plane with data plane az role assignment list (no data role) Grant a data-plane role e.g. Storage Blob Data Reader
11 A forgotten resource keeps billing “If I’m not using it, it’s free” Cost Management → Cost analysis Delete it; set a budget + alert
12 Can’t delete an RG — operation blocked A resource lock (CanNotDelete) is set az lock list -g <rg> -o table Remove the lock (az lock delete) if appropriate
13 A specific service isn’t offered in your region Service availability varies by region Check the region availability page / az vm list-skus Choose a region that offers it
14 Free-account spend halts unexpectedly Trial credit exhausted or spending cap hit Portal → Subscriptions → spending cap Upgrade to pay-as-you-go, or wait/reset

The error-string reference — the exact codes you’ll see and what each means on Azure, since the message alone is often cryptic:

Error code / string What it means Layer it lives in First move
AuthorizationFailed You lack RBAC for this action at this scope Control plane (RBAC) Check/assign a scoped role
RequestDisallowedByPolicy An Azure Policy denied the request Control plane (Policy) Read the policy; comply or get an exemption
QuotaExceeded / OperationNotAllowed A subscription quota/limit was hit Subscription Request quota increase; delete unused
LocationNotAvailableForResourceGroup Bad/unavailable region name Region Use a valid lowercase region name
MissingSubscriptionRegistration Resource provider not registered Subscription / RP az provider register
ResourceGroupNotFound The RG doesn’t exist (typo or wrong sub) Workload Verify name + active subscription
InvalidTemplateDeployment Bicep/ARM template failed validation Control plane Read the inner error; fix the template
ScopeLocked A resource lock blocks the change Workload Remove or downgrade the lock
SubscriptionNotFound Wrong/disabled subscription in context Subscription az account set to a valid sub

And the decision table for “I see X, it’s probably Y, do Z” — the fastest path from a symptom to the right layer:

If you see… It’s probably… Do this
Charges where you didn’t expect Wrong active subscription az account showaz account set
AuthorizationFailed An RBAC gap Assign a scoped role (Contributor)
RequestDisallowedByPolicy An Azure Policy guardrail Comply (region/SKU) or request exemption
Resources can’t reach each other A network gap (not the RG) Put them in a VNet; check NSGs
“Owner but can’t read the data” Control vs data plane Add the matching data-plane role
A bill creeping up A forgotten/over-sized resource Cost analysis; delete/right-size; budget
A region rejects a service Service availability by region Pick a supported region

Expanded reasoning for the three that cause the most lost hours:

2. Resources or charges show up in the “wrong place.” Root cause: a different subscription is the active default in your CLI/portal session, so everything you create lands and bills there. Confirm: az account show --query "{name:name, id:id}" -o table. Fix: set the intended subscription before creating anything — az account set --subscription "<name-or-id>" — and make az account show the first command in any script. This is the single most common beginner billing mistake.

7. Two resources in the same resource group still can’t talk to each other. Root cause: the belief that a resource group is a network boundary. It is a lifecycle and management boundary only. Confirm: check whether each resource is in a virtual network (az network vnet list, and the resource’s networking blade). Fix: reachability comes from a virtual network (and the right NSG/firewall rules), never from co-locating in a resource group. Conversely, resources in different RGs can absolutely communicate if they share a VNet.

4 & 9. AuthorizationFailed vs RequestDisallowedByPolicy. Both block a deploy at the control plane, but they are different layers and have different fixes. AuthorizationFailed means RBAC — you don’t have permission; the fix is a scoped role (prefer Contributor on the resource group, not Owner on the subscription). RequestDisallowedByPolicy means Azure Policy — a governance rule forbids what you asked (an unapproved region, an oversized SKU, an untagged resource); the fix is to comply with the rule (deploy in an allowed region, add the required tag) or request an exemption from whoever owns the policy. Confuse the two and you’ll grant a broad role that still doesn’t unblock the deploy.

Best practices

Security notes

The security-control quick reference — what protects against what at this beginner stage:

Control What it does Protects against Where to set it
MFA / passwordless Adds a second factor to sign-in Stolen-password account takeover Entra ID / Conditional Access
Least-privilege RBAC Scoped roles, minimal rights Blast-radius from over-permission Resource / RG / subscription scope
Resource locks Block delete/modify Accidental deletion On the RG or resource
Private storage + firewall No anonymous public access Data leaks from open containers Storage account networking
Key Vault + managed identity Centralised secret storage Secrets in code/config Key Vault + the resource’s identity
Budgets + alerts Spend thresholds Runaway cost (a security-adjacent risk) Cost Management
Azure Policy Enforce org rules at scale Drift, ungoverned regions/SKUs MG / subscription

Cost & sizing

What drives the bill, and how a beginner keeps it under control:

The free-account essentials — what you get and the limits to watch:

Free-account element What you get Watch-out
Trial credit A starting credit for ~30 days Expires; then upgrade to pay-as-you-go
Always-free services A standing list (e.g. some compute hours, storage, DB) Limits/quotas apply; over them you pay
12-month free Certain services free for the first year Reverts to paid after 12 months
Spending cap (trial) Stops resources at credit exhaustion Can halt your apps; remove it consciously
Cloud Shell storage Small persistent share A few pennies/month; ephemeral option is free

Rough monthly figures for a first real workload (INR/USD, illustrative — prices vary by region and change over time):

Workload shape Components Rough INR / month Rough USD / month
Pure learning / labs Empty RGs, Cloud Shell ~₹0–50 ~$0–1
Tiny always-on web app 1× App Service B1 ~₹4,000–5,000 ~$50–60
Small app + database App Service S1 + Azure SQL (basic) ~₹12,000–18,000 ~$150–220
HA small app 2× App Service + zone-redundant DB ~₹22,000–30,000 ~$270–360
Idle VM left running (the mistake) 1× B-series VM forgotten ~₹2,000–6,000 wasted ~$25–75 wasted

The right-sizing rules of thumb for a beginner — and the deeper treatment in Azure Cloud Economics:

Lever Rule of thumb Saving potential
Delete idle resources If nothing uses it, delete it today 100% of that resource
Deallocate non-prod VMs off-hours Stop dev/test nights & weekends ~60–70% of VM compute
Prefer PaaS/serverless for spiky load Scale-to-zero beats idle VMs Large for bursty apps
Right-size before you reserve Measure first, then commit Avoids reserving the wrong size
Reserve steady workloads 1–3 yr commit for always-on Up to ~72%
Lifecycle storage tiers Move cold data to cool/archive Significant on large datasets

Interview & exam questions

1. Explain the Azure resource hierarchy from top to bottom. An Entra tenant is the identity boundary (who can sign in); management groups organise subscriptions for governance at scale; a subscription is the billing/quota boundary and primary management scope; a resource group is a lifecycle container; resources are the individual services. Governance and access flow down via inheritance; cost rolls up.

2. Is a resource group a security or network boundary? No. It is a logical lifecycle container and an RBAC-assignment scope that lets you deploy, manage, delete, and cost-roll-up related resources as a unit — but not a network or implicit security boundary. Reachability is a virtual-network concern; access is configured explicitly via RBAC.

3. What is Azure Resource Manager and why does it matter? The control plane and single API front door. Portal, CLI, PowerShell, and IaC all call ARM, which authenticates, authorises via RBAC, validates, enforces Azure Policy, routes to resource providers, and logs to the Activity Log — enabling idempotent, declarative deployments and making the tools interchangeable.

4. Availability zones vs region pairs — which protects against what? Use availability zones to survive a single data-centre/building failure within a region (high availability). Use the region pair for disaster recovery — a distant copy in the same geography to fail over to if the whole region is lost.

5. How does shared responsibility change across IaaS, PaaS and SaaS? Moving IaaS → PaaS → SaaS, Microsoft takes on more (OS, patching, runtime, then the whole app) and you take on less — but data, identity/access, and configuration remain yours at every level, which is where most incidents occur.

6. Distinguish the control plane from the data plane with an example. The control plane (ARM, governed by RBAC) manages resources — create/delete a storage account. The data plane (the service endpoint, governed by keys/SAS/data-plane roles) uses them — read a blob. Being Owner (control plane) does not by itself grant data access; you need a data-plane role like Storage Blob Data Reader.

7. Name three things that are always your responsibility regardless of service model. Your data, your identities and access, and your configuration/endpoints. (Application code is also yours in IaaS and PaaS.)

8. How would a beginner keep cloud costs under control? Delete what you’re not using (charges accrue until deletion), tag resources for attribution, group them so per-app cost is visible, and set budgets and alerts in Cost Management. For steady workloads later, use Reservations or Savings Plans; prefer PaaS/serverless for spiky load.

9. What are IaaS, PaaS and SaaS, with an Azure example of each? IaaS = rent infrastructure, you manage the OS up (Azure Virtual Machines). PaaS = rent a managed platform, you bring just app + data (Azure App Service). SaaS = rent a finished application (Microsoft 365). The trade-off is control vs. operational effort; prefer the most-managed option that meets your needs.

10. A junior gets AuthorizationFailed deploying a VM. What’s wrong and how do you fix it least-privilege? ARM authorised the request against RBAC and they lacked rights at that scope. Grant the narrowest role that works — typically Contributor on the target resource group, not Owner on the subscription. Confirm with az role assignment list.

11. Why might a resource fail to deploy with RequestDisallowedByPolicy, and how is that different from an RBAC failure? An Azure Policy guardrail forbade the request (e.g. a disallowed region or SKU, or a missing required tag) — distinct from RBAC, which is about permission. The fix is to comply with the policy (allowed region/SKU/tag) or get an exemption, not to grant a broader role.

12. What is a region pair, and name one operational benefit beyond DR. Two regions in the same geography linked for disaster recovery. Beyond a replication target, Microsoft applies planned platform updates sequentially — one region of the pair at a time — reducing the risk that an update affects both halves of your DR posture at once.

These map primarily to AZ-900 (Azure Fundamentals) — cloud concepts, service models, regions/zones/pairs, the management hierarchy, ARM, and cost management — and lay groundwork for AZ-104 (Administrator). The compact cert mapping:

Question theme Primary cert Exam objective area
Cloud concepts, IaaS/PaaS/SaaS AZ-900 Describe cloud concepts
Hierarchy (MG/sub/RG/resource) AZ-900 / AZ-104 Architecture & services; manage resources
Regions, zones, region pairs AZ-900 Describe Azure architecture
ARM / control plane AZ-900 / AZ-104 Management & governance
Shared responsibility AZ-900 / AZ-500 Security & cloud concepts
Cost (tags, budgets, reservations) AZ-900 Management & governance (cost)
RBAC, scoped roles AZ-104 / AZ-500 Manage identities & governance

Quick check

  1. Put these in order from broadest to narrowest, and say what each is for: resource group, resource, subscription, management group, Entra tenant.
  2. What is the difference between an availability zone and a region pair, and which protects against which kind of failure?
  3. When you run az group create, what service actually receives and processes that request, and name two checks it performs before the resource group is created.
  4. Under the shared responsibility model, name two things that are always your responsibility regardless of the service model.
  5. True or false: deleting a resource group also deletes the resources inside it. Why does this matter for cost — and why is a resource group not a network boundary?

Answers

  1. Entra tenant (your identity/organisation boundary — who can sign in) → management group (groups subscriptions to apply governance at scale) → subscription (billing boundary, quotas, primary management scope) → resource group (lifecycle folder for related resources) → resource (the actual VM, database, etc.). Governance flows down by inheritance; cost rolls up.
  2. An availability zone is a physically separate location within one region; spreading across zones protects against a single data-centre/building failure (high availability). A region pair is two regions in the same geography; it protects against an entire region failing (disaster recovery).
  3. Azure Resource Manager (ARM), the control plane. Before creating the group it (any two of): authenticates you, authorises via RBAC at that scope, validates the request, enforces Azure Policy, checks quota, routes to the resource provider, and logs to the Activity Log.
  4. Any two of: your data, your identities and access, and your configuration/endpoints. (Application code is also yours in IaaS/PaaS.)
  5. True. It matters for cost because resources bill for as long as they exist, so deleting the resource group is the cleanest one-step way to stop all charges. It is not a network boundary because reachability is controlled by virtual networks and firewalls — co-locating in an RG does not connect two resources, and separate RGs do not isolate them.

Exercise

In Cloud Shell, create a resource group named rg-kloudvin-exercise in a region different from the one you used in the lab. Then:

  1. Attach two tags to it at creation time using --tags, for example --tags env=learning owner=<your-name>.
  2. Run az group show --name rg-kloudvin-exercise --output json and find your tags in the output.
  3. Run az group list --query "[?tags.env=='learning'].name" --output tsv and confirm your group is returned — this is a first taste of filtering Azure output with JMESPath queries (covered fully in Lesson 2).
  4. Delete the resource group when you are done.

If all four steps work, you have created, tagged, queried, and cleaned up Azure infrastructure entirely from the command line — a real, repeatable workflow.

Glossary

Next steps

You now have the vocabulary and the mental model for everything that follows. Next, learn the four ways to actually drive Azure — and when to use each:

Related reading to deepen what you have learned here:

AzureCloud FundamentalsSubscriptionsResource GroupsRegionsARMShared ResponsibilityAZ-900
Need this built for real?

Vinod is a Senior Cloud Architect (22+ yrs) — available for Azure / AWS / GCP architecture, landing zones, and migrations.

Work with me

Comments