Terraform on AWS: Infrastructure as Code सोप्या भाषेत
40 screens क्लिक करून VPC = recipe न लिहिता स्वयंपाक. Terraform = AWS ची लिहिलेली recipe: plan = shopping list, apply = cook, state = काय अस्तित्वात आहे.
या chapter मध्ये तुम्ही काय शिकाल
- IaC click-ops पेक्षा का
- Provider/resource/plan/apply/destroy
- S3 state + DynamoDB lock
- Modules, workspaces, guardrails
- Lab, errors, FAQ, interview
1. आधी रोजचं उदाहरण
हे का लागतं?
Pune SaaS: staging हाताने — drift. एक SG चूक = रात्री outage. Terraform ने staging = prod shape, Git review.
हे काय आहे?
Terraform = IaC. HCL मध्ये AWS resources. plan = diff; apply = वास्तविक; state = IDs.
2. मुख्य शब्द
| Word | अर्थ | Picture |
|---|---|---|
| Provider | AWSशी बोलणारं plugin | Translator |
| Resource | एक AWS object | Menu वरील एक dish |
| State | खऱ्या IDs चा JSON map | Inventory पुस्तक |
| Plan | Dry-run diff | Market आधी यादी |
| Module | Reusable .tf folder | Shared recipe |
| Backend | State कुठे | S3 मधलं shared inventory |
3. Remote state (लवकर करा)
हे का लागतं?
Laptop वर local state = दोघांचं काम एकमेकांना मोडतो.
हे काय आहे?
State S3 (versioning + encrypt) मध्ये. Lock साठी DynamoDB.
terraform {
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
}
backend "s3" {
bucket = "myorg-tfstate-ap-south-1"
key = "app/staging/terraform.tfstate"
region = "ap-south-1"
dynamodb_table = "myorg-tf-locks"
encrypt = true
}
}
provider "aws" { region = "ap-south-1" }
resource "aws_s3_bucket" "logs" {
bucket = "myorg-staging-logs-example"
}
4. Industries
- Banks: accounts + VPC baseline modules.
- Startups: एक module, वेगळे tfvars.
- Agencies: private module registry.
- Data: Glue/S3 lakes in code.
- Platform: PR plan, merge apply.
5. Terraform vs CDK vs Console
| Tool | Strength | Watch-out |
|---|---|---|
| Console | शिकणं, emergency | Repeat न येणार |
| CloudFormation/CDK | AWS-native | फक्त AWS zone |
| Terraform | Multi-cloud, modules | State = खजिना |
Ravindra Bagale's Tip
State = password file: encrypt, lock, IAM, commit नको.
6. Mini lab: bucket with plan/apply
Org block नसेल तर ap-south-1 (Mumbai). आधी budget alert.
कसं करायचं (step by step)
- Terraform install; sandbox CLI profile.
- main.tf: provider + bucket.
- init && plan — प्रत्येक ओळ.
- apply — फक्त sandbox auto-approve.
- Tag बदला; plan = in-place update.
Cleanup (billing थांबवा)
- sandbox destroy.
- Console मध्ये confirm.
7. सामान्य errors आणि fixes
प्रत्येक row = खरी चूक. Panic करण्याआधी fix वाचा.
| Error / लक्षण | Fix |
|---|---|
| State lock | DynamoDB lock तपासा. |
| आधीच अस्तित्वात | Import किंवा rename. |
| Credentials | Profile/region/SSO. |
| Drift | Console click; refresh काळजीने. |
| Force-unlock | खात्री करूनच. |
| State Git मध्ये | Rotate + S3 backend. |
| Prod destructive | Plan review + IAM. |
| Module float | Version pin. |
| Index shift | Stable map keys. |
| Backend AccessDenied | s3+dynamodb IAM. |
8. Troubleshooting checklist
- version + PROFILE.
- backend बदल → reconfigure.
- Apply आधी plan वाचा.
- state list.
- शंका असेल तर import.
9. FAQ
प्र. मोफत?
CLI मोफत; Cloud optional.
प्र. जुने clicks?
import.
प्र. TF किंवा CDK?
Multi-cloud=TF; TS AWS teams=CDK.
प्र. Secrets?
SSM/Secrets Manager — hardcode नको.
प्र. Workspaces?
हलके; अनेकदा वेगळी state keys.
10. Interview Q&A
प्र. plan?
Diff दाखवतो — AWS बदलत नाही.
प्र. Remote state का?
Share + lock.
प्र. State risk?
Sensitive — secrets सारखं.
प्र. Module?
Reuse reviewed blocks.
प्र. Prod accidents?
PR plan + approvals + accounts.
प्र. Drift?
CI plans.
11. Tips — English, मराठी आणि हिंदी
Ravindra Bagale's Tip (EN)
Plan is a document. If you cannot explain a destroy line, do not apply.
Ravindra Bagale's Tip (MR)
Plan = document. Destroy ओळ समजत नसेल तर apply नको.
Tip (HI)
Plan एक दस्तावेज़ है — destroy लाइन समझ न आए तो apply मत करो।
घरी करून बघा
- एक bucket + एक tag main.tf.
- S3 backend + lock काढा.
- गेल्या आठवड्याचे clicks → code.
थोडक्यात सांगायचं तर
- Terraform = HCL; plan → apply.
- Remote state + lock = teams साठी आवश्यक.
- Versions pin; state commit नको.
- Destroy = incident सारखी review.
उजळणी, मुलाखत आणि तुलना cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.











अजून cards: Ravi Sir's Cards.
सराव Tasks
London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 16
सोपं terraform init
का: Providers download.
काय करायचं: Project folder मध्ये terraform init.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं terraform plan
का: Changes preview.
काय करायचं: terraform plan चालवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं terraform validate
का: Syntax errors.
काय करायचं: Terraform configuration validate.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं terraform fmt
का: Style.
काय करायचं: Terraform files format.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Apply नंतर buckets
का: Terraform ने काय केलं.
काय करायचं: eu-west-2 मधली S3 buckets.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं sts get-caller-identity
का: कोणता account.
काय करायचं: सध्याच्या AWS credentials ची identity.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं init नंतर local state files
का: terraform.tfstate.
काय करायचं: साध्या project ला terraform.tfstate नावाच्या किती primary files?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
सोपं HA साठी AZ संख्या
का: Multi-AZ 2+.
काय करायचं: HA साठी किमान AZs?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम terraform apply auto-approve
का: CI मध्ये prompt नको.
काय करायचं: auto-approve सह apply.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम terraform destroy
का: Lab काढा.
काय करायचं: auto-approve सह destroy.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम terraform output
का: Outputs वाचा.
काय करायचं: Terraform outputs दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम terraform state list
का: Tracked resources.
काय करायचं: State मधल्या resources.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Default tags JSON
का: प्रत्येक resource tag.
काय करायचं: default_tags Project=learn Env=lab.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
मध्यम plan success exit
का: Exit codes.
काय करायचं: terraform plan यशस्वी exit code?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम CI role: state bucket
का: CI ला state read.
काय करायचं: arn:aws:s3:::londonlegal-tfstate वर s3:ListBucket.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
अवघड Remote state backend JSON
का: S3 मध्ये state.
काय करायचं: backend s3 bucket londonlegal-tfstate key app/terraform.tfstate region eu-west-2.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.