Azure पर Terraform
AzureRM Terraform प्रदाता कॉन्फ़िगर करें, बुनियादी आधारभूत संरचना योजना लिखें और समझें कि मूल ARM/Bicep टूल के बजाय Terraform को कब प्राथमिकता देनी चाहिए।
Azure पर Terraform, CoddyKit पर Azure Fundamentals का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Azure Fundamentals सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Azure Fundamentals पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Terraform क्या है और Azure क्यों?
Terraform HashiCorp द्वारा विकसित open-source Infrastructure as Code tool है। Bicep के विपरीत, Terraform cloud-agnostic है — एक ही Terraform codebase Azure, AWS, GCP और कई अन्य providers में एक साथ resources प्रबंधित कर सकता है। Azure पर Terraform ARM API के साथ इंटरैक्ट करने के लिए AzureRM provider का उपयोग करता है, इसलिए यह multi-cloud संगठनों में लोकप्रिय विकल्प है।
AzureRM Terraform Provider
AzureRM provider एक plugin है जिसे Terraform Download करता है और Terraform configuration को ARM API calls में बदलने के लिए उपयोग करता है। इसका रखरखाव HashiCorp और Microsoft करते हैं और Terraform के साथ Azure resources प्रबंधित करने का यह आधिकारिक तरीका है। अपने subscription ID और authentication method से provider को Configure करें, फिर इसे Download करने के लिए terraform init चलाएँ।
# main.tf — configure the AzureRM provider
terraform {
required_providers {
azurerm = {
source = 'hashicorp/azurerm'
version = '~> 3.0'
}
}
}
provider 'azurerm' {
features {}
subscription_id = var.subscription_id
}Terraform file संरचना
एक सामान्य Azure Terraform project कई .tf files में बाँटा जाता है: main.tf में resource declarations, variables.tf में input variables, outputs.tf में output values और terraform.tfvars में किसी विशेष Environment के लिए variable values होती हैं। Terraform वर्तमान directory की सभी .tf files को अपने-आप load करता है, इसलिए कई files में बाँटना केवल पढ़ने में सुविधा के लिए होता है।
# variables.tf
variable 'resource_group_name' {
description = 'Name of the resource group'
type = string
default = 'my-rg'
}
variable 'location' {
description = 'Azure region'
type = string
default = 'eastus'
}Azure Resources घोषित करना
Terraform में आप resource blocks का उपयोग करके Azure resources घोषित करते हैं। Block type resource होता है, जिसके बाद AzureRM resource type (जैसे 'azurerm_resource_group') और configuration में उसका संदर्भ लेने के लिए local name दिया जाता है। Terraform में property names के लिए snake_case का उपयोग होता है, जबकि ARM JSON में camelCase या PascalCase का उपयोग किया जाता है।
# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
name = var.resource_group_name
location = var.location
}
resource 'azurerm_storage_account' 'storage' {
name = 'mystorageaccount'
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = 'Standard'
account_replication_type = 'LRS'
tags = {
environment = 'dev'
}
}Terraform workflow: Init, Plan, Apply
मुख्य Terraform workflow में तीन steps होते हैं। terraform init AzureRM provider को Download करता है और backend सेट करता है। terraform plan आपकी configuration की वर्तमान state से तुलना करता है और क्या Create, परिवर्तित या Destroy किया जाएगा, उसका अंतर दिखाता है — यह ARM के what-if के समान है। terraform apply plan को लागू करता है और आपकी configuration के अनुसार Azure को Update करता है।
# Step 1: Initialise the project and download providers
terraform init
# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan
# Step 3: Apply the plan
terraform apply tfplan
# Destroy all managed resources
terraform destroyTerraform State
Terraform एक state file (terraform.tfstate) बनाए रखता है, जिसमें सभी managed resources की वर्तमान state दर्ज होती है और उन्हें आपकी configuration से मैप किया जाता है। यह file Terraform को configuration और Azure में मौजूद resources के बीच अंतर पहचानने में सक्षम बनाती है। टीम Environment में state को दूरस्थ रूप से एक Azure Storage Account (Terraform backend) में store करें, ताकि टीम के सभी सदस्य एक ही state file साझा कर सकें।
# Configure remote state in Azure Blob Storage
terraform {
backend 'azurerm' {
resource_group_name = 'tfstate-rg'
storage_account_name = 'tfstateaccount'
container_name = 'tfstate'
key = 'prod.terraform.tfstate'
}
}Terraform में Azure का Authentication
Terraform Azure के लिए कई authentication methods का समर्थन करता है। स्थानीय development के दौरान az login (Azure CLI authentication) का उपयोग करें — Terraform credentials अपने-आप प्राप्त कर लेता है। CI/CD pipelines में client secret या certificate वाले Service Principal का उपयोग करें और उसे Environment variables के माध्यम से दें। Azure-hosted agents या VMs के लिए सबसे सुरक्षित, secret-रहित authentication हेतु Managed Identity का उपयोग करें।
# Option 1: Azure CLI (local dev)
az login
terraform plan
# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform planदोबारा उपयोग के लिए Terraform मॉड्यूल
Bicep मॉड्यूल की तरह, Terraform modules आपको infrastructure patterns को पैकेज करके दोबारा उपयोग करने देते हैं। मॉड्यूल एक directory होता है जिसमें .tf files होती हैं। आप module block से उसका संदर्भ लेते हैं, variables के माध्यम से inputs पास करते हैं और outputs का उपयोग करते हैं। Terraform Registry में समुदाय द्वारा बनाए गए और सत्यापित सैकड़ों Azure modules उपलब्ध हैं, जैसे AzureRM network module।
# Use a module from the Terraform Registry
module 'vnet' {
source = 'Azure/vnet/azurerm'
version = '4.0.0'
resource_group_name = azurerm_resource_group.main.name
vnet_location = azurerm_resource_group.main.location
use_for_each = true
address_space = ['10.0.0.0/16']
subnet_prefixes = ['10.0.1.0/24', '10.0.2.0/24']
subnet_names = ['web', 'app']
}Terraform बनाम Bicep कब चुनें
जब आपका संगठन केवल Azure का उपयोग करता हो और नई Azure सुविधाओं के साथ सबसे गहन integration चाहता हो, तब Bicep चुनें (Bicep को नए resource type का support पहले ही दिन मिल जाता है)। जब आप कई cloud providers में resources प्रबंधित करते हों, community modules के बड़े ecosystem की आवश्यकता हो या HCL syntax और HashiCorp toolchain पसंद हो, तब Terraform चुनें। केवल Azure Deployments के लिए दोनों मान्य हैं — अक्सर निर्णय संगठन की पसंद पर निर्भर करता है।
मौजूदा Resources Import करना
यदि Terraform का उपयोग शुरू करने से पहले Azure में resources मौजूद हैं, तो आप terraform import का उपयोग करके उन्हें Terraform management के अंतर्गत ला सकते हैं। यह command resource की वर्तमान state प्राप्त करके उसे Terraform state file में जोड़ती है। Import करने के बाद आपको imported resource से मेल खाने वाला संबंधित configuration block मैन्युअल रूप से लिखना होगा, फिर यह पुष्टि करने के लिए terraform plan चलाएँ कि कोई अंतर नहीं है।
# Import an existing resource group into Terraform state
terraform import \
azurerm_resource_group.main \
'/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'
# Terraform 1.5+ supports import blocks in configuration
import {
to = azurerm_resource_group.main
id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}Azure पर Terraform की सर्वोत्तम प्रथाएँ
Azure पर Terraform के लिए इन सर्वोत्तम प्रथाओं का पालन करें: state locking सक्षम करके state को Azure Blob Storage में दूरस्थ रूप से store करें, अलग-अलग Environments के लिए workspaces या अलग state files का उपयोग करें, source control में secrets को कभी commit न करें — इसके बजाय Azure Key Vault data sources का उपयोग करें, breaking changes से बचने के लिए provider versions को pin करें, और plan approval gates के साथ Terraform को CI/CD pipeline में चलाएँ (Azure Pipelines या GitHub Actions)।
त्वरित जाँच
इस lesson में Microsoft Azure Fundamentals (AZ-900) की अवधारणाओं की अपनी समझ जाँचें।
Lesson का पुनरावलोकन
इस lesson में आपने सीखा: Terraform एक cloud-agnostic IaC tool है, जो Azure resources प्रबंधित करने के लिए AzureRM provider का उपयोग करता है; init, plan, apply workflow सुरक्षित और पूर्वानुमानित Deployments को सक्षम करता है; और Azure Blob Storage में remote state टीम के सहयोग के लिए आवश्यक है। आगे हम App Service plans और Web Apps बनाना सीखेंगे।
एआई शिक्षक के साथ Azure Fundamentals सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “Azure पर Terraform” पाठ निःशुल्क है?
हाँ—“Azure पर Terraform” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Azure Fundamentals पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Azure Fundamentals पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Azure पर Terraform” में मैं क्या सीखूँगा?
AzureRM Terraform प्रदाता कॉन्फ़िगर करें, बुनियादी आधारभूत संरचना योजना लिखें और समझें कि मूल ARM/Bicep टूल के बजाय Terraform को कब प्राथमिकता देनी चाहिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Azure Fundamentals का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Azure Fundamentals शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Azure Fundamentals शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Azure पर Terraform” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Azure Fundamentals पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Azure Fundamentals पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।