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

ملفّات البيان (Manifests) والوحدات (Modules) في Puppet


Mohamad Ibrahim3

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

مُقدمة

بعد إتمام إعداد منظومة Puppet الّتي تعتمد على مفهوم الخادم المَركزيّ والعُملاء، أصبح من المُلائم الآن التطرّق إلى آليّة كتابة الوحدات modules ومَلفّات البيان manifests، ولكي تُستخدام الأدة Puppet بالشكل الأمثل، يجب فهم بنية أوتركيبة هذا النوع من الملفات. سوف يتناول هذا الشرح أساسيات الشيفرة الخاصّة بالأداة Puppet، وكيفيّة بناء مَلفّات البيان والوحدات التي تساعد على فهم المبادئ الأساسية في استخدام Puppet لإدارة الخوادم، وذلك عن طريق شرح ثلاث طرق لاستخدام هذه الأداة في إعداد حِزم LAMP على خادم Ubuntu 14.04 يعمل على "خادم افتراضيّ خاصّ" VPS.

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

قبل الشروع في تطبيق مُحتويات هذا الشرح من الضروريّ توفّر بيئة عمل تستخدم نظام العُملاء والخادم المَركزيّ باستخدام الأداة Puppet، ويمكن الرجوع إلى الجزء الأول من هذا الشرح لمزيد من التفاصيل عن كيفية تنصيب Puppet لإدارة البنية التحتية للخوادم ، كما أنّه يجب توفّر خادم جديد ليكون نقطة عميل (Puppet agent node) للخادم المَركزيّ Puppet master.

إنشاء نقطة عميل جديدة

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

أساسيات كتابة شيفرة Puppet

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

المَوارد

تتكوّن شيفرة الأداة Puppet بشكلٍ أساسيّ من تصريحات المَورِد resource declarations، والّتي تَصف حالةً مُعينة من النظام، مثل اسم مُستخدم مُعين أو وجوب وجود مَلفٍّ مُعين، أو حتّى وجوب توفّر أحد الحزم على الخادم. في الشيفرة التّالية مثالٌ على تصريح مَورِد لاسم مُستخدم مُعيّن:

user { 'samir':
  ensure     => present,
  uid        => '1000',
  gid        => '1000',
  shell      => '/bin/bash',
  home       => '/home/samir'
}
تَكون بنية تصريح المَورِد على الشكل التّالي:
resource_type { 'resource_name'
  attribute => value
  ...
}

نوع المَورِد { 'اسم المَورِد'
  الخاصيّة => القيمة
  ...
}
يصف تصريح المَورِد السابق مَورِدًا مُعينًا وهو اسم المُستخدم "samir" والخواصّ الخاصّة به. يتمّ استعراض أنواع المَوارِد الافتراضيّة المُتاحة للأداة Puppet، بتنفيذ الأمر التّالي:
puppet resource --types

مَلفّات البيان Manifests

تُدعى التعليمات الخاصّة بالأداة Puppet بمَلفّات البيان manifests، والّتي تحتوي على شيفرة Puppet، وهذه الملفات تستخدم اللاحقة .pp. يوجد مَلفّ البيان الافتراضيّ في المسار /etc/puppet/manifests/site.pp.

في الجزء الأول من هذا الشرح تمّ كتابة مَلفّ بيانٍ كانت مُهمته إنشاء مَلفّ وتنصيب خادم الويب Apache، سوف يتمّ كتابة المزيد من هذا النوع من المَلفّات في هذا الجزء.

الأصناف Classes

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

كيفيّة تعريف الصنف

يجعل تعريف الصنف من الصنف مُستخدمًا في أجزاءٍ مُختلفة من مَلفّات البيان manifests، ولكن في نفس الوقت هذه الأصناف لا تُفسر. يوضح المثال التّالي كيفيّة كتابة وتعريف الصنف في Puppet.

class example_class {
  ...
  code
  ...
}
تُعرّفُ السطورُ السابقة صنفًا بالاسم “example_class”، وتتوضع الشيفرة الخاصّة بالأدة Puppet بين الحاصِرتين “{}”

التصريح عن الأصناف

لا يتمّ التصريح عن الصنف إلا عندما يتمّ استدعاؤه في مَلفّ البيان manifest، حيثُ أنّ هذا التصريح يخبر الأداة Puppet أنّ تقوم بتفسير evaluate الشيفرة المُتوضعة داخل هذا الصنف، ويُمكن التصريح عن الأصناف بطريقتين مختلفتين: طريقةٌ عادية normal، وطريقةٌ تشبه طريقة التصريح عن المَورِد resource-like.

تَكون طريقة التصريح العادية باستخدام الكلمة المفتاحيّة include ضمّن شيفرة الأداة Puppet، كما في المثال التّالي:

include example_class

ستقوم الأداة Puppet بتفسير الشيفرة الموجودة داخل الصنف “example_class” بعد التصريح السابق.

يحدث النوع الثّاني من التصريح عندما يتمّ التصريح عن الصنف كما هو الحال عند التصريح عن مَورِد، و كما في المثال التّالي:

class { 'example_class': }

يسمح استخدام النوع الثّاني من التصريح resource-like بتحديد مُعاملات parameters، والتي تقوم بتجاهل وتجاوز القيم الافتراضيّة لخواصّ الصنف class attributes. في حال الرجوع إلى الجزء الأول من هذا الشرح فسيتضح أنّه بالفعل قد تمّ استخدام هذا النوع من التصاريح عندما تمّ استخدام الوحدة المُقدمة من معامل Puppet لتنصيب خادم الويب Apache على الخادم “host2”.

node 'host2' {
  class { 'apache': }             # use apache module
  apache::vhost { 'example.com':  # define vhost resource
    port    => '80',
    docroot => '/var/www/html'
  }
}
والآن بعد أنّ تمّ شرح المَوارِد ومَلفّات البيان والأصناف، سيتمّ تناول الوحدات modules بمزيد من التفصيل.

الوحدات Modules

تتألّف الوحدات من مجموعة من مَلفّات البيان manifests ومجموعة من المُعطيات (مثل الحقائق facts ومَلفّات files، ونماذج templates)، ولهذه المجموعة تنظيم مساري مُحدد. تُساعد الوحدات على تنظيم شيفرة الأداة Puppet، حيثُ أنّها تُقدم المُرونة في تقسيم الشيفرة البرمجية المتمثّلة بمَلفّات البيان إلى أجزاءٍ مُستقلة، ويُعتبر ذلك طريقةً فعّالةً وعمليّة في استخدام الوحدات لتنظيم معظم مَلفّات البيان manifests الخاصّة بالأداة Puppet.

تُوضع الوحدات modules الخاصّة بالأداة Puppet في المسار /etc/puppet/modules.

سيتمّ التطرّق إلى التفاصيل اللازمة لكتابة وحدة مُبسّطة basic module، ولمزيد من التفاصيل يُمكن الرجوع إلى التوثيق الرّسميّ والجزء الخاص بأساسيات الوحدة في Puppet.

تطوير مَلفّ البيان

لشرح كيفيّة كتابة ملفّات البيان الخاصّة، والأصناف والوحدات، سوف يتمّ استخدام Puppet لإعداد وتنصيب حِزم LAMP على نظام التشغيل أوبونتو (بشكل مُشابه إلى هذا الشرح)، ومن الجيّد قراءة هذا الشرح لمعرفة كيفيّة تنصيب وإعداد هذه الحِزم بشكلٍ يدويّ قبل استخدام Puppet في ذلك.

الهدف النهائي الذي يصبو إليه هذا الشرح هو خادم أوبونتو مع العناصر التّالية:

  • تنصيب حزمة خادم الويب Apache
  • تشغيل خدمة خادم الويب Apache
  • تنصيب حزمة خادم قواعد البيانات MySQL
  • تشغيل خدمة خادم قواعد البيانات MySQL
  • تنصيب حزمة PHP5
  • مَلفّ script لاختبار PHP وهو الملف info.php
  • تحديث "أداة الحزم المتقدمة" apt قبل تنصيب الحِزم السابقة.

فيما يلي ثلاثة أقسام تشرح طُرقًا مُختلفة لاستخدام الأداة Puppet لتحقيق نفس الغاية، وهي خادم يحتوي على الحِزم LAMP ويعمل بشكل مُلائم. سيُوضّح المثال الأول كيفيّة كتابة مَلفّ بيان وحيد وبشكل مُبسّط، أما المثال الثّاني سيوضّح كيفيّة بناء واستخدام الأصناف والوحدات بناءً على مَلفّ البيان المطوّر في المثال الأول، وأخيرًا سيوضّح المثال الثّالث كيفيّة استخدام وحداتٍ مُطوّرة بشكل مُسبق لإعداد حِزم LAMP بشكلٍ سريعٍ وسهل.

المثال الأول: تنصيب حِزم LAMP باستخدام مَلفّ بيان وحيد:

هذا المثال هو مُلائم جدًا لمُدراء الأنظمة الذين لم يكتبوا مَلفّ بيان من قبل، سيُطوَّر مَلفُّ البيان على نقطة عميل Puppet agent node، ويُنفذ باستخدام الأمر puppet apply، ولذلك ليس من الضروريّ توفّر منظومة العُملاء والخادم المَركزيّ لإتمام هذا المثال.

سيتمّ التركيز على كيفيّة كتابة مَلفّ بيان يَستخدم الأنواع التّالية من تصاريح المَورِد resource declarations:

  • exec: لتنفيذ الأوامر مثل الأمر apt-get
  • package: لتنصيب حزمة باستخدام الأداة apt
  • service: لتأكد من عمل خدمة ما
  • file: للتأكد من وجود ملفٍ ما أوعدمه

إنشاء مَلفّ البيان

سيتمّ إنشاء مَلفّ بيان جديد على خادم جديد يحمل الاسم "lamp-1" باستخدام الأمر التّالي:

sudo vi /etc/puppet/manifests/lamp.pp

وبإضافة السطور التالية إلى المَلفّ السابق يكون قد تمّ التصريح عن المَوارِد المطلوبة.

# تحديث أداة الحزم المتقدمة
exec { 'apt-update':                    # exec resource named 'apt-update'
  command => '/usr/bin/apt-get update'  # command this resource will run
}

# تنصيب خادم أباتشي
package { 'apache2':
  require => Exec['apt-update'],        # require 'apt-update' before installing
  ensure => installed,
}

# التأكد من عمل خدمة أباتشي
service { 'apache2':
  ensure => running,
}

# تنصيب خادم قاعدة البيانات
package { 'mysql-server':
  require => Exec['apt-update'],        # require 'apt-update' before installing
  ensure => installed,
}

# التأكد من عمل خادم قاعدة البيانات
service { 'mysql':
  ensure => running,
}

# تنصيب لغة بي إتش بي
package { 'php5':
  require => Exec['apt-update'],        # require 'apt-update' before installing
  ensure => installed,
}

# التأكد من وجود مَلفّ
file { '/var/www/html/info.php':
  ensure => file,
  content => '<?php  phpinfo(); ?>',    # phpinfo code
  require => Package['apache2'],        # require 'apache2' package before creating
}

أصبح من المُمكن الآن استخدام الأمر puppet apply، الذي يُعتبر من نوع standalone، فهو يختلف عن الأمر puppet agent الذي يستدعي مَلفّ البيان من الخادم المَركزيّ. لتنفيذ مَلفّ البيان وهو ما سوف يتمّ عمله على الخادم "lamp-1" سيتمّ تنفيذ الأمر التّالي:

sudo puppet apply --test

سوف يتمّ عرض سطور عدّة كمخرجات output، يَظهر من خلالها حالة الخادم والتغييرات الّتي تمّت عليه، وذلك بشكل مُتوافق مع ما تمّ التصريح به من مَوارِد في مَلفّ البيان manifest. في حال عدم وجود أخطاء،أو مشاكل في عملية الإعداد، فيُفترض عند استعراض الصفحة info.php عرض معلومات تُشير إلى عمل خادم الويب Apache ولغة PHP كما هو مطلوب.

لم يكن الإعداد السابق إلّا إعدادًا بسيطًا لما يُمكن عمله بالأداة Puppet، وذلك أنّه لم يتمّ استخدام منظومة الخادم المَركزيّ والعُملاء (agent/master setup)، أيضًا لا يتوفّر مَلفّ البيان السابق لبقية العُملاء لاستخدامه مرّةً أُخرى، كما لاتقوم الأداة Puppet بالتَفحّصِ بشكل دوريٍّ (كلّ 30 دقيقة) من حالة خوادمها في حال أنّها مُتوافقة مع ما هو مُعدّ لها في مَلفّ البيان.

في المثال الثّاني، سوف يتمّ تحويل مَلفّ البيان السابق إلى وحدة module، وبذلك يُصبح من المُمكن استخدامه مع بقيّة العُملاء.

المثال الثّاني: تنصيب حِزم LAMP باستخدام الوحدات modules

سيتمّ إنشاء وحدة مُبسّطة اعتمادًا على مَلفّ بيان حِزم LAMP المُطوّر في المثال السابق، وذلك بالاستعانة بالخادم المَركزيّ Puppet master. يتمّ إنشاء وحدة جديدة عبر إنشاء مسار جديد في المسار modules الخاصّ بالأداة Puppet، وهذا المسار يجب أنّ يُطابق اسم الوحدة الجديدة، مُحتويًا بداخله مسارًا بالاسم manifests، وبداخله مَلفّ init.pp. هذا المَلفّ يجب أنّ يحتوي فقط على صنف يُطابق اسم الوحدة.

إنشاء الوحدة Module

لإنشاء وحدة جديدة سيتمّ إنشاء مسار جديد بالاسم lamp، والذي هو اسم الوحدة أيضًا:

cd /etc/puppet/modules
sudo mkdir -p lamp/manifests
ومن ثُمّ إنشاء وتحرير مَلفّ الوحدة init.pp
sudo vi lamp/manifests/init.pp

داخل هذا المَلفّ سيتمّ إنشاء صنف بالاسم “lamp”

class lamp {

}

بعد ذلك سيتمّ نسخ مُحتويات مَلفّ البيان الّذي تمّ إنشاؤه في المثال الأول داخل هذا الصنف، وبذلك يكون قد تمّ تعريف صنف جديد بالاسم “lamp”، ولكن الشيفرة التي يحتويها هذا الصنف لن يتمّ تفسيرها (evaluate) هنا، ولكنها أصبحت جاهزة لكي تُستدعى (أي يُصرح عنها)، وأصبح بالإمكان الوصول إلى هذا الصنف كوحدة module من قبل مَلفّات البيان الأُخرى، وذلك فقط لأنّه يُحقّق قواعد تعريف الوحدة طبقًا للأداة Puppet.

استخدام الوحدات Modules في مَلفّ البيان الرئيسيّ

بعد أنّ تمّ إنشاء مَلفّ وحدة مُبسّط، سيتمّ إعداد مَلفّ البيان الرئيسيّ (main manifest) لاستخدامه في تنصيب حِزم LAMP على الخادم “lamp-1”.

على الخادم الرئيسيّ للأداة Puppet والذي يحمل الاسم “puppet” سيتمّ تحرير مَلفّ البيان الرئيسيّ:

sudo vi /etc/puppet/manifests/site.pp

ومن ثمّ إضافة السطور التّالية، مع الانتباه أنّه في حال وجود إعدادات مُسبقة في هذا المَلفّ من الجزء الأول فلا بأس من خذفها.

node default { }

node 'lamp-1' {

}
تَسمح قطعة نقطة node block بتحديد شيفرة Puppet التي سوف تُطبّق على نقطة عميل مُعين، وتُطبّق النقطة “default” على جميع نقاط العُملاء التي لا تملك قطعة نقطة مُحددة لها، وهي في المثال السابق فارغة ولن يتمّ التعديل عليها. ما يهم من المثال السابق هو قطعة النقطة الّتي تحمل الاسم “lamp-1” والّتي سوف تُطبّق على العميل “lamp-1” فقط.

سيتمّ تضمين الوحدة “lamp” داخل قطعة النقطة “lamp-1”.

  include lamp

ستكون النتيجة النهائيّة للمّلفّ السابق على الشكل التّالي:

de default { } 

node 'lamp-1' {
  include lamp 
}              
بعد الإعداد السابق، ستقوم نسخة العميل من الأداة Puppet الموجودة على الخادم “lamp-1” عند سحب الإعدادات الخاصّة بها من الخادم المَركزيّ، بتفسير مَلفّ البيان الرئيسي وتنفيذ الوحدة “lamp” لإعداد حِزم LAMP، وفي حال الرغبة في التجربة المُباشرة دون انتظار الاتصال التلقائيّ، بالإمكان تنفيذ الأمر التّالي على الخادم “lamp”
sudo puppet agent --test

بعد استكمال كافة الإعدادات من الجيّد التأكد من أنّ الأمور تيسير على مايُرام، وذلك باستعراض الصفحة info.php على خادم “lamp”.

http://lamp_1 _IP/info.php

أو استخدام الأداة cURL من الطرفيّة terminal.

من المُلاحظ أنّه بالإمكان الآن إعادة استخدام الوحدة الخاصّة بالخادم “lamp” الّتي تمّ إنشاؤها بالتصريح عنها في node blocks أُخرى. إنّ استخدام الوحدات هو أفضل طريقة لتهيئة شيفرة Puppet لإعادة استخدامها مرّة أُخرى، كما أنّ استخدام الوحدات يُساعد على تنظيم الشيفرة بأسلوب منطقيّ، الأمر الذي ينعكس على قراءة وفهم الشيفرة الخاصّة بالأدة Puppet.

المثال الثّالث: تنصيب حِزم LAMP باستخدام وحدات مُعدّة مُسبقًا

يوجد مُستودعٌ خاصٌّ بالوحدات مُتوفّر على Puppet Forge، والذي يُسهل من الإعداد عند تطوير البِنْيَة التَّحْتِيَّة. يُمكن تنصيب الوحدات المُعدّة مُسبقًا بشكلٍ سريعٍ عبر الأمر puppet module، ومن ضمن هذه الوحدات المُعدّة مُسبقًا يوجد وحدات خاصّة بتنصيب خادم الويب Apache وخادم قواعد البيانات MySQL. لذلك سوف يتمّ استخدامُ هذه الوحدات الجاهزة في إعداد حِزم LAMP.

تنصيب وحدات Apache وMySQL

سيتمّ تنصيب الوحدة ذات الاسم puppetlabs-apache على الخادم “master” باستخدام الأمر التّالي:

sudo puppet module install puppetlabs-apache

يَعرض الأمر السابق مُخرجات تُشير إلى تنصيب الوحدات بشكل صحيح:

Notice: Preparing to install into /etc/puppetlabs/puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/modules
└─┬ puppetlabs-apache (v1.0.1)
  ├── puppetlabs-concat (v1.0.0) [/etc/puppet/modules]
  └── puppetlabs-stdlib (v3.2.0) [/etc/puppet/modules]
أيضًا الوحدة الخاصّة بخادم قاعدة البيانات puppetlabs-mysql:
sudo puppet module install puppetlabs-mysql

وبهذا تكون الوحدات “apache” و”mysql” جاهزة للاستخدام.

تحرير مَلفّ البيان الرئيسي

أما الآن وبعد أنّ تمّ تحميل هذه الوحدات، سيتمّ تحرير مَلفّ البيان الرئيسي ليستخدم الوحدات الجديدة لتنصيب حِزم LAMP، وذلك بتحرير هذا الملف على الخادم “master”.

sudo vi /etc/puppet/manifests/site.pp

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

node default { }

node 'lamp-1' {

}

سيتمّ التصريح عن صنف باستخدام نمط المَورِد ليستخدم الوحدة الّتي تحمل الاسم “apache”، وذلك داخل النقطة “lamp-1”:

class { 'apache':                # use the "apache" module
    default_vhost => false,        # don't use the default vhost
    default_mods => false,         # don't load default mods
    mpm_module => 'prefork',       # use the "prefork" mpm_module
  }
   include apache::mod::php        # include mod php
   apache::vhost { 'example.com':  # create a vhost called "example.com"
    port    => '80',               # use port 80
    docroot => '/var/www/html',    # set the docroot to the /var/www/html
  }

تقبل الوحدة “apache” مُعاملات parameters، والّتي من شأنها إلغاء الإعدادات الافتراضيّة الخاصّة بها، في السطور السابقة تمّ تمرير بعض الإعدادات البسيطة، حيثُ تمّ تعطيل المُضيف الافتراضيّ، والاستعاضة عنه بمُضيف يستطيع استخدام PHP، لمزيد من التفاصيل، يُمكن مُراجعة الموقع الرسميّ.

استخدام الوحدة الخاصّة بخادم قواعد البيانات MySQL مُشابه لاستخدام الوحدة الخاصّة Apache. لن يتمّ تعقيد الإعداد هنا باعتبار أنّه لن يتمّ استخدام قواعد البيانات في مثالنا بشكلٍ فعليّ. سيتمّ إضافة السطور إلى داخل node block.

 class { 'mysql::server':
    root_password => 'password',
  }

كما في وحدة خادم الويب Apache، من المُمكن تخصيص إعداد وحدة MySQL بتمرير مُعاملات parameters، ولمزيد من التفاصيل يُمكن الرجوع إلى الموقع الرسميّ.

أما الآن فسيتمّ إضافة مَلفّ مَورِد مُهمته التأكد من نسخ المف info.php إلى المكان المُلائم. هذه المرّة سيتمّ استخدام المُعامل “source”، كما هو مُوضح في السطور التّالية.

  file { 'info.php':                                # file resource name
    path => '/var/www/html/info.php',               # destination path
    ensure => file,
    require => Class['apache'],                     # require apache class be used
    source => 'puppet:///modules/apache/info.php',  # specify location of file to be copied
  }

يختلف التصريح السابق نسبيًا عمّا تمّ سابقًا، الاختلاف هو أنّه تمّ استخدام المُعامل “source” بدلًا من المُعامل “content”، حيثُ يخبر المُعامل “Source” الأداة Puppet بأنّ تقوم بنسخ المَلف بدلًا من كتابة محتواه. تُفسّر الأداة Puppet المصدر المُحدد (القيمة) puppet:///modules/apache/info.php إلى /etc/puppet/modules/apache/files/info.php، ولذلك يجب إنشاء مَلفّ المصدر لكي يعمل تصريح المَورِد السابق بشكل صحيح.

يتمّ إنشاء الملف info.php بتنفيذ الأمر التّالي:

sudo sh -c 'echo "<?php  phpinfo(); ?>" > /etc/puppet/modules/apache/files/info.php'
بعد أنّ يقوم العميل “lamp-1” بسحب إعداداته من الخادم المَركزيّ، سيقوم بتفسير evaluate مَلفّ البيان الرئيسيّ وتطبيق الوحدة الّتي تُشكل إعداد حِزم LAMP. لتطبيق الإعدادات الجديدة بشكل مُباشر يُمكن استخدام الأمر التّالي على الخادم “lamp-1”:
sudo puppet agent --test

بعد الانتهاء، ستكون حِزم LAMP مُنصبة، كما في المثال الأول، وللتأكد من عمل خادم الويب Apache وPHP، يُمكن استعراض الصفحة التّالية:

http://lamp_1 _IP/info.php

تَعرض الصفحة السابقة معلومات عن استكمال تنصيب مُفسّر PHP بشكلٍ مُلائم، أيضًا بذلك يكون خادم الويب Apache مُنصبًا بشكل صحيح.

الخاتمة

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

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

في الجزء الثّالث والأخير من هذه السلسلة سيتمّ التعرّف على الأداة Foreman لإدارة العُملاء. 

ترجمة -وبتصرّف- للمقال Getting Started With Puppet Code: Manifests and Modules


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

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

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



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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.


×
×
  • أضف...