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

GitOps برای زیرساخت: Terraform و Git Workflow

پذیرش شیوه‌های GitOps برای مدیریت زیرساخت: ماژول‌های Terraform، branching Git، بازبینی Pull Request و پایپلاین‌های اعمال خودکار.

تیر ۱۴۰۴
۱۷ دقیقه مطالعه

GitOps برای زیرساخت: Terraform + Git Workflow

GitOps پیکربندی زیرساخت را به‌عنوان کد در Git می‌بیند. هر تغییر از طریق Pull Request، بازبینی و Apply خودکار می‌گذرد.

ساختار پروژه

TEXT
infra/
├── modules/
│   ├── network/
│   ├── vm/
│   └── firewall/
├── environments/
│   ├── dev/
│   ├── staging/
│   └── production/
└── .github/workflows/
    └── terraform.yml

Remote State با Locking

HCL
terraform {
  backend "s3" {
    bucket         = "company-terraform-state"
    key            = "production/network/terraform.tfstate"
    region         = "eu-west-1"
    dynamodb_table = "terraform-state-lock"
    encrypt        = true
  }
}

Pipeline CI/CD (GitHub Actions)

YAML
name: Terraform
on:
  pull_request:
    paths: ['infra/**']

jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: hashicorp/setup-terraform@v3
      - name: Terraform Plan
        run: terraform plan -out=tfplan

بهترین شیوه‌ها

۱. یک فایل State برای هر محیط در هر کامپوننت

۲. هرگز منابع مدیریت‌شده توسط Terraform را به‌صورت دستی تغییر ندهید

۳. برای منابع موجود از terraform import استفاده کنید

۴. همه منابع را با تگ علامت‌گذاری کنید: managed_by = "terraform"

۵. قبل از Apply به تولید، تأیید PR را الزامی کنید