अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ AZ-104 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप सादे टेराफॉर्म के साथ, AZ-104 संदर्भ कार्यभार तैयार कर चुके होंगे — एक रिसोर्स ग्रुप, NSG-संरक्षित निजी सबनेट के साथ एक VNet, एक सिस्टम-असाइन की गई प्रबंधित पहचान के साथ एक लिनक्स VM, एक स्टोरेज अकाउंट जिससे VM उस पहचान के माध्यम से पढ़ सकता है, और VM डायग्नोस्टिक्स प्राप्त करने वाला एक लॉग एनालिटिक्स वर्कस्पेस। हर ब्लॉक AZ-104 परीक्षा के पाँच डोमेन में से एक से जुड़ा है।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply चरण-दर-चरण चलाएँ।
>= 1.5 या ओपनटोफू >= 1.6।az login)।~/.ssh/id_rsa.pub पर एक SSH सार्वजनिक कुंजी (या चरण 4 में पथ बदलें)।VM ही बिल है:
जब VM का सक्रिय रूप से उपयोग न कर रहे हों तो कंप्यूट लागत को आधा करने के लिए उसे रोक दें (az vm deallocate)। बिलिंग को पूरी तरह से रोकने के लिए पूरे रिसोर्स ग्रुप को नष्ट कर दें।
मानक एज़्योर ओपनर: azurerm ~> 4.0 को पिन करें, रिसोर्स ग्रुप बनाएँ, स्थानीय SSH सार्वजनिक कुंजी को एक डेटा स्रोत के रूप में पढ़ें ताकि चरण 4 में VM इसका उपयोग कर सके। AZ-104 का आइडेंटिटी और गवर्नेंस डोमेन रिसोर्स ग्रुप को सबसे छोटे RBAC दायरे के रूप में परीक्षण करता है; यहाँ टैग मॉनिटर एज़्योर रिसोर्सेज के तहत लागत-ट्रैकिंग के लिए कैस्केड होते हैं।
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-104"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-104-rg"
location = "eastus"
tags = local.tags
}प्रत्येक AZ-104 कार्यभार एक वर्चुअल नेटवर्क के भीतर चलता है। हम एक /16 VNet बनाते हैं और VM के लिए एक /24 सबनेट निकालते हैं। सबनेट से जुड़ा NSG SSH (पोर्ट 22) इनबाउंड की अनुमति देता है — प्रोडक्शन स्रोत CIDR को प्रतिबंधित करेगा; लैब इसे * पर खोलता है ताकि आप किसी भी IP से कनेक्ट कर सकें।
AZ-104 का नेटवर्किंग को डिप्लॉय और मैनेज करें डोमेन इस लेयर्ड-सिक्योरिटी पैटर्न का बार-बार परीक्षण करता है: NSG स्टेटफुल होते हैं, वे सबनेट या NIC पर लागू होते हैं (हम यहाँ सबनेट पर लागू करते हैं — AZ-104 की सर्वोत्तम-अभ्यास प्रतिक्रिया), और डिफ़ॉल्ट-अस्वीकार + स्पष्ट-अनुमति नियम संरचना बताती है कि एज़्योर NSG AWS सिक्योरिटी ग्रुप से कैसे भिन्न होते हैं (एज़्योर NSG में स्पष्ट नियम संख्याएँ होती हैं; AWS SG में नहीं)।
resource "azurerm_virtual_network" "main" {
name = "certlabpro-az-104-vnet"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
address_space = ["10.0.0.0/16"]
tags = local.tags
}
resource "azurerm_subnet" "app" {
name = "app"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.main.name
address_prefixes = ["10.0.1.0/24"]
}
resource "azurerm_network_security_group" "app" {
name = "certlabpro-az-104-nsg"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
security_rule {
name = "AllowSSH"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "22"
source_address_prefix = "*"
destination_address_prefix = "*"
}
tags = local.tags
}
resource "azurerm_subnet_network_security_group_association" "app" {
subnet_id = azurerm_subnet.app.id
network_security_group_id = azurerm_network_security_group.app.id
}मानक AZ-104 स्टोरेज डिफ़ॉल्ट: स्टैंडर्ड टियर, LRS, केवल HTTPS, न्यूनतम TLS 1.2, सार्वजनिक पहुंच अवरुद्ध। हम चरण 4 में VM की प्रबंधित पहचान को इस अकाउंट तक रीड एक्सेस प्रदान करेंगे। एज़्योर आइडेंटिटीज़ और गवर्नेंस मैनेज करें डोमेन इस प्रबंधित-पहचान → संसाधन पैटर्न का परीक्षण करता है, जो ऐप कॉन्फ़िग में स्टोरेज अकाउंट कीज़ को स्टोर करने के लिए पासवर्ड-रहित विकल्प है।
resource "azurerm_storage_account" "data" {
name = "az104data${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"
allow_nested_items_to_be_public = false
tags = local.tags
}VM विहित AZ-104 कंप्यूट आर्टिफैक्ट है। हम Standard_B1s (सबसे छोटा फ्री-टियर-योग्य लिनक्स SKU), उबंटू 22.04 LTS, SSH-कुंजी प्रमाणीकरण (AZ-104 पासवर्ड-एंटी-पैटर्न उत्तर), और एक सिस्टम-असाइन की गई प्रबंधित पहचान का उपयोग करते हैं।
रोल असाइनमेंट चरण 3 से स्टोरेज अकाउंट पर उस प्रबंधित पहचान को Storage Blob Data Reader प्रदान करता है — जिसका अर्थ है कि VM अपनी पहचान टोकन का उपयोग करके स्टोरेज REST API को कॉल कर सकता है, जिसमें डिस्क पर कोई कुंजी संग्रहीत नहीं होती है। यह AZ-104 का स्टोरेज को लागू और प्रबंधित करें + पहचान का क्रॉसओवर प्रश्न है: एक VM क्रेडेंशियल के बिना स्टोरेज तक कैसे पहुँचता है? प्रबंधित पहचान + RBAC रोल असाइनमेंट।
resource "azurerm_public_ip" "vm" {
name = "certlabpro-az-104-vm-pip"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
allocation_method = "Static"
sku = "Standard"
tags = local.tags
}
resource "azurerm_network_interface" "vm" {
name = "certlabpro-az-104-vm-nic"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
ip_configuration {
name = "ipconfig1"
subnet_id = azurerm_subnet.app.id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.vm.id
}
tags = local.tags
}
resource "azurerm_linux_virtual_machine" "main" {
name = "certlabpro-az-104-vm"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
size = "Standard_B1s"
admin_username = "azureuser"
disable_password_authentication = true
network_interface_ids = [azurerm_network_interface.vm.id]
admin_ssh_key {
username = "azureuser"
public_key = file("~/.ssh/id_rsa.pub")
}
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts-gen2"
version = "latest"
}
identity {
type = "SystemAssigned"
}
tags = local.tags
}
resource "azurerm_role_assignment" "vm_storage_reader" {
scope = azurerm_storage_account.data.id
role_definition_name = "Storage Blob Data Reader"
principal_id = azurerm_linux_virtual_machine.main.identity[0].principal_id
}AZ-104 का एज़्योर रिसोर्स को मॉनिटर और मेंटेन करें डोमेन (परीक्षा का ~10-15%) लॉग एनालिटिक्स पर निर्भर करता है, जो अवलोकन योग्य हर चीज़ का गंतव्य है। हम कार्यस्थान और चरण 3 से स्टोरेज अकाउंट पर एक डायग्नोस्टिक सेटिंग बनाते हैं — अब हर स्टोरेज लेनदेन क्वेरी करने योग्य KQL रूप में आता है।
VM के लिए हम आमतौर पर एक VM एक्सटेंशन के माध्यम से एज़्योर मॉनिटर एजेंट (AMA) स्थापित करते हैं — यह आधुनिक पोस्ट-लॉग-एनालिटिक्स-एजेंट पथ है। लैब के लिए हम कार्यस्थान स्थापित करते हैं; एजेंट को स्वयं स्थापित करना एक अलग रनटाइम चरण (azurerm_virtual_machine_extension) है जो ब्राउज़ / Editorial में शामिल है। वास्तुशिल्प आकार — कार्यस्थान मौजूद है, संसाधन उसमें प्रवाहित होते हैं — AZ-104 प्रश्न यही परीक्षण करते हैं।
resource "azurerm_log_analytics_workspace" "main" {
name = "certlabpro-az-104-logs"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "PerGB2018"
retention_in_days = 30
tags = local.tags
}
resource "azurerm_monitor_diagnostic_setting" "storage" {
name = "diag"
target_resource_id = "${azurerm_storage_account.data.id}/blobServices/default/"
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
enabled_log {
category = "StorageRead"
}
enabled_log {
category = "StorageWrite"
}
metric {
category = "AllMetrics"
enabled = true
}
}terraform destroy सब कुछ हटा देता है। दो बातें ध्यान दें:
az vm deallocate कंप्यूट बिलिंग को रोक देता है (स्टोरेज पर अभी भी बिल लगता है)। terraform destroy सब कुछ हटा देता है।Static एलोकेशन है — यह VM डीएलोकेशन के बाद भी जीवित रहता है, IP एड्रेस आरक्षण रखता है। यदि आप अप्रयुक्त सार्वजनिक IP (~$0.005/घंटा) के लिए भुगतान नहीं करना चाहते हैं तो इसे नष्ट करें या डायनेमिक में बदलें।AZ-104 एक व्यापक ऑपरेशनल सतह को कवर करता है — एज़्योर बैकअप, रिकवरी सर्विसेज वॉल्ट, साइट रिकवरी, एज़्योर फाइल्स / एज़्योर फाइल सिंक, एज़्योर माइग्रेट, एप्लिकेशन गेटवे, लोड बैलेंसर, एज़्योर बैस्टियन, VPN गेटवे, एक्सप्रेसराउट, एज़्योर फ़ायरवॉल, एज़्योर पॉलिसी, एज़्योर ब्लूप्रिंट्स (अप्रचलित हो रहे हैं), एंट्रा ID में कंडीशनल एक्सेस, B2B/B2C, RBAC कस्टम रोल, और ARM/बाइसेप टेम्पलेट।
हम VNet + VM + स्टोरेज + मॉनिटर बेसलाइन पर टिके रहते हैं क्योंकि यह वह आधार है जिसे हर दूसरा AZ-104 प्रश्न मानता है। लेयर-7 राउटिंग के लिए एक एप्लिकेशन गेटवे जोड़ें; हाइब्रिड कनेक्टिविटी के लिए एक VPN गेटवे जोड़ें; बैकअप के लिए रिकवरी सर्विसेज वॉल्ट जोड़ें — प्रत्येक इस आधार पर एक केंद्रित बोल्ट-ऑन है।
सेवा-दर-सेवा कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।