टेराफॉर्म चीटशीट - उपयोगी कमांड और उदाहरण

सभी टेराफॉर्म कमांड्स की सूची

Page content

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

Terraform एक ओपन-सोर्स इन्फ्रास्ट्रक्चर-एज-कोड (IaC) टूल है जिसे HashiCorp ने विकसित किया है, जो उपयोगकर्ताओं को डिक्लेरेटिव कॉन्फ़िगरेशन फाइलों का उपयोग करके कई क्लाउड प्रोवाइडर्स (जैसे AWS, Azure, GCP) के माध्यम से इन्फ्रास्ट्रक्चर को परिभाषित और प्रोविजन करने की अनुमति देता है। इसका प्राथमिक उद्देश्य इन्फ्रास्ट्रक्चर प्रोविजनिंग को स्वचालित करना, सुसंगतता सुनिश्चित करना, और मैनुअल त्रुटियों को कम करना है। Terraform मल्टी-क्लाउड, मॉड्यूलर, और स्टेट-ड्राइवन वर्कफ्लो का समर्थन करता है, जिससे यह आधुनिक DevOps प्रैक्टिसेस का एक आधारशिला बन जाता है।

छात्र Terraform का उपयोग कर रहे हैं

Terraform के मुख्य लाभ:

  • डिक्लेरेटिव सिंटैक्स: कोड में इच्छित इन्फ्रास्ट्रक्चर स्टेट्स को परिभाषित करें।
  • प्रोवाइडर एग्नोस्टिस्म: AWS, Azure, GCP, Kubernetes, और अन्य के साथ काम करें।
  • स्टेट मैनेजमेंट: इन्फ्रास्ट्रक्चर परिवर्तनों को ट्रैक करें ताकि संघर्षों से बचा जा सके।

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

https://developer.hashicorp.com/terraform/tutorials#get-started

Terraform इंस्टॉलेशन प्रक्रिया काफी सरल है।

  • लिनक्स (यूबंटू/डेबियन):

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • विंडोज (WSL):

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • मैकओएस (होमब्रू):

    brew install terraform
    

सत्यापन

terraform --version

Terraform CLI कमांड्स

यहाँ सभी Terraform कमांड्स की सूची है:

कमांड विवरण
terraform init एक नया या मौजूदा Terraform कॉन्फ़िगरेशन डायरेक्टरी को इंस्टॉल करें
terraform validate कॉन्फ़िगरेशन की वैधता की जांच करें
terraform plan परिवर्तनों के बिना एक्सीक्यूशन प्लान दिखाएं
terraform apply इच्छित स्टेट तक पहुंचने के लिए आवश्यक परिवर्तनों को लागू करें
terraform destroy Terraform-प्रबंधित इन्फ्रास्ट्रक्चर को नष्ट करें
terraform fmt कॉन्फ़िगरेशन फाइलों को मानक शैली में पुनः फॉर्मेट करें
terraform show वर्तमान स्टेट या प्लान दिखाएं
terraform refresh वास्तविक इन्फ्रास्ट्रक्चर के साथ स्टेट को अपडेट करें
terraform providers कॉन्फ़िगरेशन में उपयोग किए जाने वाले प्रोवाइडर्स दिखाएं
terraform graph रिसोर्स डिपेंडेंसीज को एक ग्राफ के रूप में विज़ुअलाइज़ करें
terraform workspace list सभी उपलब्ध वर्कस्पेस सूचीबद्ध करें
terraform workspace new एक नया वर्कस्पेस बनाएं
terraform workspace select एक निर्दिष्ट वर्कस्पेस पर स्विच करें
terraform workspace show वर्तमान वर्कस्पेस का नाम दिखाएं
terraform workspace delete एक निर्दिष्ट वर्कस्पेस को हटाएं
terraform output स्टेट फाइल से आउटपुट वैल्यूज दिखाएं
terraform import मौजूदा रिसोर्स को Terraform में आयात करें
terraform taint अगले एप्लाई पर पुनः बनाए जाने के लिए एक रिसोर्स को मार्क करें
terraform untaint एक रिसोर्स को अनटेन्डेड के रूप में अनमार्क करें
terraform state list स्टेट फाइल में रिसोर्स सूचीबद्ध करें
terraform state show स्टेट में एक एकल रिसोर्स के एट्रिब्यूट दिखाएं

कॉन्फ़िगरेशन एसेंशियल्स

फाइल एक्सटेंशन्स

  • .tf: मुख्य कॉन्फ़िगरेशन फाइलों (HCL सिंटैक्स)
  • .tfvars: वेरिएबल वैल्यूज

Terraform ब्लॉक प्रकार

  • प्रोवाइडर उदाहरण
    provider "aws" {
      region = "us-east-1"
    }
    
  • रिसोर्स उदाहरण
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • वेरिएबल उदाहरण
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • आउटपुट उदाहरण
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • मॉड्यूल उदाहरण
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

वेरिएबल्स के साथ काम करना

  • वेरिएबल्स घोषित करना
    variable "region" {
      description = "AWS region"
      default     = "us-east-1"
    }
    
  • वैल्यूज असाइन करना
    • CLI: terraform apply -var="region=us-west-2"
    • tfvars फाइल: terraform apply -var-file="prod.tfvars"
  • प्रकार: string, number, bool, list, map, object

स्टेट प्रबंधन

  • स्टेट फाइल: terraform.tfstate
  • रिमोट स्टेट (S3 उदाहरण)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • स्टेट देखना: terraform show terraform state list

लूप्स और कंडीशनल्स

  • काउंट
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • फॉर_इच
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • कंडीशनल्स
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

फंक्शन्स

  • स्ट्रिंग इंटरपोलेशन: resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • लिस्ट, मैप उदाहरण:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

प्रोविज़नर्स

रिसोर्सों को बूटस्ट्रैप करने के लिए उपयोग किए जाते हैं। उदाहरण:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

सर्वोत्तम प्रैक्टिसेस

  • सभी .tf फाइलों को वर्जन कंट्रोल में रखें
  • प्रोवाइडर वर्जन लॉक करें ताकि सुसंगत डिप्लॉयमेंट सुनिश्चित हो
  • स्टेट प्रबंधन के लिए रिमोट बैकएंड (S3, Azure Blob, आदि) का उपयोग करें
  • रिमोट बैकएंड में स्टेट फाइलों को एन्क्रिप्ट करें
  • पुनः उपयोग योग्य मॉड्यूल्स का उपयोग करके इन्फ्रास्ट्रक्चर को मॉड्यूलराइज़ करें
  • अपने कॉन्फ़िगरेशन को दस्तावेज़ीकरण करें
  • स्टेजिंग में परीक्षण करें पहले प्रोडक्शन में

अतिरिक्त संदर्भ

  • हेल्प: terraform --help या [command] --help कमांड-विशिष्ट हेल्प के लिए
  • डिबगिंग: TF_LOG=INFO या TF_LOG=DEBUG के लिए विस्तृत लॉग सेट करें
  • फॉर्मेटिंग: terraform fmt

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

उपयोगी लिंक्स