ماذا يحدث حين يغيّر أحدهم البنية يدويًا خارج Terraform؟ هذا هو الانحراف (Drift)، وكشفه من أهمّ ما يحافظ على سلامة بنيتك. درس متقدّم يبني على الحالة (State).
ما هو الانحراف؟
الانحراف هو أن تصبح البنية الفعليّة مختلفة عمّا يصفه كودك وحالتك. يحدث حين يعدّل أحدهم موردًا مباشرةً — من لوحة تحكّم المزوّد أو بأمر يدوي — دون المرور عبر Terraform.
مثال: يفتح زميل منفذًا في مجموعة أمان يدويًا لحلّ مشكلة عاجلة. الآن الواقع يحوي منفذًا لا يذكره كودك — هذا انحراف.
لماذا الانحراف مشكلة؟
- يجعل كودك لا يعكس الواقع، فتفقد الثقة بأنّ «الكود مصدر الحقيقة».
- قد يُلغى التغيير اليدوي فجأة في
applyتالٍ، أو يسبّب سلوكًا غير متوقّع. - يصعّب إعادة الإنتاج والتدقيق.
كيف يكشفه Terraform؟
الأداة الأساسية هي terraform plan: يقارن الحالة المطلوبة (الكود) بـالواقع الفعليّ لدى المزوّد. إن اكتشف فارقًا لم يأتِ من الكود، يعرضه في الخطّة — وهذا هو كشف الانحراف.
تشغيل plan دوريًا (يدويًا أو آليًا في CI) هو كيف تراقب الانحراف باستمرار.
كيف تتعامل معه؟
عند اكتشاف انحراف، أمامك خياران:
- أعده إلى ما يصفه الكود: طبّق
applyفيعيد Terraform المورد إلى الحالة المطلوبة (يلغي التغيير اليدوي). - حدّث الكود ليعكس التغيير: إن كان التغيير اليدوي صحيحًا ومرغوبًا، أدخِله في الكود ليصبح جزءًا رسميًا من الإعداد.
في الحالتين، الهدف واحد: إبقاء الكود والواقع متطابقين، والكود هو المرجع.
الدرس الأهمّ
الانحراف يذكّرنا بالقاعدة الذهبية في IaC: كل تغيير يمرّ عبر الكود، لا يدويًا. التغييرات اليدوية عدوّ قابلية إعادة الإنتاج.
الخطوات التالية
راجع دورة Plan و Apply التي تكشف الانحراف، ومفهوم الحالة (State).