المدونة /

البنية التحتية ككود: دليل عملي لاستخدام تيرافورم

البنية التحتية ككود: دليل عملي لاستخدام تيرافورم

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

تعالج البنية التحتية ككود (IaC) هذه المشكلة بمعاملة الخوادم والشبكات وقواعد البيانات كما نعامل كود التطبيق: تحت إدارة الإصدارات، وتخضع للمراجعة، وقابلة للتكرار. وتيرافورم هي الأداة الأكثر انتشارا لذلك، وضبط الأساسيات مبكرا يوفر شهورا من التنظيف لاحقا.

في هذا الدليل ستتعرف على:

  • المشكلات التي تحلها البنية التحتية ككود ومتى تستحق الاستثمار
  • كيف تهيكل مشروع تيرافورم وتدير الحالة بأمان
  • كيف تشغّله داخل خط النشر دون مفاجآت لفريقك

نبني ونشغّل بنية تحتية سحابية لعملائنا كل أسبوع، لذا ما يلي هو ما نطبقه فعليا وليس شرحا نظريا.


جدول المحتويات


1. ما الذي تحله البنية التحتية ككود فعليا

النقر داخل لوحة تحكم السحابة سريع في المرة الأولى ومكلف في كل مرة بعدها. تستبدل IaC ذلك بحالة مرغوبة معلنة تطبقها الأداة نيابة عنك.

والفوائد العملية واضحة:

  • قابلية التكرار. البيئة الجديدة أمر واحد وليست أسبوعا من المعرفة المتناثرة.
  • قابلية المراجعة. تمر تغييرات البنية التحتية عبر طلبات الدمج مثل أي تغيير آخر.
  • قابلية التدقيق. يجيب سجل Git عن سؤال من غيّر هذا ولماذا.
  • التعافي من الكوارث. إعادة بناء منطقة كاملة تصبح إجراء معروفا وليست ارتجالا.
دورة تغيير البنية التحتية ككود
  1. 1تعديل الكودإعلان الحالة المرغوبة
  2. 2التخطيطمعاينة الفروقات
  3. 3المراجعةموافقة طلب الدمج
  4. 4التطبيقينفذه خط النشر

مثال توضيحي

نصيحة: إذا كانت لديك بيئة واحدة نادرا ما تتغير، فابدأ صغيرا. حوّل إلى كود الأجزاء التي تتغير كثيرا مثل الشبكات وقواعد البيانات قبل السعي إلى تغطية كاملة.


2. اختيار الأدوات المناسبة

تستخدم تيرافورم (وبديلها مفتوح المصدر OpenTofu) لغة تعريفية وتعمل مع كل مزودي الخدمة الرئيسيين. أما Pulumi فتتيح كتابة البنية التحتية بلغات برمجة عامة. وتتكامل الخيارات الخاصة بكل سحابة مثل CloudFormation وBicep بإحكام مع مزود واحد.

الأداة الأنسب لـ المقايضة
Terraform / OpenTofu تعدد السحابات ونظام بيئي واسع لغة خاصة تحتاج إلى تعلم
Pulumi الفرق التي تفضل TypeScript أو Python مجتمع أصغر
CloudFormation / Bicep الشركات ذات المزود الواحد الارتباط بسحابة واحدة

خيارنا الافتراضي هو تيرافورم لأن التوظيف والتوثيق والوحدات المجتمعية فيها هي الأقوى. وأفضل أداة هي التي سيواصل فريقك صيانتها.


3. هيكلة مشروع تيرافورم

معظم مستودعات تيرافورم الفوضوية بدأت بملف ضخم واحد. قسّم مبكرا على محورين.

3.1 وحدات للأجزاء القابلة لإعادة الاستخدام

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

3.2 البيئات كجذور منفصلة

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

نصيحة: ثبّت إصدارات الوحدات والمزودين. ترقية مزود غير مثبت هي أشيع سبب لظهور تغييرات في الخطة لم يجرها أحد.


4. إدارة الحالة بأمان

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

  1. خزّن الحالة في خلفية بعيدة (حاوية تخزين كائنات مع تفعيل الإصدارات).
  2. فعّل قفل الحالة حتى لا يعمل تطبيقان في وقت واحد.
  3. شفّر الحالة أثناء التخزين لأنها قد تحتوي أسرارا بنص صريح.
  4. قيّد من يستطيع قراءتها وعاملها كملف اعتمادات.

لا ترفع الحالة إلى Git أبدا، ولا تعدّلها يدويا إلا إذا فهمت أوامر terraform state جيدا.


5. تشغيل البنية التحتية ككود في خط النشر

التطبيق من أجهزة المطورين يصلح حتى يفعله شخصان في الظهيرة نفسها. انقله إلى CI/CD:

  • شغّل fmt وvalidate ومدقق الكود مع كل طلب دمج.
  • انشر مخرجات plan كتعليق على الطلب ليرى المراجعون ما سيتغير بالضبط.
  • طبّق من الفرع الرئيسي فقط بعد الموافقة وباعتمادات قصيرة العمر.
  • أضف خطة مجدولة تنبهك إلى الانحراف عندما يغيّر أحدهم شيئا يدويا.

الهدف ألا يحتاج أحد إلى صلاحية كتابة على الإنتاج من جهازه الشخصي.


6. أخطاء شائعة يجب تجنبها

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

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

هل تستحق تيرافورم العناء لفريق صغير؟

نعم، إذا كانت لديك أكثر من بيئة أو كنت تغيّر البنية التحتية بانتظام. ابدأ بالشبكات وقواعد البيانات ثم وسّع النطاق مع ترسخ العادة.

ما الفرق بين تيرافورم وOpenTofu؟

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

أين يجب تخزين حالة تيرافورم؟

في خلفية بعيدة مع تفعيل الإصدارات والقفل والتشفير، مثل حاوية تخزين كائنات سحابية. وليس في Git أبدا.

كيف نتعامل مع بنية تحتية موجودة بالفعل؟

استوردها تدريجيا بأمر terraform import أو كتل الاستيراد، خدمة بعد أخرى، وتأكد من أن كل خطة لا تُظهر تغييرات غير مقصودة قبل الانتقال للتالية.


الخاتمة

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

💬 ما الجزء الوحيد من بنيتك التحتية الذي ستخشى إعادة بنائه من الصفر اليوم؟

إن كنت تعمل على هذا بنفسك، فريق السحابة و DevOps لدينا يغطي بالضبط هذا النوع من القرارات. يسعدنا مناقشته معك.

فالوكس

فالوكس

برمجيات مدعومة بالذكاء الاصطناعي، من فريق ينفذ فعلياً. من نحن

مشاركة:

التعليقات

شاركنا رأيك

تتم مراجعة جميع التعليقات قبل نشرها.
مستعد للبدء؟

لديك مشروع في ذهنك؟

لنتحدث عما تبنيه — ابدأ باستشارة مجانية.