נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת AZ-900 עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסיום מעבדה זו, תספק, באמצעות Terraform פשוט, את עומס העבודה הראשון והקטן ביותר ב-Azure — קבוצת משאבים (Resource Group), חשבון אחסון (Storage Account) עם הגדרות אבטחה כברירת מחדל, מכונה וירטואלית קטנה של Linux, והתראת תקציב של Cost Management שתשלח לך דוא"ל לפני שהארנק שלך ירגיש בזה. כל משאב ממופה לאחד מעמודי התווך של בחינת AZ-900.
כל משאב הוא Terraform פשוט. אין משתנים, אין מודולים, אין מצב מרוחק. זרוק את הקטעים לקובץ main.tf אחד, הפעל terraform init פעם אחת, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.az login פעם אחת; ספק ה-azurerm של Terraform יאסוף את המנוי הפעיל באופן אוטומטי.כל המשאבים במעבדה זו נכללים בשכבה החינמית של Azure עבור מנויים חדשים (זיכוי של 200$ ל-30 הימים הראשונים, בתוספת סכומים חינמיים תמיד):
אם תשמור על המכונה הווירטואלית פועלת 24/7 מחוץ לשכבה החינמית, היא תעלה כ-5$ לחודש. השמד את המעבדה בסיום.
כל ערימת Terraform של Azure מתחילה באותה צורה: הצמד את ספק ה-azurerm (אנו משתמשים ב-~> 4.0, הגרסה היציבה הנוכחית), והצהר על בלוק ה-features. בלוק ה-features {} הריק נדרש — azurerm לא יאותחל בלעדיו. זוהי מוסכמת ההקצאה של AZ-900 הנבדקת ביותר ברמת מחבר Terraform.
המשאב random_id הוא התבנית הסטנדרטית ליצירת שמות חשבונות אחסון ייחודיים גלובלית — שמות חשבונות אחסון של Azure חייבים להיות באורך 3-24 תווים, אלפאנומריים באותיות קטנות, וייחודיים גלובלית בכל מנויי Azure. ה-random_id מוסיף 4 ספרות הקסאדצימליות לשם כדי למנוע התנגשויות.
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 4.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.6"
}
}
}
provider "azurerm" {
features {}
}
resource "random_id" "suffix" {
byte_length = 2
}
locals {
tags = {
Project = "certlabpro-az-900"
ManagedBy = "terraform"
}
}כל משאב Azure חי בקבוצת משאבים (Resource Group) — מיכל הארגון האוניברסלי של Azure. קבוצות משאבים הן בחינם, אזוריות (קבוצת המשאבים עצמה היא רק מטא-דאטה, אך תוכנה מוגדרת לאזור שלה כברירת מחדל), והיחידה לניהול בכמויות גדולות: מחיקת קבוצת משאבים מוחקת כל דבר שבתוכה.
תחומי מושגי ענן (Cloud Concepts) וזהות, ממשל, פרטיות, תאימות ב-Azure (Azure Identity, Governance, Privacy, Compliance) של AZ-900 מדגישים רעיון זה — קבוצות משאבים הן יחידת ההיקף הקטנה ביותר עבור הקצאות תפקידים של RBAC, Azure Policy ומעקב עלויות. תייג כל קבוצת משאבים.
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-900-rg"
location = "eastus"
tags = local.tags
}Azure Storage הוא שירות הנתונים הבסיסי שבו כל עומס עבודה של AZ-900 משתמש. אנו יוצרים חשבון LRS (שכפול מקומי) ברמת Standard — אפשרות השכפול הזולה ביותר, וברירת המחדל הצפויה ב-AZ-900 עבור עומסי עבודה של מעבדות שאינן בסביבת ייצור. גישת רשת ציבורית מושבתת, HTTPS בלבד נאכף, וגרסת ה-TLS המינימלית מוגדרת ל-1.2 (תחום האבטחה של AZ-900 בודק במפורש את שלושת אלו כברירות מחדל בסיסיות של היגיינה).
ה-account_kind = "StorageV2" הוא חשבון v2 הנוכחי לשימוש כללי; AZ-900 לפעמים ישאל אותך להבדיל אותו מ-BlobStorage (ישן יותר, רק בלובים) ומ-FileStorage (קבצים פרימיום). StorageV2 היא התשובה הנכונה לכל שאלה של 'שימוש כללי'.
resource "azurerm_storage_account" "main" {
name = "certlabpro${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
public_network_access_enabled = false
allow_nested_items_to_be_public = false
tags = local.tags
}AZ-900 מקדיש תחום שלם (תמחור, הסכמי רמת שירות ומחזור חיים של Azure) למושגי חיוב. הפריט המעשי הנבדק ביותר בתחום זה הוא התראת תקציב — המנגנון של Cost Management לשלוח לך דוא"ל כאשר ההוצאה בפועל או הצפויה חוצה סף מסוים.
אנו מגדירים את התקציב לקבוצת המשאבים שיצרנו בשלב 2, מה שאומר שהוא עוקב אחר כל מה שבמעבדה זו (ורק במעבדה זו). ההודעה נשלחת ב-80% מהתקציב — דפוס שאלות חוזר ב-AZ-900 הוא 'מדוע 80% ולא 100%?' — מכיוון שב-80% עדיין יש לך זמן לפעול; ב-100% הכסף כבר אבד.
החלף את you@example.com בכתובת הדוא"ל האמיתית שלך לפני הפעלת terraform apply.
resource "azurerm_consumption_budget_resource_group" "main" {
name = "certlabpro-az-900-budget"
resource_group_id = azurerm_resource_group.main.id
amount = 10
time_grain = "Monthly"
time_period {
start_date = "2026-06-01T00:00:00Z"
}
notification {
enabled = true
threshold = 80
operator = "GreaterThan"
threshold_type = "Actual"
contact_emails = ["you@example.com"]
}
}פקודת terraform destroy סטנדרטית מפרקת את כל מה שבמעבדה זו. הערה ספציפית ל-Azure: כאשר אתה הורס את קבוצת המשאבים (Resource Group), Azure מסיר כל משאב בתוכה כתופעת לוואי — גם אם Terraform אינו יודע עליהם. זהו פרימיטיב הניקוי הנבדק ב-AZ-900: אם אי פעם איבדת מעקב אחר מה נמצא ב-RG, מחיקת ה-RG מוחקת את כל עץ המשאבים שתחתיו. השתמש בזה בזהירות על מנויים משותפים.
לחשבון האחסון יש כברירת מחדל שמירה של 14 יום במחיקה רכה במנויים חדשים; מרחב השמות נשאר שמור עבור חלון זה. אם תריץ את המעבדה שוב מיד, ייתכן שתיתקל בהתנגשות שמות — הסיומת של random_id בדרך כלל מונעת זאת אך הדבר אינו מובטח.
AZ-900 מכסה מגוון רחב של שירותים — Azure Virtual Machines (אנו נוגעים בזה באופן קונספטואלי אך לא פורסים מכונה וירטואלית במעבדה מינימלית זו), App Service, Azure Functions, AKS, Azure SQL, Cosmos DB, Azure AD/Entra ID, Azure Policy, Azure Blueprints, תבניות ARM, Bicep, מחשבון תמחור, מחשבון TCO, Azure Advisor, Service Health, ועוד רבים אחרים.
אנו נצמדים לעומס העבודה הראשון והקטן ביותר האפשרי מכיוון שהבחינה בודקת שטף קונספטואלי רחב, ולא הקצאה מעמיקה של שירות-לפי-שירות. ארבעת העמודים שנגענו בהם לעיל — קבוצת משאבים (Resource Group) (ממשל), חשבון אחסון (Storage Account) (שירותים + ברירות מחדל של אבטחה), Cost Management (תמחור), ויעד המחשוב המרומז — הם הבסיס אליו מתחברים כל שאר המושגים של AZ-900.
לכיסוי שירות-לפי-שירות, עיין בקטגוריות עיון וEditorial בדף אישור זה — הן מפנות לכל שירות המופיע בהיקף AZ-900.