سه شنبه, ۱ خرداد, ۱۴۰۳ / 21 May, 2024
مجله ویستا

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


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

نرم افزار Puppet قابلیت مدیریت پیکربندی تمام میزبان های تحت شبکه را در اختیار کاربر می گذارد این نرم افزار علاوه بر ساده کردن عملیات تکراری , شرایط و پیکربندی انواع میزبان های وب را یکپارچه و مدیریت می کند در واقع Puppet به عنوان Master عمل می کند و از طریق آن می توان پیکربندی نرم افزاری گره های شبکه را انجام داد

نرم‌افزار Puppet قابلیت مدیریت پیکربندی تمام میزبان‌های تحت شبکه را در اختیار کاربر می‌گذارد. این نرم‌افزار علاوه بر ساده‌کردن عملیات تکراری ، شرایط و پیکربندی انواع میزبان‌های وب را یکپارچه و مدیریت می‌کند. در واقع Puppet به‌عنوان Master عمل می‌کند و از طریق آن می‌توان پیکربندی نرم‌افزاری گره‌های شبکه را انجام داد.

پاپت دو نسخه سازمانی و منبع‌باز دارد. زبان قدرتمند پیکربندی شیء‌گرای آن از وراثت و استفاده مجدد، از کد پشتیبانی می‌کند. پاپت همچنین می‌تواند با انواع گسترده‌ای از سیستم‌های عامل کار کند: لینوکس، FreeBSD، Solaris و حتی ویندوز. بنابراین در محیط‌های ترکیبی سرورها که چند توزیع لینوکسی و حتی چند سیستم عامل وجود دارد،‌گزینه‌ مناسبی است.

پاپت می‌تواند مانیفستی ایجاد کند که پیکربندی دلخواه سیستم‌ها در آن قرار می‌گیرد، سپس نزدیک‌ترین حالت ممکن به آن مانیفست را در سرورها پیاده می‌کند. مثلا اگر بخواهیم بسته httpd را روی یک سرور خاص نصب کنیم، نیازی نیست به پاپت بگوییم دستور yum را در سرور خاصی اجرا کند. در حقیقت، کافی است در فایل پیکربندی پاپت اعلام کنیم که پکیج httpd لازم است و خود پاپت بهترین روش برای نصب آن را در سرور پیدا می‌کند.

● نصب پاپت

بهتر است برای آزمایش پاپت، آن را از طریق مخازن رسمی دریافت کنیم. بسیاری از توزیع‌های لینوکسی تحت پشتیبانی آن قرار دارد.

برای نصب نسخه فعلی پاپت در CentOS ۶ کافی است دستور زیر را اجرا کنیم:

rpm -ivh http://yum.puppetlabs.com/el/۶/products/i۳۸۶/puppetlabs-release-۶-۶.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 ۸۱۴۰ قرار دارد. برای فعال‌کردن آن در CentOS دستور زیر را بنویسید:‌

iptables -I INPUT -p TCP --dport ۸۱۴۰ -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 nodeserver۲

را تایپ کنید. nodeserver۲ نام گرهی است که قرار است درخواست‌هایش از این به بعد معتبر بوده و اتصال به‌صورت خودکار انجام شود.

● مانیفست پاپت

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

وقتی یک گره به سرور وصل می‌شود، کاتالوگ را دریافت کرده و آن را به‌صورت محلی اجرا می‌کند. اجرای کاتالوگ باید در همخوانی با سرور باشد. از این رو گره‌های فرزند به‌طور پیش‌فرض هر ۳۰دقیقه یک بار به سرور متصل می‌شود تا پیکربندی خود را با سرور همخوان کند. فعالیت پاپت از طریق مسیر زیر قابل بررسی است:

/var/log/messages

مانیفست‌ها در دایرکتوری /etc/puppet/manifests قرار می‌گیرند و پسوند آنها pp است. وقتی می‌خواهیم فایلی را با نام something.pp باز کنیم می‌توانیم پسوند آن را نادیده بگیریم.

فایل site.pp مانیفست اصلی است که پاپت آن را به‌طور پیش‌فرض بارگذاری می‌کند. برای شروع با یک مثال ساده، بیایید یک پیکربندی ساده انجام دهیم:‌

node ۰۳۹;server۲۰۳۹; { }

node ۰۳۹;server۳۰۳۹; {

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، بسیار جزئی و گویاست. هر گزارشی با نام فایل مانیفست آغاز می‌شود. تغییرات مانیفست‌ها در این محل قرار گرفته و بعد عملیات انجام شده در ادامه آورده می‌شود.

محمدرضا قربانی