0Pricing
Terraform Infrastructure as Code · درس

إعادة هيكلة الحالة باستخدام moved وremoved

أعيدوا تسمية الموارد وإعادة هيكلتها بأمان دون تدمير البنية التحتية، باستخدام أوامر معالجة الحالة وكتل moved وremoved التصريحية.

إعادة هيكلة الحالة باستخدام moved وremoved درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

مشكلة إعادة التسمية

عند إعادة تسمية مورد في إعداداتك، يرى Terraform أن العنوان القديم اختفى وأن عنوانًا جديدًا ظهر. وبشكل افتراضي، سيقوم بتدمير المورد وإعادة إنشائه، مما قد يؤدي إلى توقف الخدمة أو فقدان البيانات.

تتيح لك أدوات إعادة هيكلة الحالة إخبار Terraform بأن المورد قد انتقل فحسب.

فحص الحالة

ابدأ بسرد العناصر المتتبعة في الحالة. يعرض الأمر terraform state list عنوان كل مورد تتم إدارته.

terraform state list

النقل الإجرائي باستخدام state mv

الأسلوب التقليدي هو terraform state mv، الذي يعيد كتابة عنوان المورد في الحالة. نعيد هنا تسمية مثيل من aws_instance.web إلى aws_instance.app.

terraform state mv aws_instance.web aws_instance.app

عيب state mv

إن state mv إجراء يدوي لمرة واحدة من خلال CLI. ولا يُسجَّل في الشيفرة، لذلك يجب على زملائك الذين يجرون التغيير نفسه على أجهزتهم تكراره. وهذا عرضة للأخطاء في سير العمل التعاوني.

كتل moved التصريحية

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

moved {
  from = aws_instance.web
  to   = aws_instance.app
}

النقل إلى وحدة

تتعامل كتل moved أيضًا مع تغليف الموارد داخل وحدة. ويتضمن العنوان الهدف مسار الوحدة.

moved {
  from = aws_instance.app
  to   = module.compute.aws_instance.app
}

التحقق باستخدام خطة

بعد إضافة كتلة moved، شغّل terraform plan. يعرض النقل الصحيح عدم وجود أي تدمير أو إنشاء، بل تغييرًا في العنوان فقط. وإذا استمر ظهور الاستبدال، فهذا يعني أن الكتلة غير صحيحة.

terraform plan

إزالة مورد من الحالة

قد ترغب أحيانًا في أن يتوقف Terraform عن إدارة مورد دون تدمير البنية التحتية الفعلية. والأمر الإجرائي لذلك هو terraform state rm.

terraform state rm aws_instance.legacy

كتل removed التصريحية

تدعم إصدارات Terraform الأحدث كتلة removed. فعند استخدام lifecycle { destroy = false }، تنسى الكتلة المورد في الحالة، لكنها تترك البنية التحتية الفعلية دون تغيير.

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

تقسيم ملفات الحالة

بالنسبة إلى المشاريع الكبيرة، يمكن لـ terraform state mv -state-out نقل الموارد بين ملفات حالة منفصلة، وهو أمر مفيد عند تقسيم مشروع أحادي إلى حزم مستقلة يمكن تطبيقها بشكل منفصل.

terraform state mv -state-out=network.tfstate \
  aws_vpc.main aws_vpc.main

النسخ الاحتياطية والأمان

ينشئ Terraform ملف .backup قبل تعديل الحالة. ومع ذلك، عند استخدام الخلفيات البعيدة، احرص دائمًا على التأكد من أن الحالة ليست مقفلة من قِبل أحد زملائك قبل إجراء عمليات يدوية، لتجنب تلفها.

اختبار سريع

اختبر معرفتك بإعادة هيكلة الحالة.

مراجعة: إعادة هيكلة الحالة بأمان

يمكنك الآن إعادة هيكلة البنية التحتية دون تدميرها:

  • state mv / state rm للتغييرات الإجرائية.
  • كتل moved لإعادة التسمية التصريحية.
  • كتل removed لنسيان الموارد دون تدميرها.
  • تحقق دائمًا باستخدام خطة لا تعرض أي استبدال.

الأسئلة الشائعة

هل درس «إعادة هيكلة الحالة باستخدام moved وremoved» مجاني؟

نعم — نص درس «إعادة هيكلة الحالة باستخدام moved وremoved» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

ماذا ستتعلم في «إعادة هيكلة الحالة باستخدام moved وremoved»؟

أعيدوا تسمية الموارد وإعادة هيكلتها بأمان دون تدمير البنية التحتية، باستخدام أوامر معالجة الحالة وكتل moved وremoved التصريحية. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟

لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «إعادة هيكلة الحالة باستخدام moved وremoved»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟

نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الواجهات الخلفية للحالة عن بُعد
  2. قفل الحالة واتساقها
  3. استيراد الموارد الموجودة
  4. إعادة هيكلة الحالة باستخدام moved وremoved
← العودة إلى Terraform Infrastructure as Code