ما هي إدارة التكوين؟

إدارة التكوين هي عملية صيانة البرامج وأنظمة الكمبيوتر (على سبيل المثال الخوادم والتخزين والشبكات) في حالة معروفة ومرغوبة ومتسقة. كما يتيح الوصول إلى سجل تاريخي دقيق لحالة النظام لأغراض إدارة المشروع والتدقيق.

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

ومع ذلك فهي مهمة صعبة عندما يعملون على بنية تحتية ضخمة. تم تقديم أداة إدارة التكوين مثل Puppet لحل مثل هذه المشكلات.

ما هي Puppet؟

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

تم تصميم Puppet خصيصًا لإدارة تكوين أنظمة Linux و Windows. إنه مكتوب بلغة Ruby ويستخدم لغته الفريدة الخاصة بالمجال (DSL) لوصف تكوين النظام.

ما هي إصدارات Puppet؟

تأتي Puppet في نسختين:

  1. Open Source Puppet: إنها نسخة أساسية من أداة إدارة تكوين Puppet والتي تُعرف أيضًا باسم Open Source Puppet. إنه متاح مباشرة من موقع Puppet على الويب ومرخص بموجب نظام Apache 2.0.
  2. Puppet Enterprise: إصدار تجاري يقدم ميزات مثل تقارير الامتثال والتنسيق والتحكم في الوصول المستند إلى الأدوار وواجهة المستخدم الرسومية وواجهة برمجة التطبيقات وأدوات سطر الأوامر للإدارة الفعالة للعقد.

ماذا يمكن أن تفعل Puppet؟

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

أداة إدارة التكوين Puppet

للقيام بذلك يمكنك استخدام Puppet والذي يسمح لك بكتابة رمز بسيط يمكن نشره تلقائيًا على هذه الخوادم. هذا يقلل من الجهد البشري ويجعل عملية التطوير سريعة وفعالة.

أداة إدارة التكوين Puppet

تؤدي Puppet الوظائف التالية:

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

Puppet DSL ونماذج البرمجة

قبل أن نتعلم Puppet DSL دعونا نفهم نماذج البرمجة. نموذج البرمجة هو أسلوب تستخدمه في برمجة الكمبيوتر.

أربعة أنواع من النماذج هي:

  1. Imperative
  2. Declarative
  3. وظيفية (والتي تعتبر مجموعة فرعية من هذا النموذج التصريحي)
  4. Object-oriented

سوف نركز على Imperative و Declarative.

Imperative

يعبر نموذج البرمجة هذا عن منطق الحساب (ما يجب القيام به) ويصف تدفق التحكم (كيف نفعل)

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

النماذج التصريحية

يعبر نموذج البرمجة هذا عن منطق الحساب (ما يجب القيام به) دون وصف تدفق التحكم (كيف نفعل)

مثال:
افترض أنك ذاهب إلى مكتبك وأنك تحجز سيارة أجرة Uber وتحدد الوجهة النهائية (المكتب). تحديد ما لا تفعله هو أسلوب تعريفي.

يستخدم Puppet نهج البرمجة التصريحية.

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

ومع ذلك يمكن أن يتم ذلك باستخدام نمط البرمجة التصريحي مع بضعة أسطر فقط من كود Puppet ولغة نطاق Puppet المحددة (DSL) ولا يزال يتم تحقيق نفس النتيجة.

نماذج نشر أدوات إدارة التكوين

يوجد نموذجان لنشر أدوات إدارة التكوين:

  1. نموذج النشر المستند إلى الدفع: تم بدؤه بواسطة عقدة رئيسية.
  2. ونموذج النشر المستند إلى السحب: بدأه الوكلاء.

نموذج النشر المستند إلى الدفع:

في نموذج النشر هذا يدفع الخادم الرئيسي التكوينات والبرامج إلى الوكلاء الفرديين. بعد التحقق من اتصال آمن يقوم السيد بتشغيل الأوامر عن بعد على الوكلاء. على سبيل المثال Ansible and Salt Stack.

نموذج النشر القائم على السحب:

في نموذج النشر هذا تتصل الخوادم الفردية بخادم رئيسي وتتحقق من اتصالاً آمنًا وتؤسسه وتنزيل التكوينات والبرامج الخاصة بها ثم تهيئ نفسها وفقًا لذلك – على سبيل المثال Puppet and Chef.

كيف تعمل Puppet؟

يعتمد Puppet على نموذج نشر Pull حيث تتحقق عقد الوكيل بانتظام بعد كل 1800 ثانية باستخدام العقدة الرئيسية لمعرفة ما إذا كان هناك أي شيء يحتاج إلى تحديث في الوكيل. إذا كان هناك أي شيء يحتاج إلى تحديث يسحب الوكيل رموز Puppet اللازمة من السيد وينفذ الإجراءات المطلوبة.

دعونا نشرحها بمثال:

master:

جهاز يعمل بنظام Linux مع برنامج Puppet Master مثبت عليه. وهي مسؤولة عن الحفاظ على التكوينات في شكل رموز Puppet. يمكن أن تكون العقدة الرئيسية نظام Linux فقط.

The agents:

يتم إدارة الأجهزة المستهدفة بواسطة  Puppet مع تثبيت برنامج وكيل Puppet عليها.

يمكن تكوين الوكيل على أي نظام تشغيل مدعوم مثل Linux أو Windows أو Solaris أو Mac OS.

يتم إنشاء الاتصال بين السيد والوكيل من خلال شهادات آمنة.

أداة إدارة التكوين Puppet

التواصل بين Master و Agent

الخطوة 1) بمجرد إنشاء الاتصال بين الوكيل و master يرسل وكيل Puppet البيانات حول حالته إلى خادم Puppet الرئيسي. تسمى هذه الحقائق: تتضمن هذه المعلومات اسم المضيف وتفاصيل kernel وعنوان IP وتفاصيل اسم الملف وما إلى ذلك …

أداة إدارة التكوين Puppet

الخطوة 2) يستخدم Puppet Master هذه البيانات ويجمع قائمة بالتهيئة التي سيتم تطبيقها على الوكيل. تُعرف قائمة التكوين التي سيتم إجراؤها على وكيل باسم الكتالوج. يمكن تغيير هذا مثل تثبيت الحزمة أو الترقيات أو الإزالة أو إنشاء نظام الملفات أو إنشاء المستخدم أو حذفه أو إعادة تشغيل الخادم أو تغييرات تكوين IP إلخ.

الخطوة 3) يستخدم الوكيل قائمة التكوين هذه لتطبيق أي تغييرات تهيئة مطلوبة على العقدة.

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

أداة إدارة التكوين Puppet

الخطوة 4) بمجرد الانتهاء من ذلك ستعود العقدة إلى التقارير الرئيسية للدمى التي تشير إلى أن التكوين قد تم تطبيقه واكتماله.

Puppet Blocks

يوفر Puppet المرونة لدمج التقارير مع أدوات الجهات الخارجية باستخدام Puppet APIs.

أربعة أنواع من لبنات بناء Puppet هي:

  1. Resources
  2. Classes
  3. Manifest
  4. Modules

Puppet Resources

Puppet Resources هي اللبنات الأساسية لـ Puppet.

Resources هي الوظائف المضمنة التي تعمل في النهاية الخلفية لأداء العمليات المطلوبة في Puppet.

Puppet Classes

يمكن تجميع مجموعة من الموارد المختلفة معًا في وحدة واحدة تسمى فئة.

Puppet Manifest

البيان هو دليل يحتوي على ملفات DSL الخاصة ب Puppet. هذه الملفات لها ملحق .pp. يشير ملحق .pp إلى برنامج Puppet. يتكون رمز Puppet من تعريفات أو إعلانات لفئات Puppet.

Puppet Modules

الوحدات النمطية هي مجموعة من الملفات والأدلة مثل البيانات وتعريفات الفئة. إنها الوحدات التي يمكن إعادة استخدامها وقابلة للمشاركة في Puppet.

على سبيل المثال وحدة MySQL لتثبيت وتهيئة MySQL أو وحدة Jenkins لإدارة Jenkins إلخ.

أداة إدارة التكوين Puppet

أنواع موارد Puppet

بشكل عام يتكون النظام من الملفات والمستخدمين والخدمات والعمليات والحزم وما إلى ذلك. في Puppet تسمى هذه الموارد. الموارد هي اللبنات الأساسية في Puppet. يتم تنفيذ جميع العمليات على وكلاء Puppet بمساعدة موارد Puppet.

موارد Puppet هي الأدوات الجاهزة التي تُستخدم لأداء مهام وعمليات مختلفة على أي نظام أساسي مدعوم. يمكننا استخدام مورد Puppet واحد لأداء مهمة محددة أو يمكننا استخدام موارد Puppet متعددة معًا لتنفيذ بعض عمليات نشر تكوينات التطبيقات المعقدة.

يمكن أن يكون للموارد أنواع مختلفة. يستخدم Puppet الموارد وأنواع الموارد من أجل وصف تكوين النظام.

هناك ثلاثة أنواع من أنواع الموارد:

أنواع الموارد الأساسية أو المضمنة

أنواع الموارد الأساسية أو المضمنة هي أنواع موارد Puppet المبنية مسبقًا والتي يتم شحنها مع برامج Puppet. تتم كتابة جميع أنواع موارد Puppet الأساسية أو المضمنة وصيانتها بواسطة فريق Puppet.

أنواع الموارد المعرفة بـ Puppet

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

أنواع موارد Puppet المخصصة

أنواع الموارد المخصصة هي أنواع موارد مخصصة بالكامل مكتوبة بلغة Ruby.

داخل Terminal اكتب الأمر التالي لعرض قائمة بالأوامر الفرعية ذات الصلة بـ Puppet:

Puppet –help

في حالتنا نحن مهتمون بالأمر الفرعي ” resource ” الذي سنستخدمه للعثور على معلومات حول أنواع موارد puppet المدمجة.

اكتب أيًا من الأوامر التالية لعرض قائمة بالإجراءات المرتبطة بأمر puppet الفرعي ” resource “:

Puppet help resource		
Puppet resource --help	

في هذه الحالة لدينا المورد كأمر فرعي وأنواع كإجراء.

Puppet لديها 49 نوعا من الموارد الأساسية يحمل في ثناياه عوامل.

في Terminal اكتب الأمر التالي لعرض قائمة بأنواع موارد puppet المدمجة المتاحة:

puppet resource –types

يدعم كل نوع قائمة السمات. توفر هذه السمات وصفًا تفصيليًا يستخدمه Puppet لإدارة المورد.

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

puppet describe <resource type name>	

ستدرج المعلمات جميع السمات المتاحة لنوع المورد هذا.

puppet describe package:

يصعب على الشخص الجديد فهم العديد من ملفات رموز puppet غير المُدارة والربط بينها. هذا هو المكان الذي نحتاج فيه إلى بعض التجميع لربط العمليات معًا. الهدف هو حل مشكلة واحدة مثل جميع العمليات المطلوبة لتكوين ssh على خادم أو خدمة ntp أو خادم ويب كامل أو خادم قاعدة بيانات من البداية.

ما هي فئات puppet؟

فئات puppet هي مجموعة من موارد puppet المجمعة معًا كوحدة واحدة.

قدم Puppet دروسًا لجعل الهيكل قابلًا لإعادة الاستخدام والتنظيم.

أولاً نحتاج إلى تحديد فئة باستخدام صياغة تعريف الصنف يجب أن تكون الفئات فريدة ولا يمكن الإعلان عنها إلا مرة واحدة بنفس الاسم:

class <class-name> {
<Resource declarations>
}

class ntpconfig {
    file {
        "/etc/ntp.conf": 
     ensure=> "present", content=> "server 0.centos.pool.ntp.org iburst\n",
    }
}

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

إعلان عن class

لاستخدام فئة محددة في التعليمات البرمجية استخدم الكلمة الأساسية include.

class ntpconfig {
    file {
        "/etc/ntp.conf": 
      ensure=> "present", 
      content=> "server 0.centos.pool.ntp.org iburst\n",
    }
}
include ntpconfig

دعونا نفهم هذا من خلال سيناريو حالة حقيقية.

عرض توضيحي لتثبيت NTP

أولاً تأكد من أن حزمة NTP ليست موجودة بالفعل على الخادم ولن يقوم الأمر التالي بإرجاع أي شيء إذا لم يكن telnet موجودًا على الخادم:

rpm -qa | grep -i ntp

كما نرى فإن حزمة NTP موجودة بالفعل على الخادم. دعنا نزيل حزمة NTP الحالية:

yum remove ntp

بعد إزالة الحزمة تأكد من عدم وجود ملف ntp.conf:

ls -lrt /etc/ntp.conf

المصدر

منشور ذات صلة
6 Minutes

أمن الموقع| الفوائد -الأدوات -الإجراءات

جاسم ناظري

الأمان ليس شيئًا بسيطًا، خاصة في مواقع الويب أو تطبيقات الويب. يختلف الأمان من منظمة إلى أخرى، ولكن يجب أن يتم تطبيق بعض معايير الأمان، ويتم تنفيذ هذه المعايير وإبرازها بواسطة OWASP.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة