محتويات الدورة

Terraform / الموديولات والدورة الواعية بالحالة / الدرس 12

الخلفيات واختيار الحالة والقفل

عامل التخزين والتنفيذ وهوية المساحة وتنسيق الكتابة كحدود صريحة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح القدرات دون افتراض تماثل القفل والتشفير.
  • ميّز قفل الاعتماد وقفل الحالة والتغير الخارجي.

تملك الخلفية التخزين والسلوك المرتبط

تحدد الخلفية موضع الحالة وقدرات مثل القفل أو التشغيل البعيد وفق التنفيذ. لا يعني التخزين البعيد تشغيل العمليات بعيداً تلقائياً. تختلف الصلاحيات والتشفير والاتساق والإصدارات والتعافي، فاخترها من الملكية والأمان لا نسخ اسم دلو أو مساحة. كما أن إعداد الخلفية ليس سياق تعبيرات عادياً لمراجع الموارد والمتغيرات؛ يجب تأسيسه قبل تقييم الرسم المُدار.

المسار المحلي الصريح إعداد ذو حالة أيضاً

المثبت المحلي الكامل غير قابل للتنفيذ عمداً. سيحفظ الحالة وفق سلوك الخلفية المحلية لو هيئ وطُبق مستقلاً. المسار نسبي اصطناعي لا لقطة إنتاج موجودة. قد تربط المساحات المسماة حالة مختلفة عن مسار الافتراضي بحسب الخلفية، فلا يكفي اسم المساحة لتحديدها. لا ينشئ الدرس مجلداً أو حالة أو قفلاً أو يهيئ خلفية.

hcl هدف حالة محلية توضيحي كامل
terraform {
  required_version = ">= 1.16.0, < 1.17.0"
  backend "local" {
    path = "state/atlas.tfstate"
  }
}

resource "terraform_data" "catalog" {
  input = "atlas-lab"
}

يتبع الإعداد هذا الجذر، والمسار ليس قفل حزم ولا مادة مصدر غير حساسة. لا نشغل أمراً أو نفتح المسار أو نعدله.

ينسق القفل كتّاب الحالة المتعاونين

يستخدم Terraform قفل الحالة للعمليات المعنية حيث تدعمه الخلفية. ينبغي أن يوقف فشل القفل كاتباً غير منسق لا أن يدعو لتعطيل الحماية. لا يمنع القفل شخصاً من تغيير الكائن بنظام آخر، ولا ينسق حالتين مستقلتين تدعيانه. يحل .terraform.lock.hcl اختيار الحزم وسلامتها لا كتابة الحالة. افصل الآليات وأدلة فشلها.

قد تشير التسميات المتساوية لحالات مختلفة

يوضح النموذج دور موضع الخلفية في الهوية؛ يحمل السجلان default ويختلف المسار. تتبع المفاتيح الفعلية وخريطة المساحة عقد الخلفية، ولا يكتشفهما هذا المثال. أثبت الخلفية المعتمدة والمفتاح والمساحة وسياق التنفيذ قبل تفسير قائمة فارغة كفقد بنية. لا يكفي اسم مألوف للمجلد أو هوية الدخول وحدها لإثبات اختيار الحالة المقصودة.

python مقارنة هويتي هدف حالة معلنتين
first = ('local', 'state/atlas.tfstate', 'default')
second = ('local', 'state/other.tfstate', 'default')
print(f'same_workspace_label={first[2] == second[2]}')
print(f'same_state_target={first == second}')
الناتج المتوقع
same_workspace_label=True
same_state_target=False

تتطابق التسميتان ويختلف الهدفان. هي نصوص ذاكرة لا قراءة خلفية أو اكتشاف مساحة، ولا نصل لمحتوى أو اعتماد أو واجهة.

استعد الوصول بإجراء له مالك

احفظ هوية العملية والوقت والخلفية والتشخيص عند فشل القفل أو الحفظ. حدد وجود كاتب مصرح نشط قبل الاستعادة الاستثنائية؛ فقد ينشئ فكه تضارباً وليس اختصار إعادة. تتطلب الهجرة وإعادة إعداد الخلفية مراجعة ونسخاً وتصريحاً وتحققاً لأنها تمس حالة حساسة. لا نهاجر أو نفك أو نعدل أو نتصل؛ بل نوضح حقائق قرار المالك.

الأخطاء الشائعة وإصلاحها

Error acquiring the state lock.

لماذا يحدث؟
يمنع كاتب أو قفل باق أو مشكلة وصول التنسيق.
كيف تصلحه؟
حدد المالك والسياق بإجراء التعافي.
كيف تتجنب تكراره؟
نسق الكتّاب وراقب الإكمال.

استخدام اسم المساحة كهوية كاملة.

لماذا يحدث؟
أُهمل الموضع وربط الاسم بالمفتاح.
كيف تصلحه؟
أكد الهدف الكامل قبل التغيير.
كيف تتجنب تكراره؟
سجل الخلفية والمفتاح والمساحة والهوية معاً.

توقع منع التطبيقات المتزامنة بقفل الاعتماد.

لماذا يحدث؟
اختلط اختيار الحزم بقفل الحالة.
كيف تصلحه؟
استخدم تنسيق الحالة وافصل سلامة الاعتماد.
كيف تتجنب تكراره؟
سم كل قفل وحده المحمي.

اختبر فهمك

1. هل تدير جذور باسم default حالتين مختلفتين؟

اعرض الحل المشروح

نعم؛ الاسم جزء واحد وقد تختلف الخلفية والموضع. يوضح المثال الفرق دون قراءة، فأثبت الهدف قبل الغياب أو التبني أو الإنشاء أو التعافي.

2. هل يمنع قفل الحالة تغييراً يدوياً للخدمة؟

اعرض الحل المشروح

لا؛ ينسق عمليات Terraform المتعاونة ضمن الخلفية. قد يغير نظام آخر الكائن فينشأ انجراف. افصل التنسيق والصلاحيات والملكية والكشف ولا تطلب من القفل كل الضمان.

أهم ما تعلمته

  • صرح بقدرات الخلفية وهوية الحالة الكاملة.
  • ينسق قفل الحالة الكتّاب ويحدد قفل الاعتماد الحزم.

المراجع الرسمية