🏗️ Terraform State
State file, Backend, Remote State, State commands
📄 Terraform State nima?
`terraform.tfstate` — haqiqiy infratuzilma holati. Terraform resurs mapping, metadata saqlaydi. State — Terraform'ning "miya"si. Sensitive data state da saqlanishi mumkin (parollar, API keys) — xavfsiz joyda saqlang!
☁️ Remote Backend
State ni remote da saqlash (jamoa bilan ishlash uchun zarur). Backends: S3 + DynamoDB (locking), Azure Blob, GCS, Terraform Cloud. State locking — bir vaqtda bir kishi apply qila oladi. State encryption.
🔧 State Commands
`terraform state list` — resurslar ro'yxati. `terraform state show` — resurs detallari. `terraform state mv` — resursni rename/move. `terraform state rm` — state dan o'chirish (infratuzilmaga tegmasdan). `terraform import` — mavjud resursni state ga qo'shish.
🔒 State Locking
Concurrent apply ni oldini olish. S3 backend + DynamoDB LockTable. Agar lock stuck bo'lsa: `terraform force-unlock LOCK_ID`. Terraform Cloud — built-in locking.
💡 Asosiy nuqtalar
- State = real infratuzilma <> Terraform mapping
- Remote backend: jamoa uchun zarur (S3+DynamoDB)
- State locking: concurrent apply oldini olish
- terraform state rm: state dan o'chirish (infra borligicha)
- terraform import: mavjud resursni import
- State da sensitive data — backend encryption kerak
📋 Kod misoli
# Remote Backend (S3 + DynamoDB)
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "terraform-lock"
encrypt = true
}
}
# State buyruqlari
terraform state list
terraform state show aws_instance.web
terraform state mv aws_instance.old aws_instance.new
terraform state rm aws_instance.to_remove
terraform import aws_instance.existing i-1234567890abcdef0
🎯 Imtihon maslahatlari
- `terraform state rm` — infrani o'chirmaydi, faqat state dan olib tashlaydi
- `terraform import` — mavjud resursni state ga qo'shadi, lekin .tf faylni yaratmaydi (qo'lda yozish kerak)
- S3 backend: bucket = state, DynamoDB = lock — IKKALASIni qo'yish kerak
- State locking maqsadi: ikki kishi bir vaqtda `apply` qilib conflict yaratmasligi
- terraform.tfstate ni Git ga qo'shish XATO — sensitive data va conflict xavfi
⚠️ Ko'p adashadigan
- `terraform state rm` infrani o'chiradi deb o'ylash — faqat Terraform tracking ni to'xtatadi
- Local state bilan jamoa ishlashi — har kim o'z state ga ega bo'ladi, conflicts muqarrar
- DynamoDB table LockID attribute ni o'zi yaratish — Terraform avtomatik yaratadi
🧠 Eslab qolish: "S3=Store, DynamoDB=Lock" — Remote backend uchun ikkala xizmat kerak. "rm=remove tracking, import=add tracking"
Terraform State bo'yicha o'zingizni sinab ko'ring
Bepul interaktiv quiz, mock imtihon va to'liq darslar — CertMaster platformasida.
Bepul boshlash →