در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
پاپت دو نسخه سازمانی و منبعباز دارد. زبان قدرتمند پیکربندی شیءگرای آن از وراثت و استفاده مجدد، از کد پشتیبانی میکند. پاپت همچنین میتواند با انواع گستردهای از سیستمهای عامل کار کند: لینوکس، 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، بسیار جزئی و گویاست. هر گزارشی با نام فایل مانیفست آغاز میشود. تغییرات مانیفستها در این محل قرار گرفته و بعد عملیات انجام شده در ادامه آورده میشود.
محمدرضا قربانی
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم
گزارش «جامجم» درباره دستاوردهای زبان فارسی در گفتوگو با برخی از چهرههای ادب معاصر
معاون وزیر بهداشت: