دستورالعملي براي خيمه‌شب بازي

 

نرم‌افزار Puppet قابليت مديريت پيكربندي تمام ميزبان‌هاي تحت شبكه را در اختيار كاربر مي‌گذارد. اين نرم‌افزار علاوه بر ساده‌كردن عمليات تكراري ، شرايط و پيكربندي انواع ميزبان‌هاي وب را يكپارچه و مديريت مي‌كند. در واقع Puppet به‌عنوان Master عمل مي‌كند و از طريق آن مي‌توان پيكربندي نرم‌افزاري گره‌هاي شبكه را انجام داد. پاپت دو نسخه سازماني و منبع‌باز دارد. زبان قدرتمند پيكربندي شيء‌گراي آن از وراثت و استفاده مجدد، از كد پشتيباني مي‌كند. پاپت همچنين مي‌تواند با انواع گسترده‌اي از سيستم‌هاي عامل كار كند: لينوكس، FreeBSD، Solaris و حتي ويندوز. بنابراين در محيط‌هاي تركيبي سرورها كه چند توزيع لينوكسي و حتي چند سيستم عامل وجود دارد،‌گزينه‌ مناسبي است.پاپت مي‌تواند مانيفستي ايجاد كند كه پيكربندي دلخواه سيستم‌ها در آن قرار مي‌گيرد، سپس نزديك‌ترين حالت ممكن به آن مانيفست را در سرورها پياده مي‌كند. مثلا اگر بخواهيم بسته httpd را روي يك سرور خاص نصب كنيم، نيازي نيست به پاپت بگوييم دستور yum را در سرور خاصي اجرا كند. در حقيقت، كافي است در فايل پيكربندي پاپت اعلام كنيم كه پكيج httpd لازم است و خود پاپت بهترين روش براي نصب آن را در سرور پيدا مي‌كند.

نصب پاپت

بهتر است براي آزمايش پاپت، آن را از طريق مخازن رسمي دريافت كنيم. بسياري از توزيع‌هاي لينوكسي تحت پشتيباني آن قرار دارد.براي نصب نسخه فعلي پاپت در CentOS 6 كافي است دستور زير را اجرا كنيم:

rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-6.noarch.rpm

پس از اين كه مخازن پاپت را به توزيع اضافه كرديم با اجراي اين دستور مي‌توان پاپت را در گره‌هاي فرزند نصب كرد:

yum -y install puppet 

براي نصب آن در سرور اصلي نيز بايد از دستور زير استفاده كرد:‌

yum -y install puppet puppet-server 

اين دو دستور، علاوه بر پكيج پاپت، وابسته‌‌هاي آن را نيز نصب مي‌كند كه مي‌توان به زبان برنامه‌نويسي Ruby اشاره كرد (كه پاپت بر آن مبنا نوشته شده است). درك روبي مي‌تواند به طراحي پيكربندي‌هاي پيچيده از طريق الگوهاي ERB كمك كند ، اما روبي لايه زيرين است و نيازي نيست براي كار با پاپت به آن مسلط باشيم.Facter يكي ديگر از پكيج‌هاي وابسته و ابزاري Cross-platform است كه مي‌تواند اطلاعاتي از جمله سيستم عامل ميزبان، توزيع، معماري و رابط‌هاي شبكه آن را استخراج كند. اين اطلاعات كه از Facter به دست مي‌آيد هم از طريق دسترسي محلي و هم در بخش سرور در دسترس خواهد بود. با توجه به اطلاعاتي كه پاپت به‌دست مي‌آورد، حالت پيش‌فرض هر سرور را متوجه مي‌شود.براي اجراي خودكار پاپت در CentOS، بايد دستور زير را در سرورهاي فرزند اجرا كنيم:

Chkconfig puppet on

و در سرور دستور زير را اجرا كنيم:

Chkconfig puppet on

checkconfig puppetmaster on

اگر براي فايروال از iptables استفاده مي‌كنيم، بايد قابليت دسترسي به گره‌هاي فرزند ايجاد كرد تا بتواند سرور مادر را ببينند. سرويس پاپت در پورت TCP 8140 قرار دارد. براي فعال‌كردن آن در CentOS دستور زير را بنويسيد:‌

iptables -I INPUT -p TCP --dport 8140 -j ACCEPT

service iptables save

راه‌اندازي اوليه پاپت

پيش از راه‌اندازي پاپت، بهتر است به پيكربندي آن بپردازيم. نخست بايد مطمئن شويم گره‌هاي فرزند به سرور متصل است. به‌طور پيش‌فرض اين گره‌ها از طريق نام دامنه puppet به دنبال سرور مي‌گردند. مي‌توان FQDN ديگري براي سرور تعريف كرد. براي اين كار بايد فايل /etc/puppet/puppet.conf را در هر گره باز كرد و دستور زير را در بخش مناسب قرار داد:‌

server=somehost.example.org 

البته مي‌توان فايل /etc/hosts هر گره را دستكاري كرد و آي‌پي آدرس puppet‌را برابر با آدرس آي‌پي سرور قرار داد. سند SSL موجود در سرور بايد با FQDN همخواني داشته باشد.اگر نام puppet باقي بماند، كافي است در انتهاي فايل /etc/puppet/puppet.conf، خط certname=puppet‌ را اضافه يا تغيير داد.حالا گره‌ها مي‌توانند سرور را پيدا كنند و يك اتصال معتبر و امن بينشان ايجاد كنند. تنها كافي است سرويس پاپت را يك بار اجرا كنيم. در سيستم سرور، دستور

Puppetmaster start && service puppet start

و در گره‌هاي فرزند دستور

Service puppet start

براي اجراي سرويس‌هاي پاپت به‌كار مي‌روند.

وقتي سرويس پاپت در گره‌ها به اجرا درآيد، تلاش براي اتصال به سرور مادر آغاز مي‌شود، اما خودكار نيست. براي اين كار بايد اتصال بين آن دو مطمئن و مورد اعتماد باشد.

براي نمايش درخواست‌هاي ورود در سرور، دستور

Puppet cert –list

را تايپ كنيد.

براي امضاي تائيد درخواست‌ها، كافي است دستور

Puppet cert –sign nodeserver2

را تايپ كنيد. nodeserver2 نام گرهي است كه قرار است درخواست‌هايش از اين به بعد معتبر بوده و اتصال به‌صورت خودكار انجام شود.

مانيفست پاپت

نام فايل‌هاي پيكربندي پاپت، مانيفست است. اين فايل‌ها شامل دستوراتي مي‌شود كه پاپت مي‌تواند از طريق آنها، نود را به حالت ايده‌آل خود برساند. مانيفست‌ها بعد از كامپايل به كاتالوگ تبديل مي‌شود. روند كامپايل باعث مي‌شود پكيج‌هاي وابسته مشخص و عمليات نصب به ترتيب صحيح چيده شود. براي مثال اگر بخواهيم پكيج httpd را روي سرور نصب كنيم و اين الزام را بگذاريم كه بسته php بايد حضور داشته باشد، پاپت پيش از نصب httpd، ابتدا php‌ را نصب و كاركرد آن را تست مي‌كند و بعد نصب httpd را انجام مي‌دهد.وقتي يك گره به سرور وصل مي‌شود، كاتالوگ را دريافت كرده و آن را به‌صورت محلي اجرا مي‌كند. اجراي كاتالوگ بايد در همخواني با سرور باشد. از اين رو گره‌هاي فرزند به‌طور پيش‌فرض هر 30دقيقه يك بار به سرور متصل مي‌شود تا پيكربندي خود را با سرور همخوان كند. فعاليت پاپت از طريق مسير زير قابل بررسي است:

/var/log/messages

مانيفست‌ها در دايركتوري /etc/puppet/manifests قرار مي‌گيرند و پسوند آنها pp است. وقتي مي‌خواهيم فايلي را با نام something.pp باز کنيم مي‌توانيم پسوند آن را ناديده بگيريم.فايل site.pp مانيفست اصلي است كه پاپت آن را به‌طور پيش‌فرض بارگذاري مي‌كند. براي شروع با يك مثال ساده، بياييد يك پيكربندي ساده انجام دهيم:‌

node 'server2' { }

node 'server3' {

include postfix }

import "postfix"

همان‌طور كه مشخص است، پيكربندي از طريق FQDN انجام مي‌شود و درون آن مي‌توان دستورات را وارد كرد. براي مديريت بهينه فايل پيكربندي بهتر است قطــــــعه‌هاي كوچك كد را در فايل‌هاي مختلف قرار دهيد و از طريق import از آنها استفاده كنيم. اين فايل‌هاي كوچك با نام كلاس‌هاي پاپت شناخته مي‌شود. در مثال بالا، فايل postfix.pp به صورت زير خواهد بود:‌

class postfix {

package { "postfix":

ensure =» installed, }

service { "postfix":

ensure =» running,

enable =» true, }}

در اين فايل به پاپت گفته مي‌شود بسته postfix بايد نصب شود (ensure =» installed)، همچنين بايد راه‌اندازي و فعال‌بودن سرويس آن نيز انجام شود. وقتي تغييراتي را در فايل site.pp انجام مي‌دهيم، پاپت به‌طور خودكار آن را تشخيص داده و گره‌هاي فرزند را وادار مي‌كند تغييرات را انجام دهد. اگر تغييرات در فايل‌هاي ايمپورت شده باشد، بايد زمان ذخيره site.pp را تغيير داد تا پاپت تغييرات را تشخيص داده و دستورات لازم را صادر كند. براي كسب اطلاع بيشتر در مورد فايل‌هاي مانيفست و نحوه پيكربندي آن به نشاني زير برويد:‌

http://docs.puppetlabs.com/learning/manifests.html

گزارش‌گيري

پاپت از سيستم گزارش گيري نيز بهره مي‌برد. بعد از پيكربندي، گره‌هاي فرزند مي‌تواند در مورد تغييرات و عملياتي كه با موفقيت اجرا شده است به سرور گزارش بدهد. براي فعال‌سازي گزارشگيري بايد در گره‌هاي فرزند فايل /etc/puppet/puppet.conf را ويرايش و در بخش [agent] خط جديدي با عنوان report = true ايجاد كنيم. در سرور نيز بايد همين فايل را ويرايش و اين بار در بخش [master] دو خط اضافه كنيم:‌

Reportdir = /etc/puppet/reports

Reports = store

گزارش‌هاي پاپت به فرمت yaml، بسيار جزئي و گوياست. هر گزارشي با نام فايل مانيفست آغاز مي‌شود. تغييرات مانيفست‌ها در اين محل قرار گرفته و بعد عمليات انجام شده در ادامه آورده مي‌شود.





تاريخ : سه شنبه 26 دی 1391برچسب:, | | نویسنده : مقدم |