Terraform / دليل حلول تحريري

استبدال غير متوقع: تغير هوية أم معنى مورد؟

افصل تغير العنوان عن استبدال المزود قبل الترحيل أو الإزالة.

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

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

قد يقترح تعديل صغير إزالة وإنشاء أو تختفي نسخة بعد تغيير الاسم والمفتاح. ويظل إنشاء البديل أولاً متضمناً حذفاً.

قد يكون استبدالاً مشروعاً أو غياب moved أو انزياح فهرس أو مفتاح أو نسخة مزود أو حالة خطأ. ميّز الفرضيات.

افهم الأسباب المحتملة

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

أثبت الهوية القديمة والمقترحة

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

قد تحتاج التسمية استمراراً صريحاً

حين ينبغي للكائن المُدار نفسه الاستمرار بعنوان جديد مدعوم، تعبر moved عن الترحيل. يفترض المثال ارتباط terraform_data.legacy سابقاً دون بنية حقيقية أو تقييم حالة. لا يبقى المورد القديم معلناً ككائن مرغوب ثان. ليست moved وسيلة لإخفاء استبدال خاصية حقيقي أو دمج ملكية متعارضة؛ بل ينبغي أن تطابق استمرار الهوية المقصود.

hcl عقد تسمية توضيحي كامل
terraform {
  required_version = ">= 1.16.0, < 1.17.0"
}

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

moved {
  from = terraform_data.legacy
  to   = terraform_data.catalog
}

تصف الكتلة استمرار الهوية السابقة ولا تتبنى غير المُدار أو تجيز ربط كائن مختلف. لا تُفحص حالة أو تُعدل.

راجع المفاتيح مستقلة عن القيم

يقارن النموذج مفتاح worker القديم بـ jobs الجديد، ويحدد الإعلان المزال والمضاف لا أفعال المزود. إذا كان التغيير تسمية والهوية مستمرة فراجع نقلاً مدعوماً. أما إذا تغير الكائن التجاري نفسه فقد يخطئ حفظ الهوية السابقة. وتحتاج انزياحات فهرس count الفصل نفسه بين هوية دائمة وعرض متغير، لا تعميم أن كل اختلاف آمن.

python مقارنة مجموعتي مفاتيح معلنتين
before = {'worker'}
after = {'jobs'}
print('removed_keys=' + ','.join(sorted(before - after)))
print('added_keys=' + ','.join(sorted(after - before)))
الناتج المتوقع
removed_keys=worker
added_keys=jobs

يحدد المزال والمضاف دون خطة أو قرار تدمير أو صحة moved؛ فتحتاج الملكية ومعنى المورد.

راجع سبب الاستبدال الباقي وخطره

مع ثبات العنوان، افحص الخصائص المتغيرة ومحفزات الدورة وإصدار المزود وقواعد الاستبدال للمورد. يغير create_before_destroy الترتيب المدعوم لا قيد التفرد أو جاهزية الخدمة. قد يمنع prevent_destroy المقترح ولا يستعيد البيانات. يخفي نزع الحماية أو تجاهل كل الخصائص لأجل خطة هادئة القرار الحقيقي. اختر انتقالاً مدعوماً مع المالك وخطة البيانات والإتاحة.

تحقق من نجاح الإصلاح

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

امنع تكرار المشكلة

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

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