اذهب إلى المحتوى

كيف تستخدم Foreman لإدارة نقاط Puppet على الخادوم Ubuntu 14.04


Mohamad Ibrahim3

هذا المقال هو الجزء الثّالث من سلسلة استخدام puppet لإدارة الخواديم التي تتكوّن من كل من:

مُقدمة

Foreman هي أحد الأدوات مَفتوحة المَصدر، والّتي تُستخدم في إدارة الخواديم، وذلك بتوفير طريقة سهلة ومرنة في العمل جنبًا إلى جنبٍ مع الأداة Puppet (أو Chef) وذلك بهدف أتمتة المهام ونشر التطبيقات، وهي مناسبة لكافة أحجام البُنى التَّحْتِيَّة، وتعمل على معظم توزيعات لينكس. تُقدّم هذه التسهيلات عبر توفير واجهة ويب، وAPI، وبالإضافة إلى أوامر الطرفية CLI، مما يجعل الإعداد المُسبق provisioning ومُراقبة الخواديم أسهل من أي وقتٍ مضى.

سيتناول هذا الشرح كيفيّة تنصيب الأداة Foreman مع الأداة Puppet، واستخدامها في إدارة الخواديم. سيتمّ استغلال Foreman في قدرتها على إصدار التقارير وميزة External Node Classifier والّتي يُشار إليها بالاختصار (ENC)، بهدف تسهيل إدارة الأداة Puppet.

مُتَطَلَّبات بيئة العمل

سيتمّ تنصيب الأداة Foreman على خادوم جديد، يحمل الاسم “foreman”، وسيُمثل خادومًا مَركزيًّا آخر للأداة Puppet. يُمكن تنصيب الأداة Foreman على الخادوم المَركزيّ الحالي، ولكن يجب التنبه هنا إلى أنّه سيتمّ استبدال ملف البيان الافتراضيّ site.pp بمَلفّ جديد، وذلك من شأنه أنّ يُلغي العلاقة بين العُملاء الحاليين والخادوم المَركزيّ، ويُمكن تجاوز ذلك بالإعداد مرّة أخرى ليُدير الخادوم Foreman نقاط العُملاء هذه Puppet agent nodes

تَعتمد الأداة Foreman على الأداة Puppet بشكل كبير لإدارة إعدادات العُملاء، ولذلك فمن الضروريّ توفّر الأمور التّالية قبل البدء بتطبيق محتويات هذا الشرح:

  • صلاحيّة وصول كامل: بالاستعانة بالأمر sudo يُمكن عمل كافّة التغيرات المطلوبة.
  • خدمة DNS على الشبكة الخاصّة: إعداد خدمة DNS لترجمة أسماء الخواديم إلى IPs أي (Forward DNS lookup)، وترجمة الـIPs إلى أسماء الخواديم أي (reverse DNS lookup)، ويَجب على كل خادوم أنّ يَمتلك اسمًا فريدًا خاصًا به على مستوى الشبكة الداخلية. يُمكن الرجوع إلى الشرح الخاصّ كيفية إعداد خادوم DNS في الشبكة الخاصّة. في حال عدم توفّر خادوم DNS، فيُمكن استخدام الملف hosts لترجمة العناوين.
  • إعداد الجدار الناري firewall: من الضروريّ الوصول إلى الخادوم المَركزيّ الخاصّ بالأداة Puppet عبر المنفذ 8140، ولذلك يجب التأكد من عدم منع الجدار الناري لهذا المنفذ. يُمكن الاستعانة بالشرح التّالي لمعرفة كيفية السماح بالطلبات الواردة باستخدام UFW.

بعد إتمام المُتَطَلَّبات السابقة من المُمكن الآن الانتقال إلى إنشاء الخادوم Foreman والذي سيكون بنفس الوقت هو خادوم مَركزيّ Puppet master.

إنشاء خادوم Foreman

سيتمّ إنشاء خادوم جديد يعمل بالتوزيعة Ubuntu 14.04 x64، ويحمل اسم المجال المؤهل بالكامل “foreman.nyc2.example.com”، وإعداد خادوم DNS بناءً على هذا الاسم.

يُمكن الرُجوع إلى القسم الخاصّ بـ صيانة سجلات DNS في حال عدم توفّر المَعرفة لفعل ذلك. في حقيقة الأمر كل ما يجب عمله هو إضافة سجلّين الأول من نوع “A” والثاني من نوع “PRT”، والسماح للعميل الجديد بعمل استعلامات دوريّة recursive queries، وأيضًا يجب التأكد من إعداد DNS لترجمة أسماء الخواديم من دون استخدام “اسم النطاق المُؤهل بالكامل” Fully Qualified Domain Name

التأكّد من أنّ اسم الخادوم هو اسم المجال المؤهل بالكامل:

لمعرفة اسم الخادوم الكامل FQDN يُمكن استخدام الأمر التّالي

hostname –f

الأمر السابق يجب أنّ يَعرض اسم المجال المؤهل بالكامل الخاصّ بالخادوم أي “foreman.nyc2.example.com”، وفي حال عرض اسم فقط أي “foreman” فيجب إجراء التعديلات التالية:

  • تحرير الملف hosts ليُشير السجل 127.0.0.1 إلى اسم المجال الكامل.

سيتمّ استخدام المُحرر Vi:

sudo vi /etc/hosts

السجل سيكون بالشكل التّالي:

127.0.1.1       foreman

ليُعدّل ويصبح بالشكل التّالي:

127.0.1.1       foreman.nyc2.example.com foreman
  • تحرير الملف hostname

سيتمّ تحرير المَلفّ الخاصّ باسم الخادوم:

sudo vi /etc/hostname

يجب التأكد من أنّ الاسم هو اسم المجال الكامل:
 

“foreman.nyc2.example.com”

ولتطبيق التعديلات بشكل مُباشر وآني يُمكن تنفيذ الأمر التّالي:

sudo hostname --file /etc/hostname

تنصيب الأداة Foreman

سيتمّ استخدم المُنصب الخاصّ بالأداة Foreman، فهو أسهل طريقة لتنصيب هذه الأداة مع المُكونات الخاصّة بها، مع إعدادات افتراضيّة تسمح لنا بالعمل بشكل أسرع مع الأداة، وذلك بتوفير العناصر التّالية:

  • تنصيب الأداة Foreman
  • تنصيب الأداة Puppet
  • خادوم الويب Apache مع SSL والوحدة Passenger

سيتمّ في البداية إضافة مستودع Foreman:

sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add –

تحميل المُنصب:

sudo apt-get update && sudo apt-get install foreman-installer

قبل تشغيل المُنصب يجب التأكد من أنّ الأمر ping $(hostname –f) يُظهر العنوان الحقيقي للخادوم وليس العنوان 127.0.0.1

تشغيل المُنصب:

sudo foreman-installer

الأمر السابق يعرض مُخرجات output كما في التّالي:

Your puppet version does not support progress bar
Preparing installation Done
  Success!
  * Foreman is running at https://foreman.nyc2.example.com
      Default credentials are 'admin: hzdQZPZ97KJ32BKn '
  * Foreman Proxy is running at https://foreman.nyc2.example.com:8443
  * Puppetmaster is running at port 8140
  The full log is at /var/log/foreman-installer/foreman-installer.log

تدلّ السطور السابقة على استكمال تنصيب الأداة بشكل صحيح. كما تعرض بيانات الدخول المُستخدمة مع واجهة الويب.

تفعيل Diffs

يَسمح تفعيل الخيار “diffs” لمُدير النظام باستعراض تغييرات مَلفّ الإعدادات على شكل تقرير ضِمن الأداة Foreman Reports.

ولتفعيل هذه الميزة سيتمّ تحرير المَلفّ puppet.conf:

sudo vi /etc/puppet/puppet.conf

وتغيير قيمة الخيار show_diff إلى true:

    show_diff     = true

إضافة الخادوم Foreman إلى قاعدة البيانات

يَقوم الأمر puppet agent بإضافة الخادوم “foreman” إلى قاعدة البيانات الخاصّة بالأداة Foreman، وبذلك يكون الخادوم “foreman” أول عميلٍ خاصّ بالأداة Foreman، وتتمّ إدارته من قبلها.

sudo puppet agent –test

تسجيل الدخول باستخدام واجهة الويب

يجب في بداية الأمر الدخول وتغير كلمة المرور الخاصّة بحساب المُدير admin، حيثُ يُمكن الوصول لواجهة الويب عن طريق الشبكة العامّة public network الخاصّة بالخادوم الافتراضيّ الخاصّ VPS، إما عن طريق اسم المجال المؤهل بالكامل أو عنوان الـIP public network.

يَستخدم Foreman بشكل افتراضيّ شهادات الأداة Puppet، والّتي على الأغلب لن تكون مَوثوقة بالنسبة للمُتصفح. يُمكن تجاهل التحذير الخاص بالمُتصفح في الوقت الحالي، أو يُمكن استبدال الشهادة الحالية بأُخرى تُطابق اسم المجال ومُوقعة من قبل مُفوّض شهادات مَوثوق (trusted CA authority). بغض النظر عن الطريقة المُتبعة في الاستمرار ستكون صفحة تسجيل الدخول على الشكل التّالي:

عند تنصيب الأداة Foreman بالأمر foreman-installer كانت بيانات الدخول الافتراضيّة على الشكل التّالي، والّتي سيتمّ استخدامها لتسجيل الدخول:

  • اسم المُستخدم: admin
  • كلمة المُرور: hzdQZPZ97KJ32BKn

لوحة المعلومات المُختصرة الخاصّة بالأداة Foreman

يُظهر تسجيل الدخول مُباشرةً لوحة التحكم، ويُعرض من خلالها نظرة شاملة على بيئة عمل Puppet، حيثُ يوجد مُلَخَّص يُسمى “حالة إعدادات المُضيف” (Host Configuration Status)، والذي يَعرض عدد نقاط العُملاء (Puppetagent nodes) وحالة كلٍ منها. يُظهر المُلَخَّص الحالي خادوم وحيد وذلك في القسم “good host”.

يوجد في الجانب الأسفل من المُلَخَّص السابق مُلَخَّص آخر للأحداث الأخيرة، ورسمٌ بيانيٌ مع عدد العُملاء الّتي قامت بعمل اتصال في الثلاثين دقيقة الأخيرة. تُقدّم هذه المعلومات لمحة عامّة وشاملة عن عمل منظومة Puppet.

كما ستكون لوحة المعلومات على الشكل التّالي عند وجود أي خطأ:

تغيير كلمة مرور حساب المُدير Admin Password

تمّت الإشارة سابقًا إلى ضرورة تغيير كلمة مُرور حساب المُدير admin ولعمل ذلك يجب التوجّه إلى “Admin User” في الزاوية العلوية من جهة اليمين والنقر على “My account”:

ومنها إلى النماذج واختيار الكلمة المناسبة.

إضافة خدمة مُزامنة الوقت NTP إلى Foreman

تتطلّب Puppet الحفاظ على دقةٍ وانسجامٍ في الوقت بين الخواديم، ولهذا سوف يُستخدم Foreman لإدارة خدمة NTP على المُضيف “foreman” والذي هو بنفس الوقت Puppet master.

يُمكن التوجّه إلى https://forge.puppetlabs.com والبحث عن الوحدة NTP لمعرفة المزيد عنها وماتُقدمه، والّتي ستكون بالاسم puppetlabs/ntp.

سيتمّ تنصيب الأداة NTP البيئة “production” الخاصّة بالأداة Puppet master وذلك عبر الأمر التّالي:

sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp

من المُفترض عرض مخرجات كما في التّالي والتي تدل على تنصيب الوحدة module بشكل صحيح:

Notice: Preparing to install into /etc/puppet/environments/production/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/environments/production/modules
└─┬ puppetlabs-ntp (v3.1.2)
  └── puppetlabs-stdlib (v4.3.2)

قد تمّ تنصيب الوحدة على Puppet master، ولكن يجب إضافتها إلى الأداة Foreman قبل أنّ يُصبح بالإمكان استخدامها.

في واجهة الويب الخاصّة بالأداة Foreman، ومن القائمة “configure” والاختيار “puppet classes”:

سيتمّ النقر على الزر “Import from foreman.nyc2.example.com”:

ومن ثمّ اختيار بيئة العمل “production”، ثُمّ الضغط على الزر “update”، وبذلك تكون الوحدة ntp مُستوردة imported داخل الأداة Foreman، وجاهزة للاستخدام.

الاستغناء عن الإعدادات الافتراضيّة للأداة NTP

من الجيّد اختيار إعدادات مُخصّصة بدلًا من الافتراضيّة للأداة NTP لتوافق الموقع الجغرافي للخواديم الخاصّة بنا، ويُمكن الرجوع إلى صفحة المشروع لاختيار الخيار الأنسب.

في الصفحة السابقة وهي “Puppet Classes”، وبعد الضغط على الصنف “ntp”، سيتمّ الانتقال إلى وضع التحرير، ومنه إلى التبويب “Smart Class Parameter”

وبعد التدرّج بالصفحة إلى الأسفل يوجد اختيار بالاسم “servers” في الشريط الجانبيّ

بعد اختيار “servers”، سيتمّ اختيار “Override”، وذلك لكتابة الإعدادات المُخصّصة. بعد ذلك سيتمّ اختيار نوع المُعامل ليكون على شكل مصفوفة array، وبعد ذلك سيتمّ تغيير القيمة الافتراضيّة إلى القيم المُخصّصة، وذلك على شكل مصفوفة.

 

["0.us.pool.ntp.org","1.us.pool.ntp.org","2.us.pool.ntp.org","3.us.pool.ntp.org"]

أصبح من المُمكن تطبيق الإعدادات وذلك بالضغط على “Submit”. بعد تطبيق الإعدادات المُخصّصة فإن أي عميل يستخدم هذه الوحدة ستكون هذه الإعدادات المُخصّصة هي الافتراضيّة الخاصّة به.

إعداد Foreman ليستخدم الوحدة NTP

أصبح الآن من المُمكن استخدام الوحدة NTP في إدارة الأداة NTP على المُضيف Foreman.

من القائمة “Hosts”، ومن ثمّ الاختيار “ALL Hosts”، ومن ثمّ زر التحرير “Edit” على الجانب الأيمن.

 

من التبويب “puppet classes”، ومن القسم الخاصّ بالأصناف المُتاحة، سيتمّ الضغط على الصنف “ntp” لتوسيعه، بعد ذلك سيتمّ الضغط على إشارة الزائد (+) الّتي بجانب الخيار “ntp”.

سينتقل الصنف “ntp” بعد الضغط على إشارة الزائد إلى القسم الخاصّ بالأصناف المُدرجة. بذلك ستُطبّق هذه الوحدة على العُملاء عند اتصالها مع الخادوم المَركزيّ، ولتطبيق الإعدادات سيتمّ الضغط على “submit”.

استعراض إعدادات Puppet

بعد الانتهاء من إعداد المُضيف السابق والضغط على زر “الإرسال”، سيتمّ الانتقال التلقائي إلى صفحة مُلخّص المُضيف.

ولرؤية المعلومات الّتي تمّ تطبيقها على العميل عند الاتصال بالخادوم المَركزيّ، يُمكن الضغط على زر “YAML”.

لتُعرض المعلومات على الشكل التّالي:

---
classes:
  ntp:
    server_list:
    - 0.us.pool.ntp.org
    - 1.us.pool.ntp.org
    - 2.us.pool.ntp.org
    - 3.us.pool.ntp.org
parameters:
  puppetmaster: foreman.nyc2.example.com
  root_pw: 
  foreman_env: production
  owner_name: Admin User
  owner_email: root@nyc2.example.com
environment: production

تشغيل عميل Puppet

سيتمّ تطبيق التغييرات السابقة الآن، ودون الحاجة للانتظار للاتصال التّالي، ولذلك سيتمّ تشغيل نسخة العميل من الأداة Puppet على الخادوم Foreman.

sudo puppet agent –test

بهذا يكون قد تمّ استخدام الأداة Foreman لإعداد الخادوم “foreman”، وإنّ إعداد بقية خواديم العُملاء هو مُشابه تمامًا لما تمّ عمله مع الخادوم “foreman”.

إضافة عُملاء جُدد إلى Foreman

الآن بعد أنّ انتهى إعداد الخادوم Foreman، أصبح بالإمكان إضافة المزيد من hosts لتصبح مُدارة من قبل الأداة Foreman، وطريقة الإضافة هي نفس طريقة إضافة نقاط عُملاء Puppet إلى الخادوم المَركزيّ. يتوفّر المزيد من التفاصيل في [الجزء الأول](رابط الجزء الأول) من هذه السلسلة. مع الانتباه إلى ربط العُملاء مع الخادوم المَركزيّ للأداة Puppet (وهو الخادوم Foreman في نفس الوقت).

يجب توقيع الشهادة الخاصّة بكل عميل على الخادوم Foreman، ويتمّ ذلك عبر سطر الأوامر، كما تمّ الأمر مع إعداد Puppet، أو من المُمكن استخدام واجهة الويب الخاصّة بالأداة Foreman.

يُمكن استخدام واجهة الويب لتوقيع الشهادات من الصفحة “smart proxy” والاختيار “Certificates”.

أو بالإمكان حذف شهادة عميل حاليّة:

الخاتمة

الآن وبعد أنّ تمّ بناء خادوم Foreman، أصبح من المُمكن استخدام الوحدات الخاصّة بالأداة Puppet على مستوى مُتقدم من الفعاليّة لإدارة الخواديم على مستويات متعددة وفي كامل البِنيَة التَّحتيَّة، ومن المُستحسن الآن استعراض المزيد من الوحدات المُتوفّرة على مُجتمع Puppet، أو حتّى كتابة وحدة جديدة مخصّصة لُتلبي احتياجات مُعيّنة.

ترجمة -وبتصرّف- للمقال How To Use Foreman To Manage Puppet Nodes on Ubuntu 14.04 لصاحبه Mitchell Anicas


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

أفضل التعليقات

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



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...