टेराफॉर्म चीटशीट - उपयोगी कमांड और उदाहरण
सभी टेराफॉर्म कमांड्स की सूची
यहाँ एक व्यापक Terraform चीटशीट है जिसमें आवश्यक कमांड्स, कॉन्फ़िगरेशन तत्व, रिसोर्स प्रबंधन, मॉड्यूल्स, वेरिएबल्स, स्टेट हैंडलिंग, और सर्वोत्तम प्रैक्टिसेस शामिल हैं।
Terraform एक ओपन-सोर्स इन्फ्रास्ट्रक्चर-एज-कोड (IaC) टूल है जिसे HashiCorp ने विकसित किया है, जो उपयोगकर्ताओं को डिक्लेरेटिव कॉन्फ़िगरेशन फाइलों का उपयोग करके कई क्लाउड प्रोवाइडर्स (जैसे AWS, Azure, GCP) के माध्यम से इन्फ्रास्ट्रक्चर को परिभाषित और प्रोविजन करने की अनुमति देता है। इसका प्राथमिक उद्देश्य इन्फ्रास्ट्रक्चर प्रोविजनिंग को स्वचालित करना, सुसंगतता सुनिश्चित करना, और मैनुअल त्रुटियों को कम करना है। Terraform मल्टी-क्लाउड, मॉड्यूलर, और स्टेट-ड्राइवन वर्कफ्लो का समर्थन करता है, जिससे यह आधुनिक DevOps प्रैक्टिसेस का एक आधारशिला बन जाता है।
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"
- CLI:
- प्रकार:
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 उपयोग के सबसे आम और उन्नत पहलुओं—कमांड्स से सर्वोत्तम प्रैक्टिसेस तक—की एक त्वरित-संदर्भ प्रदान करता है, जिससे यह शुरुआती और उन्नत उपयोगकर्ताओं दोनों के लिए व्यावहारिक होता है।
उपयोगी लिंक्स
- https://developer.hashicorp.com/terraform
- Docker चीटशीट
- Docker Compose चीटशीट - सबसे उपयोगी कमांड्स के साथ उदाहरण
- कुबर्नेट्स चीटशीट
- बैकएंड के साथ फ्लटर प्रोजेक्ट को AWS Amplify पर डिप्लॉय करें
- Hugo-जनित वेबसाइट को AWS S3 पर डिप्लॉय करें
- AWS लैम्ब्डा प्रदर्शन: JavaScript vs Python vs Golang
- AWS SAM और Python के साथ लेयर्ड लैम्ब्डास का कार्यान्वयन
- AWS SAM + AWS SQS + Python PowerTools
- Minio को Aws S3 के विकल्प के रूप में। Minio अवलोकन और इंस्टॉल