मुख्य सामग्री पर जाएँ

Terraform क्या है? Infrastructure as Code के साथ शुरुआत करें

Terraform उपयोग करने के लिए हमारे चरण-दर-चरण शुरुआती गाइड को पढ़ें, और जानें कि अपनी Azure, AWS और Google Cloud आधारभूत संरचना को कुशलतापूर्वक कैसे स्वचालित और प्रबंधित करें।
· 10 मि॰ पढ़ें

AI के साथ खोजें

Infrastructure as Code (IaC) एक ऐसी प्रक्रिया है जो कोड के माध्यम से आधारभूत संरचना के प्रावधान और प्रबंधन को स्वचालित करती है। भौतिक हार्डवेयर कॉन्फ़िगरेशन और इंटरैक्टिव कॉन्फ़िगरेशन टूल्स का उपयोग आधारभूत संरचना को प्रोविजन करने के लिए किया जा सकता है, लेकिन IaC संस्करण नियंत्रण, दोहराव-क्षमता, और स्केलेबिलिटी जैसे कई लाभ प्रदान करता है। उपलब्ध शीर्ष IaC टूल्स में से एक Terraform है, जो HashiCorp द्वारा 2014 में विकसित किया गया था और दुनिया भर में 500,000 से अधिक संगठनों द्वारा उपयोग किया जाता है। आइए देखें कि Terraform कैसे काम करता है और आधुनिक आईटी संचालन में इसे कैसे उपयोग करें।

Terraform के बारे में सीखना शुरू करते समय यह जान लें कि कम से कम एक प्रमुख क्लाउड प्रदाता (AWS, Azure, Google Cloud, आदि) से परिचित होना पूर्वापेक्षा है, क्योंकि Terraform का उपयोग क्लाउड आधारभूत संरचना प्रबंधित करने के लिए किया जाता है। यदि आप क्लाउड कंप्यूटिंग में नए हैं, तो हमारा Understanding Cloud Computing कोर्स एक ठोस आधार प्रदान करता है।

Terraform क्या है?

Terraform एक ओपन-सोर्स टूल है जो आपको उच्च-स्तरीय कॉन्फ़िगरेशन भाषा का उपयोग करके आधारभूत संरचना के घटकों और उनके संबंधों को परिभाषित करने देता है।

Terraform की मानव-पठनीय कॉन्फ़िगरेशन फाइलों में, आप अपनी आधारभूत संरचना की इच्छित स्थिति निर्दिष्ट कर सकते हैं और Terraform स्वचालित रूप से यह तय करता है कि उस स्थिति तक कैसे पहुँचना है। इन फाइलों को संस्करणित, साझा और पुन: उपयोग किया जा सकता है, जिससे आपकी आधारभूत संरचना—कम्प्यूट और स्टोरेज संसाधनों से लेकर DNS और SaaS फीचर्स तक—को एक सुसंगत तरीके से प्रबंधित किया जा सके।

Terraform का उपयोग विभिन्न क्लाउड प्रदाताओं, मल्टी-क्लाउड आधारभूत संरचनाओं और ऑन-प्रिमाइसेज़ परिवेशों के साथ किया जा सकता है।

Terraform की प्रमुख विशेषताएँ

आइए उन बुनियादी पहलुओं पर करीब से नज़र डालें जो Terraform को अलग बनाते हैं: 

HashiCorp Configuration Language

Terraform एक उच्च-स्तरीय भाषा का उपयोग करता है जिसे HashiCorp की Configuration Language (HCL) कहा जाता है, जिसे विशेष रूप से इंफ्रास्ट्रक्चर ऐज़ कोड को परिभाषित करने के लिए डिज़ाइन किया गया है। उच्च-स्तरीय कॉन्फ़िगरेशन भाषाएँ घोषणात्मक सिंटैक्स लागू करती हैं, जो निम्न-स्तरीय स्क्रिप्टिंग और मैनुअल कॉन्फ़िगरेशन की तुलना में अधिक अमूर्त और उपयोगकर्ता-अनुकूल होती हैं। आपने पहले भी YAML या JSON फाइलों में उच्च-स्तरीय भाषाएँ देखी होंगी। 

HCL ब्लॉक संरचना का पालन करता है, जहाँ प्रत्येक नेस्टेड ब्लॉक संसाधनों और उनकी कॉन्फ़िगरेशनों का प्रतिनिधित्व करता है। संसाधनों को नामों और विशेषताओं के साथ स्पष्ट रूप से परिभाषित किया जाता है।

resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

Execution plan

अपनी आधारभूत संरचना की इच्छित स्थिति परिभाषित करने के बाद, Terraform एक एक्ज़िक्यूशन प्लान बनाता है। इस प्लान में वे चरण सूचीबद्ध होते हैं जिन्हें उस स्थिति तक पहुँचने के लिए Terraform को उठाने होंगे, ताकि आप बदलाव लागू करने से पहले उनकी समीक्षा कर सकें। प्लान को लागू करने से पहले जाँचना अवांछित संशोधनों, जैसे संसाधन हटाने, से बचाएगा।

State management

Terraform एक स्टेट फाइल बनाए रखता है जो आपकी आधारभूत संरचना की वर्तमान स्थिति को स्वचालित रूप से ट्रैक करता है और यह तय करते समय सत्य का स्रोत होता है कि किन परिवर्तनों की आवश्यकता है। डिफ़ॉल्ट रूप से, यह लोकली संग्रहीत होती है और terraform.tfstate कहलाती है। 

Providers

प्रोवाइडर ऐसे प्लगइन्स होते हैं जो क्लाउड प्लेटफ़ॉर्म और अन्य सेवाओं के API के साथ इंटरैक्ट करते हैं और Terraform को विभिन्न प्रकार के संसाधनों का प्रबंधन करने देते हैं। आधिकारिक प्रोवाइडर HashiCorp और उसके विश्वसनीय भागीदारों जैसे AWS, Azure, Google Cloud, Github, Datadog आदि द्वारा विकसित और प्रबंधित किए जाते हैं। सामुदायिक-डेवलप्ड प्लगइन्स भी हैं, जिन्हें Terraform Registry या Github पर पाया जा सकता है।

Resource graph

Terraform एक रिसोर्स ग्राफ बनाता है जो आपकी आधारभूत संरचना के संसाधनों और उनके बीच के संबंधों को दिखाता है। यह ग्राफ Terraform को प्रभावी ढंग से प्लान जनरेट करने, संसाधनों के बीच निर्भरताएँ संभालने, और यह सुनिश्चित करने में सक्षम बनाता है कि संसाधन सही क्रम में बनाए, अपडेट और हटाए जाएँ। यह ग्राफ आपकी आधारभूत संरचना को विज़ुअलाइज़ करने और जिन परिवर्तनों का आप विचार कर रहे हैं, उनके प्रभाव को समझने का एक शानदार तरीका भी है। 

उदाहरण Terraform Resource Graph, जो AWS संसाधनों और उनके बीच की निर्भरताओं को दर्शाता है

उदाहरण रिसोर्स ग्राफ। स्रोत: HashiCorp प्रलेखन

Terraform के साथ शुरुआत

आइए अपना पहला Terraform वर्कफ़्लो देखते हैं। यदि आप DevOps या सामान्य रूप से क्लाउड कंप्यूटिंग में नए हैं, तो आगे बढ़ने से पहले हमारे Understanding Cloud Computing और Introduction to DevOps कोर्स लेने की सलाह दूँगा।

इंस्टॉलेशन और सेटअप

इस Terraform ट्यूटोरियल में, हम AWS पर संसाधन बनाएँगे। यदि आप साथ चलना चाहते हैं और आपका खाता नहीं है, तो AWS पर जाएँ और साइन अप करें।

  1. आधिकारिक वेबसाइट से Terraform डाउनलोड करें। अपने ऑपरेटिंग सिस्टम के लिए सही बाइनरी चुनें और इंस्टॉलेशन निर्देशों का पालन करें।
  2. Terraform इंस्टॉल करने के बाद, एक नया टर्मिनल विंडो खोलें और terraform -version चलाएँ ताकि सुनिश्चित हो सके कि सॉफ़्टवेयर सही तरीके से इंस्टॉल हुआ है। 
  3. AWS CLI इंस्टॉल करें
  4. टर्मिनल में aws configure चलाकर AWS CLI कॉन्फ़िगर करें। आपसे अपना Access Key ID, Secret Access Key, डिफ़ॉल्ट रीजन नाम और डिफ़ॉल्ट आउटपुट फॉर्मैट दर्ज करने को कहा जाएगा। Terraform को इन्हें स्वतः एक्सेस करना चाहिए।

पहली Terraform कॉन्फ़िगरेशन

एक नया डायरेक्टरी और अपनी पहली कॉन्फ़िगरेशन फाइल बनाएँ। इसे main.tf कहते हैं, और Terraform को बताते हैं कि हम एक AWS EC2 इंस्टेंस बनाना चाहते हैं। HCL में लिखा कोड इस प्रकार दिखता है:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

प्रोजेक्ट इनिशियलाइज़ करना

अब निम्न कमांड चलाकर अपना Terraform प्रोजेक्ट इनिशियलाइज़ करें:

$ terraform init

यह एक बार चलाने वाला कमांड है और आवश्यक प्रोवाइडर प्लगइन्स डाउनलोड करेगा। बाद के परिवर्तनों के लिए आपको इसे फिर से चलाने की आवश्यकता नहीं होगी। 

प्लान

अब हम अपना एक्ज़िक्यूशन प्लान बनाना चाहते हैं। याद रखें, प्लान उन परिवर्तनों को हाइलाइट करेगा जो हमारी इच्छित स्थिति तक पहुँचने के लिए Terraform को करने होंगे (इस मामले में, एक चल रहा EC2 इंस्टेंस)। चलाएँ:

$ terraform plan

आपको कुछ इस तरह दिखना चाहिए:

Terraform will perform the following actions:

  # aws_instance.example will be created
  + resource "aws_instance" "example" {
      + ami                           = "ami-0c55b159cbfafe1f0"
      + instance_type                 = "t2.micro"
      ...
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Apply

हमने प्लान की समीक्षा कर ली है और अब इसे निष्पादित करके संसाधन प्रोविजन करने का निर्णय लिया है। अपने टर्मिनल में चलाएँ:

$ terraform apply

आपसे कार्रवाई की पुष्टि करने के लिए पूछा जाएगा। आगे बढ़ने के लिए "yes" टाइप करें।

Do you want to perform these actions? 
Terraform will perform the actions described above. 
Only 'yes' will be accepted to approve. 
Enter a value: yes 

 आपको निम्न दिखना चाहिए:

aws_instance.example: Creating... 
aws_instance.example: Still creating... [10s elapsed] aws_instance.example: 
Creation complete after 15s [id=i-0abcdef1234567890] 

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

 बधाई हो, आपने Terraform का उपयोग करके AWS पर अपना पहला EC2 इंस्टेंस प्रोविजन कर लिया!

Terraform उपयोग करने के लाभ

हमने पहले उल्लेख किया था कि Terraform का उपयोग कई लाभ प्रदान करता है, जैसे सुसंगतता और दोहराव-क्षमता, और एक्ज़िक्यूशन प्लान्स की बदौलत मानवीय त्रुटियों की कम दर। 

अन्य लाभों में शामिल हैं:

  • तेज़ प्रावधान: Terraform समानांतर में संसाधन बना और अपडेट कर सकता है, जो विकास, परीक्षण और स्टेजिंग परिवेशों को जल्दी स्पिन-अप करने के लिए विशेष रूप से उपयोगी है।
  • बेहतर सहयोग: Git जैसे वर्ज़न कंट्रोल सिस्टम के साथ जोड़कर, Terraform आपकी आधारभूत संरचना पर सहयोग और पारदर्शिता बढ़ाने का एक बढ़िया तरीका है। बदलावों की समीक्षा, स्वीकृति और ट्रैकिंग उसी तरह की जा सकती है जैसे एप्लिकेशन कोड में।
  • कुशल Disaster Recovery: यदि कुछ गलत हो जाता है, तो Terraform समान कॉन्फ़िगरेशन फाइलों का उपयोग करके पूरे आधारभूत ढाँचे को जल्दी से शून्य से फिर से बना सकता है।
  • समुदाय समर्थन: Terraform मॉड्यूल्स के उपयोग को प्रोत्साहित करता है, जो पुन: उपयोग योग्य कॉन्फ़िगरेशन होते हैं और आधारभूत संरचना प्रबंधन में सर्वोत्तम प्रथाओं को बढ़ावा देते हैं। Terraform का सक्रिय समुदाय और प्रोवाइडर्स व मॉड्यूल्स का विस्तृत इकोसिस्टम भी है, जिसका अर्थ है कि आपका टेक स्टैक कितना भी निच क्यों न हो, आपको उसके लिए कुछ न कुछ अवश्य मिलेगा।

Terraform के सामान्य उपयोग के मामले

चाहे आप पाइपलाइन्स बनाने वाले Data Engineer हों या अपने समाधान प्रोडक्शन में डिप्लॉय करने के इच्छुक Data Scientist, आधारभूत संरचना की ज़रूरतों को प्रबंधित करने के लिए Terraform एक बेहतरीन टूल है। यहाँ कुछ सामान्य उपयोग के मामले दिए गए हैं:

मल्टी-क्लाउड प्रबंधन

एकाधिक क्लाउड प्रदाताओं में फैली आधारभूत संरचना को प्रबंधित करना हमेशा आसान नहीं होता। Terraform आपको एक ही टूल से ऐसा करने देता है। इसके अलावा, Terraform ऑन-प्रिमाइसेज़ संसाधनों का भी प्रबंधन कर सकता है, जो इसे हाइब्रिड वातावरण में काम करने वाले संगठनों के लिए आदर्श समाधान बनाता है।

CI/CD वर्कफ़्लोज़

Terraform CI/CD वर्कफ़्लोज़ के साथ अच्छी तरह एकीकृत होता है, जिसका मतलब है कि आप अपनी सॉफ़्टवेयर डिलीवरी प्रक्रिया के हिस्से के रूप में अपनी आधारभूत संरचना को डिप्लॉय कर सकते हैं। आप आवश्यकतानुसार प्रीव्यू, डेवलपमेंट, टेस्टिंग या स्टेजिंग परिवेशों को स्वचालित रूप से बना और नष्ट भी कर सकते हैं।

Kubernetes क्लस्टर्स

Terraform विभिन्न क्लाउड प्रदाताओं जैसे AWS (EKS), Azure (AKS) या GCP (GKE) पर Kubernetes क्लस्टर्स का प्रबंधन कर सकता है। इसमें आवश्यक आधारभूत संरचना सेटअप करना, क्लस्टर के भीतर Kubernetes संसाधनों का प्रबंधन करना, और वर्कलोड की मांग के आधार पर क्लस्टर्स को स्केल करना शामिल है।

Terraform बनाम अन्य IaC टूल्स

अन्य लोकप्रिय IaC टूल्स में Ansible, Chef, Puppet और AWS CloudFormation शामिल हैं। प्रत्येक टूल की अपनी खूबियाँ और कमियाँ हैं। देखें:

FeatureTerraformAnsibleChefPuppetCloudFormation
Open SourceYesYesYesYesNo
Declarative SyntaxYesNoNoYesYes
Multi-Cloud SupportYesYesYesYesNo, AWS only
State ManagementYesNoNoYesYes
Execution PlansYesNoNoNoNo
Dependency ManagementYesLimitedLimitedYesYes

जैसा कि हम देख सकते हैं, हालाँकि ये सभी टूल अपने-अपने स्तर पर शक्तिशाली हैं, Terraform अपनी व्यापक फीचर सेट के लिए अलग नज़र आता है। फिर भी, यह सूची संपूर्ण नहीं है, और प्रत्येक टूल आवश्यकताओं के आधार पर थोड़े अलग उपयोग मामलों की पूर्ति करता है। उदाहरण के लिए, Ansible और उसका प्रक्रियात्मक स्वभाव कॉन्फ़िगरेशन मैनेजमेंट और ऐड-हॉक कार्यों के लिए उपयुक्त है।

निष्कर्ष

पिछले 10 वर्षों में, Terraform ने हजारों संगठनों को उनकी आईटी आधारभूत संरचना प्रबंधित करने में मदद की है। अपने घोषणात्मक दृष्टिकोण, स्वचालन क्षमताओं और मल्टी-क्लाउड परिवेशों के समर्थन के साथ, Terraform सबसे लोकप्रिय IaC टूल्स में से एक बन गया है, और जैसे-जैसे क्लाउड अपनाने में वृद्धि होती जाएगी, यह निश्चित रूप से आधारभूत संरचना प्रबंधन क्षेत्र में एक प्रमुख खिलाड़ी बना रहेगा। 

अब जब आप Terraform की मूल बातें समझ चुके हैं, तो आप और उन्नत कॉन्फ़िगरेशन और वास्तविक जीवन परिदृश्यों में डुबकी लगा सकते हैं। सामान्य कार्यों और उपयोग मामलों के लिए Terraform का उपयोग करना सीखने हेतु HashiCorp Terraform ट्यूटोरियल्स देखें, या समझने के लिए कि Data Engineer टूलकिट में Terraform कैसे फिट बैठता है, हमारा 2024 के लिए 14 आवश्यक Data Engineering टूल्स ब्लॉग पोस्ट देखें।

Marie Fayard

लेखक

Marie Fayard

मैं एक प्रोडक्ट-उन्मुख टेक लीड हूं, जो शुरुआती चरण के स्टार्टअप्स को पहले प्रोटोटाइप से लेकर प्रोडक्ट–मार्केट फिट और उससे आगे तक बढ़ाने में विशेषज्ञता रखता/रखती हूं। मुझे यह जानने में गहरी दिलचस्पी है कि लोग तकनीक का उपयोग कैसे करते हैं, और मुझे संस्थापकों व क्रॉस-फ़ंक्शनल टीमों के साथ मिलकर साहसिक विचारों को साकार करना पसंद है। जब मैं प्रोडक्ट नहीं बना रहा/रही होता/होती, तब मैं दुनिया के नए कोनों में प्रेरणा की तलाश में रहता/रहती हूं या योग स्टूडियो में जाकर मन हल्का करता/करती हूं।

अक्सर पूछे जाने वाले प्रश्न

क्या Terraform छोटे पैमाने के प्रोजेक्ट्स के लिए उपयुक्त है या यह मुख्य रूप से एंटरप्राइज़ उपयोग के लिए है?

आपका प्रोजेक्ट आकार जैसा भी हो, Terraform उपयोगी है! चाहे आपके पास 5 संसाधन प्रबंधित करने हों या 1000, आपको इसके लाभ ज़रूर दिखेंगे।

Terraform की लागत कितनी है?

Terraform ओपन-सोर्स है और उपयोग के लिए निःशुल्क है, लेकिन ध्यान रखें कि आपके क्लाउड प्रदाता आपके द्वारा Terraform के माध्यम से प्रोविजन और प्रबंधित संसाधनों के लिए शुल्क लेंगे।

क्या Terraform डेटाबेस और अन्य स्टेटफुल सेवाओं का प्रबंधन कर सकता है?

हाँ, Terraform डेटाबेस और अन्य स्टेटफुल सेवाओं का प्रबंधन कर सकता है। आप अपनी IaC फाइलों में इंस्टेंसेज़, क्लस्टर्स और कॉन्फ़िगरेशनों को परिभाषित कर सकते हैं।

Terraform कॉन्फ़िगरेशन फाइलों में सीक्रेट्स और संवेदनशील जानकारी को कैसे संभालता है?

Terraform सीक्रेट्स को संभालने की सर्वोत्तम प्रथाओं को प्रोत्साहित करता है, जैसे environment variables, एन्क्रिप्टेड वेरिएबल्स, और HashiCorp Vault या AWS Secrets Manager जैसी सीक्रेट मैनेजमेंट सेवाओं के साथ एकीकरण का समर्थन।

विषय