تخطَّ إلى المحتوى

🏗️ شرح Terraform والبنية التحتية كرمز

كيف تدير الحالة البعيدة مع Terraform و S3؟

الدرس 11 من 15· ⏱ 1 دقائق قراءة

الحالة المحلّية تكفي لمطوّر واحد، لكنّ الفريق يحتاج حالة بعيدة مشتركة. سنعدّها على S3 مع قفل. درس متقدّم.

⚠️ الإعداد تمثيليّ؛ شغّله في حساب حقيقي. يجب أن تكون حاوية الحالة مؤمّنة (خاصّة ومشفّرة).

لماذا الحالة البعيدة؟

مع الحالة المحلّية، لا يمكن لفريق مشاركة الحالة بأمان، وقد يطبّق شخصان معًا فيتلف الملفّ. الحالة البعيدة تحلّ ذلك:

  • مشاركة آمنة: حالة واحدة موثوقة يصل إليها الفريق.
  • قفل (Locking): يمنع التطبيق المتزامن الذي يفسد الحالة.

الخطوة 1: عرّف الـ backend

أضف كتلة backend "s3" تحدّد حاوية الحالة ومفتاحها، وجدول قفل عبر DynamoDB:

terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "prod/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-locks"
    encrypt        = true
  }
}
  • bucket وkey: أين تُخزَّن الحالة.
  • dynamodb_table: جدول يوفّر آلية القفل.
  • encrypt = true: تشفير الحالة في الراحة.

الخطوة 2: هيّئ ورحّل الحالة

terraform init

عند تغيير الـ backend، يسألك Terraform عن ترحيل الحالة المحلّية إلى البعيدة. وافق، فتنتقل الحالة إلى S3.

الخطوة 3: اعمل كفريق

الآن كل من يشغّل plan أو apply يقرأ الحالة نفسها من S3، ويأخذ قفلًا أثناء التطبيق يمنع تصادم الآخرين. عند الانتهاء يُحرَّر القفل.

أفضل الممارسات

  • أمّن حاوية الحالة: خاصّة، مشفّرة، بصلاحيات محدودة (تذكّر أنّ الحالة قد تحوي أسرارًا).
  • فعّل التحكّم بالإصدارات على الحاوية لاستعادة حالة سابقة عند الحاجة.

الخطوات التالية

راجع مفهوم الحالة (State)، وتعلّم فصل البيئات عبر مساحات العمل.

شرح كيف تدير الحالة البعيدة مع Terraform و S3؟ — Terraform والبنية التحتية كرمز بالعربي
كيف تدير الحالة البعيدة مع Terraform و S3؟Terraform والبنية التحتية كرمز بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟