مقدمه
Infrastructure as Code (IaC) به معنای مدیریت و تأمین زیرساخت از طریق فایلهای پیکربندی قابل خواندن توسط ماشین است. این فقط "استفاده از Terraform" نیست - مجموعهای از اصول و شیوهها است که نحوه ساخت و نگهداری زیرساخت را متحول میکند.
اصول اصلی IaC
۱. اعلانی (Declarative)HCL
# نه "چطور" بلکه "چه چیزی باید وجود داشته باشد"
resource "aws_instance" "web" {
ami = "ami-12345678"
instance_type = "t3.medium"
}
# اجرای اول: ایجاد instance
# اجرای دوم: تغییری نیست (Idempotent)TEXT
infrastructure/
├── terraform/environments/
│ ├── staging/
│ └── production/
├── ansible/roles/
└── kubernetes/manifests/TEXT
به جای SSH و تغییر پیکربندی:
Update config → Build new image → Deploy new version → Destroy oldمدیریت State
HCL
terraform {
backend "s3" {
bucket = "company-terraform-state"
key = "production/terraform.tfstate"
dynamodb_table = "company-terraform-locks" # قفلگذاری concurrent
encrypt = true
}
}تشخیص Drift
BASH
terraform plan # تشخیص تغییرات غیرمجاز
# اگر تغییراتی نشان داد بدون تغییر کد: DRIFT شناسایی شد
# بررسی بدون تغییر در Ansible
ansible-playbook site.yml --check --diffالگوی ارتقاء محیط
TEXT
dev → staging → production (کد یکسان، متغیرهای مختلف)IaC یک تغییر فرهنگی به همان اندازه که تکنیکی است: تغییرات زیرساخت از طریق pull request، بررسی و تأیید، سپس بهصورت خودکار اعمال میشوند.
