Skip to content

Commit 0e7e59f

Browse files
authored
Merge pull request #54029 from MicrosoftDocs/NEW-lp4m6-guided
New lp4m6 guided
2 parents f7807f9 + 77cb73e commit 0e7e59f

18 files changed

Lines changed: 495 additions & 0 deletions
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.introduction
3+
title: Introduction
4+
metadata:
5+
title: Introduction
6+
description: "Introduction"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/1-introduction.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.exercise-tag-resources
3+
title: Exercise - Apply cost-tracking tags
4+
metadata:
5+
title: Exercise - Apply cost-tracking tags
6+
description: "Exercise - Apply cost-tracking tags"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/2-exercise-tag-resources.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.exercise-create-budget-alerts
3+
title: Exercise - Create budget and alerts
4+
metadata:
5+
title: Exercise - Create budget and alerts
6+
description: "Exercise - Create budget and alerts"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/3-exercise-create-budget-alerts.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.exercise-assign-test-policy
3+
title: Exercise - Assign and test an Azure Policy
4+
metadata:
5+
title: Exercise - Assign and test an Azure Policy
6+
description: "Exercise - Assign and test an Azure Policy"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 6
14+
content: |
15+
[!include[](includes/4-exercise-assign-test-policy.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.validate-success
3+
title: Validate success
4+
metadata:
5+
title: Validate success
6+
description: "Validate success"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/5-validate-success.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.clean-up-resources
3+
title: Clean up resources
4+
metadata:
5+
title: Clean up resources
6+
description: "Clean up resources"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/6-clean-up-resources.md)]
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.knowledge-check
3+
title: Knowledge check
4+
metadata:
5+
title: Knowledge check
6+
description: "Knowledge check"
7+
ms.date: 03/29/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/7-knowledge-check.md)]
16+
quiz:
17+
title: "Check your knowledge"
18+
questions:
19+
- content: "What happens when a resource deployment violates an Azure Policy assignment with a deny effect?"
20+
choices:
21+
- content: "The deployment succeeds but is flagged as noncompliant."
22+
isCorrect: false
23+
explanation: "An audit effect flags noncompliant resources. A deny effect actively blocks the deployment."
24+
- content: "The deployment is blocked."
25+
isCorrect: true
26+
explanation: "A policy assignment with a deny effect prevents any resource deployment that does not meet the policy conditions."
27+
- content: "The resource is deployed and then automatically deleted."
28+
isCorrect: false
29+
explanation: "A deny effect prevents the deployment from starting. The resource is never created."
30+
- content: "What is the purpose of a budget alert in Azure?"
31+
choices:
32+
- content: "To automatically stop all running resources when spending exceeds the limit."
33+
isCorrect: false
34+
explanation: "Budget alerts send notifications. They do not automatically stop or shut down resources."
35+
- content: "To notify you when spending approaches or exceeds a defined threshold."
36+
isCorrect: true
37+
explanation: "Budget alerts send email notifications when actual or forecasted spending reaches the percentage thresholds you configure."
38+
- content: "To enforce a hard spending cap that prevents any further charges."
39+
isCorrect: false
40+
explanation: "Azure budgets provide alerts, not hard caps. Spending can continue past the budget amount."
41+
- content: "Why should you apply consistent tags to Azure resources?"
42+
choices:
43+
- content: "Tags are required before you can deploy resources."
44+
isCorrect: false
45+
explanation: "Tags are optional by default unless enforced by a policy. You can deploy resources without tags."
46+
- content: "Tags automatically reduce the cost of tagged resources."
47+
isCorrect: false
48+
explanation: "Tags do not affect pricing. They help you track and allocate costs but do not reduce them."
49+
- content: "To track and allocate costs by team, environment, or project."
50+
isCorrect: true
51+
explanation: "Consistent tags let you filter cost reports, identify spending by department or environment, and support cost governance."
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-cost-guardrails.summary
3+
title: Summary
4+
metadata:
5+
title: Summary
6+
description: "Summary"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/8-summary.md)]
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
This guided project focuses on setting up cost guardrails using resource tags, budgets, and Azure Policy.
2+
3+
Azure provides several tools to help you control cloud spending. Tags let you categorize resources for cost reporting. Budgets send alerts when spending approaches a threshold. Azure Policy enforces organizational rules—like restricting which regions resources can be deployed to—automatically.
4+
5+
## Scenario
6+
7+
Your pilot team has a limited monthly cloud budget and needs clear controls in place before a broader rollout. You tag resources for cost tracking, create a budget with alert thresholds, and assign an Azure Policy that restricts resource creation to an approved region. These guardrails give the team early visibility into spending and prevent noncompliant deployments.
8+
9+
- Exercise 1 - Apply organizational tags for cost tracking.
10+
- Exercise 2 - Create a budget with alert thresholds.
11+
- Exercise 3 - Assign and test an Azure Policy for region compliance.
12+
13+
:::image type="content" source="../media/overview-architecture.png" alt-text="Diagram showing the three cost guardrail pillars: tags for categorization, budgets for spending alerts, and Azure Policy for compliance enforcement." border="false":::
14+
15+
By the end of this project, you have practical experience setting up cost controls and compliance policies that protect a cloud environment from overspending and configuration drift.
16+
17+
> [!NOTE]
18+
> This is a guided project module where you complete a project by following step-by-step instructions.
19+
20+
## Skilling areas
21+
22+
In this project, you practice skills in the following areas:
23+
24+
**Apply resource tags for cost tracking**
25+
+ Tag resource groups and resources with key-value pairs.
26+
+ Use tags to categorize resources by environment and owner.
27+
28+
**Configure budgets and alerts**
29+
+ Create a budget scoped to a resource group.
30+
+ Set alert thresholds at 80% and 100% of the budget.
31+
+ Configure email notifications for budget alerts.
32+
33+
**Assign and test Azure Policy**
34+
+ Find and assign a built-in policy definition.
35+
+ Test that the policy blocks noncompliant resource creation.
36+
+ Review the compliance dashboard.
37+
38+
> [!IMPORTANT]
39+
> This project uses the Azure portal for every step. No prior Azure experience is required.
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
This guided project consists of the following exercises:
2+
3+
- **Apply cost-tracking tags**
4+
- Create budget and alerts
5+
- Assign and test Azure Policy
6+
7+
In this exercise, you create a resource group and storage account, then apply organizational tags to both. Tags are the foundation of cost governance—they let you categorize resources by team, environment, or project so you can track spending accurately.
8+
9+
This exercise includes the following tasks:
10+
11+
- Prepare the environment
12+
- Create a test storage account
13+
- Tag the resource group
14+
- Tag the storage account
15+
16+
**Outcome:** Tagged pilot resources ready for cost reporting and filtering.
17+
18+
> [!TIP]
19+
> Pause after each major action and confirm the page status before moving on. This habit prevents compounding mistakes.
20+
21+
## Task 1: Prepare the environment
22+
23+
Set up your Azure environment before you begin. You create a resource group and a test resource as a pilot scope for governance controls.
24+
25+
> [!WARNING]
26+
> This project creates Azure resources that may incur charges. Complete the clean-up unit when you're done to avoid unintended expenses.
27+
28+
1. Sign in to the [Azure portal](https://portal.azure.com) with an account that has permissions to create budgets and policy assignments.
29+
2. In the portal search bar, search for **Resource groups** and select **Resource groups**.
30+
3. Select **+ Create**.
31+
4. For **Name**, enter **rg-gp-cost-guardrails**.
32+
5. For **Region**, choose your preferred region.
33+
6. Select **Review + create** and then select **Create**.
34+
7. Note the email address you want to use for budget alert notifications.
35+
36+
## Task 2: Create a test storage account
37+
38+
Create a storage account inside the resource group. This gives you a resource to tag and a scope for policy testing.
39+
40+
1. In the portal search bar, search for **Storage accounts** and select **Storage accounts**.
41+
2. Select **+ Create**.
42+
3. On the **Basics** tab, select **rg-gp-cost-guardrails** as the resource group.
43+
4. For **Storage account name**, enter a globally unique name (for example, **stgpcostguard** followed by your initials and a number).
44+
5. For **Region**, use the same region as the resource group.
45+
6. For **Preferred Storage Type**, select **Azure Blob Storage or Azure Data Lake Storage Gen 2**.
46+
7. For **Performance**, select **Standard**.
47+
8. For **Redundancy**, select **Locally-redundant storage (LRS)**.
48+
9. Select **Review + create** and then select **Create**.
49+
10. When deployment finishes, select **Go to resource**.
50+
51+
## Task 3: Tag the resource group
52+
53+
Apply organizational tags to your resource group. Tags are key-value pairs that help you categorize resources, track costs, and enforce policies at scale.
54+
55+
1. In the portal search bar, search for **Resource groups** and select **Resource groups**.
56+
2. Select **rg-gp-cost-guardrails** from the list.
57+
3. In the left menu, select **Tags**.
58+
4. Add the tag **environment** with the value **pilot**.
59+
5. Add the tag **owner** with the value **it-team**.
60+
6. Select **Apply**.
61+
62+
> [!NOTE]
63+
> **Validation step:** Confirm the resource group displays both tags (**environment: pilot** and **owner: it-team**).
64+
65+
> [!NOTE]
66+
> Each exercise includes validation steps like this one. Track your results as you go—you'll review them all in the validation unit at the end of this module.
67+
68+
## Task 4: Tag the storage account
69+
70+
Apply the same tags to your test resource. Resource-level tags ensure consistent tagging across all assets, enabling accurate cost allocation and governance reporting.
71+
72+
1. In the portal search bar, search for **Storage accounts** and select **Storage accounts**.
73+
2. Select the storage account you created (for example, **stgpcostguard**).
74+
3. In the left menu, select **Tags**.
75+
4. Add the tag **environment** with the value **pilot**.
76+
5. Add the tag **owner** with the value **it-team**.
77+
6. Select **Apply**.
78+
79+
> [!NOTE]
80+
> **Validation step:** Confirm the storage account also displays both tags, matching the resource group.

0 commit comments

Comments
 (0)