رفتن به محتوا
بازگشت به وبلاگ
دواپس

زیرساخت به عنوان کد: اصول، ابزارها و جریان‌های کاری

تسلط بر اصول IaC با Terraform، Ansible و Pulumi: Idempotency، مدیریت State، نسخه‌بندی و جریان‌های کاری همکاری تیمی.

دی ۱۴۰۴
۱۵ دقیقه مطالعه

مقدمه

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/
۳. Immutable Infrastructure
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، بررسی و تأیید، سپس به‌صورت خودکار اعمال می‌شوند.