Skip to content

Commit ea9057d

Browse files
committed
date fix
1 parent 1add2b9 commit ea9057d

17 files changed

Lines changed: 472 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: 10
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: 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/7-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: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
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.
81+
82+
> [!NOTE]
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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 budget with alert thresholds that notify you before spending exceeds your target. Budget alerts give you early warning so you can investigate and adjust before costs get out of control.
8+
9+
This exercise includes the following tasks:
10+
11+
- Open Cost Management and start the budget
12+
- Configure and create the budget
13+
14+
**Outcome:** Budget thresholds configured with actionable notifications.
15+
16+
## Task 1: Open Cost Management and start the budget
17+
18+
Navigate to the Cost Management service where you define spend limits and alerts. This is the central place to monitor and control cloud spending across your subscription and resources.
19+
20+
1. In the portal search bar, search for **Cost Management + Billing** and select **Cost Management + Billing**.
21+
2. In the left menu, select **Budgets**.
22+
3. Select **+ Add**.
23+
4. Choose a scope you can manage. If resource-group-level budgets are available in your environment, use **rg-gp-cost-guardrails**. Otherwise use the subscription scope and note the broader scope in your validation notes.
24+
25+
> [!NOTE]
26+
> **Validation step:** Confirm Cost Management + Billing is open and you have selected your budget scope.
27+
28+
## Task 2: Configure and create the budget
29+
30+
Set up your budget parameters including amount, reset period, and alert thresholds. These alerts will notify you before you overspend, giving you time to investigate and adjust.
31+
32+
1. For **Name**, enter **gp-pilot-budget**.
33+
2. For **Reset period**, select **Monthly**.
34+
3. For **Amount**, enter a small test value such as **10** (USD or your billing currency).
35+
4. Select **Next** to move to the alerts section.
36+
5. Select **+ Add** to add an alert condition.
37+
6. For **Type**, select **Actual**.
38+
7. For the threshold, enter **80** percent.
39+
8. In the **Alert recipients** field, enter your email address.
40+
9. Select **+ Add** to add a second alert condition.
41+
10. For **Type**, select **Actual**.
42+
11. For the threshold, enter **100** percent.
43+
12. In the **Alert recipients** field, enter the same email address.
44+
13. Select **Create**.
45+
46+
> [!NOTE]
47+
> **Validation step:** Confirm the **gp-pilot-budget** appears in the budgets list with two alert thresholds (80% and 100%).
48+
49+
> [!NOTE]

0 commit comments

Comments
 (0)