نحوَ فهمٍ أفضل لبيئة إعداد Chef على خادومٍ افتراضي خاص (VPS)


محمد هاني صباغ

مقدمة

توفّر أدوات إدارة الإعدادات وسيلةً سهلة لنشر إعدادات متوافقة لمجموعة من الحواسيب العميلة (client computers) عبر خادوم إدارة مركزي. Chef هو واحدٌ من أشهر أدوات إدارة الإعدادات. حيث أنه مكتوب بلغة روبي ويقرأ الإعدادات بناءً على ما يدعى بالوصفات (recipes).

يوفر Chef وسيلة سريعة لنشر بيئات عمل كاملة عوضًا عن مجرد تطبيقات مفردة. في أي حالة تحتاج فيها إلى تثبيت أي قطعة برمجيات ثمّ تعديل ملفات إعداداتها، يمكن لـChef أن يقوم بأتمتة العملية.

في هذا الدليل، سنقوم بإلقاء لمحة عامة على كيفية تنظيم Chef لملفاته وما الأدوات والأنظمة التي يستخدمها ليقوم بمهامه.

مصطلحات Chef

من المهم فهم عمل مختلف المكونات التي تشكل Chef وتفاصيلها.

بنية Chef التحتية التشغيلية

سنبدأ بالحديث عن النماذج المختلفة التي تُشكل استراتيجية التطوير عالية المستوى لـChef. يتم تقسيم نظام Chef حسب الأدوار التي يلعبها كل حاسوب أو آلة:

  • خادوم Chef: هذا هو المكان الرئيسي الذي يتم فيه تخزين إعدادات الوصفات، كتب الوصفات (cookbooks) وتعريفات العُقَد (nodes definitions) وتعريفات محطة العمل (workstation definitions). إنّه الآلة المركزية التي ستستخدمها كل الآلات الأخرى ضمن الشبكة للحصول على إعدادات نشر الخواديم (deployments).

  • عُقَد Chef: وهي أهداف النشر التي سيتم ضبطها بواسطة Chef. كل عقدة تمثّل بيئة آلة منفصلة مُحتواة إمّا على خادوم حقيقي أو داخل آلة وهمية.

يحتوي كلٌ من بيئات أنظمة التشغيل هذه على تطبيق عميل Chef لتتمكن من الاتصال مع خادوم Chef.

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

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

قد تعطيك العناوين العريضة أعلاه انطباعًا عن أنّ مكونات Chef هي مكونات منفصلة يجب تشغيلها على أجهزة منفصلة، بينما في الواقع، يمكن لآلة واحدة فقط أن تقوم بدور اثنين من هذه المكونات أو حتى جميعها. هناك مشروع يدعى chef-solo يسمح لك بالتخلي عن استخدام الخادوم المركزي وضبط الحاسوب الذي يتم تثبيته عليه تلقائيًا دون الحاجة للخادوم.

تفاصيل الخادوم

الخادوم هو نقطة التحكم المركزية التي يتم الوصول إليها من طرف جميع آلات Chef الأخرى، سواء كدور عميل أو مدير. يمكن القول أنّه عبارة عن مستودع كبير أو قاعدة بيانات لجميع تفاصيل الإعدادات.

خادوم Chef يعالج الاتصالات والأذونات الواردة من العُقَد ومحطات العمل وينظم البيانات لتكون جاهزة ليتم طلبها من قبل العملاء (clients). يمكن للخادوم أن يتضمن أيضًا واجهة وب للتمكن من إدارة أو ضبط بعض التفاصيل.

تفاصيل العُقَد

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

كل عقدة تتواصل مع الخادوم المركزي باستخدام تطبيق يُدعى chef-client. هذا التطبيق يعالج عملية طلب البيانات من الخادوم المركزي بالإضافة إلى تنفيذ خطوات الإعداد اللازمة لإيصال العقدة إلى حالتها النهائية. يتواصل كلٌ من برنامج chef-client وخادوم Chef عن طريق استيثاق بمفتاح RSA.

يستخدم Chef-client أداة تدعى ohai لجلب الإحصائيات عن العقدة. هذه الإحصائيات يتم استخدامها بهدف تثبيت تفاصيل إعدادات معينة وتأهيل المتغيرات المُحتواة داخل الملفات للعمل.

تفاصيل محطة العمل

محطة العمل تمتلك الأدوات الضرورية لإنشاء وتعديل تفاصيل الإعدادات لأيٍّ من العُقَد المتوفرة كما أنها قادرة على التواصل مع خادوم Chef لجعلها متوفرة.

تُعتبر أداة knife أداة مهمة لإدارة Chef على أي محطة عمل . تُستخدم هذه الأداة كبوابة يمكنك من خلالها إعداد أي شيء تريد تخزينه على الخادوم. يمكنها أن تدير العُقَد والإعدادات ويمكن أنّ يتم استخدامها بشكل عام للوصول إلى الخادوم باستخدام "طريقة Chef معينة". بينما من الممكن أن يتم تسجيل الدخول إلى الخادوم باستخدام SSH وعمل جميع التغييرات لكل البيانات المطلوبة يدويًا، فهذه ليست الطريقة المثلى التي ينصح نظام Chef باستخدامها.

الإعدادات والتعريفات التي يتم إنشاؤها وتعديلها على محطة العمل يتم تلقائيًا إرسالها إلى نظام إدارة إصدارات معين (version control) ومن ثم يتم دفعها إلى الخادوم المركزي. يُدعى المستودع بـ"chef-repo”. وهو يقوم بإدارة كل البيانات المُحتَاجة لإعداد Chef.

هيكلية ملفات مستودع Chef

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

كما ذكرنا أعلاه، يجب أن يتم إبقاء ملفات إعداد الخادوم تحت نظام إدارة إصدارات بمستودع يدعى "chef-repo”. وهو مجرد مسار (directory) عادي يحتوي على ملفات chef.

في هذا المجلّد، يمكننا أن نجد هيكلية مشابهة للتالي:

  • certificates/: يحتوي على شهادات SSL التي يمكن الوصول إليها من قبل العملاء (clients) للاستيثاق authentication

  • chefignore: يحتوي على الملفات والمسارات التي تُعتبر من ملفات هيكلة Chef الأساسية والتي يجب ألّا يتم دفعها إلى الخادوم.

  • config/: يحتوي على واحدٍ من ملفيّ إعدادات المستودع.

  • rake.rb: يُعرّف بعض المتغيرات لإنشاء شهادات SSL وبعض الخيارات العامة.

  • cookbooks/: يحتوي كتب الوصفات (cookbooks) التي تقوم بإعداد البنية التحتية لمنظمتك.

  • data_bags/: يحتوي على حقائب بيانات مختلفة لإعداداتك.

حقائب البيانات محمية بواسطة مسارات فرعية تحتوي تفاصيل إعدادات حساسة. وهي قابلة للوصول فقط من قبل العُقَد التي تمتلك شهادة SSL مطابقة وتحتوي على ملفات بصيغة JSON مع تفاصيل الإعدادات.

  • environments/: يحتوي على تفاصيل الإعدادات لنشر بيئات العمل المختلفة. كلّ بيئة معدّلة عن البيئة الافتراضية يجب أن يتم تعريفها داخل هذا المجلد.

  • Rakefile: هذا الملف يقوم بتعريف المهام التي يمكن لـchef القيام بها عبر إعداداته.

  • roles/: يحتوي الملفات التي تقوم بتعريف الشروط التي يمكن إسنادها إلى العُقَد.

هيكلية ملفات كتب التّحضير لـChef

ضمنَ مسار كتب الوصفات (cookbooks) في chef-repo, تقوم المسارات الفرعية بتعريف كتب وصفات معينة من أجل التطبيقات. ضمنَ كل مسار إعداد تطبيقٍ منفصل هناك هيكلية تعرّف كيف يجب أن يتم تثبيت هذه الخدمة ومالتغييرات التي يجب عملها لجعلها تعمل بصورة صحيحة.

ضمنّ التطبيق، ستجد ملفاتٍ وتعريفاتٍ تعرّف كيف يجب أن يتم تثبيت وإعداد أي تطبيق جديد.

يحتوي ملف metadata.rb أو metadata.json على معلومات البيانات الوصفية (metadata) حول الخدمة. هذا يتضمن معلوماتٍ أساسية كاسم كتاب الوصفات والإصدار، ولكنه أيضًا مكان حيث يتم تخزين معلومات الاعتماديات. إذا كان كتاب الوصفات هذا يعتمد على كتب وصفات أخرى ليتم تثبيته، فيمكن سردها ضمن هذا الملف وسيتكفل chef بعملية تثبيتها وإعدادها بالإضافة إلى كتاب الوصفات الحالي.

يحتوي مسار attributes على تعريفات الخواص (attribute definitions) التي يمكن أن يتم استخدامها للكتابة فوق الإعدادات الموجودة أو تعريفها من جديد للعُقَد التي ستمتلك هذه الخدمة.

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

يصف مسار files كيف يجب لـchef أن يقوم بتوزيع الملفات عبر العقدة التي يتم نشر كتاب الوصفات هذا عليها.

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

يتم استخدام مسار templates لتوفير إدارة أكثر تطورًا وتعقيدًا للإعدادات. يمكنك توفير ملفات إعداد كاملة تحتوي بداخلها على أوامر روبي مضمّنة. يمكنك تعريف المتغيرات التي يتم طباعتها في ملفاتٍ أخرى كذلك.

الخاتمة

قد لا يكون هذا المقال مُساعدًا لك في كتابة إعدادات Chef الخاصة بك، إلّا أنه يجب أن يعطيكَ لمحةً عامة حول ماهية المكونات المستقلة التي تعمل ضمنَ بيئة نشر معقّدة. بمجرد أن تبدأ بفهم كيفية عمل العقد والخواديم ومحطات العمل بتناسق تامٍ فيما بينها فستكون قادرًا على إيجاد طريقك إلى chef-repo، يمكنك أن تبدأ بفهم كيفية عمل بعض كتب الوصفات المتوفرة.

ترجمة -وبتصرّف- للمقال How To Understand the Chef Configuration Environment on a VPS





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن