GitOps برای زیرساخت: Terraform + Git Workflow
GitOps پیکربندی زیرساخت را بهعنوان کد در Git میبیند. هر تغییر از طریق Pull Request، بازبینی و Apply خودکار میگذرد.
ساختار پروژه
TEXT
infra/
├── modules/
│ ├── network/
│ ├── vm/
│ └── firewall/
├── environments/
│ ├── dev/
│ ├── staging/
│ └── production/
└── .github/workflows/
└── terraform.ymlRemote 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 را الزامی کنید
