جادوی Puppet – معرفی و نصب

در یکی از پروژه ها مجبور به پیاده سازی یک پلتفورم مبتنی بر لینوکس بر روی حدود ۶۰ سرور شدیم . تغییر یک فایل یا حتی نصب یک  package به معنای ورود به سرورها و اجرای حداقل چندین دستور بود . یک روند تکراری خسته
کننده . اگرچه اکثر این روندها را میشه با اسکریپت ها خودکار کرد ولی یکی از مشکلات به روز رسانی این اسکریپت ها و تغییر مدیران سیستمی بود که این اسکریپت ها را به روش خودشان نوشته بودند . نرم افزار Puppet از شرکت Puppet Labs امکان نصب و مدیریت فایل های پیکربندی را به روش استاندارد فراهم کرد . در این ساختار در مختصرین حالت یک سیستم به عنوان Master و بقیه سیستم ها به عنوان Agent عمل کرده و با تنظیم Manifest های سرور امکان نصب و مدیریت مرکزی پیکربندی ها به صورت خودکار امکان پذیر است .


اگرچه سرور مرکزی که template ها نصب و پیکربندی از ان خواند میشود ( PuppetMaster )  مبتنی بر لینوکس است اما Agent ها میتوانند دیگر سیستم عامل ها از جمله ویندوز یا حتی سیسکو نیز باشند .

Puppet Agents could be windows , linux or even cisco devices

 


برای نصب و راه اندازی اولیه ما حداقل به دو سیستم نیاز داریم که یکی در نقش Master و یکی Agent عمل کند .

Puppet Master

puppetmaster.miniatel.com

Linux – CentOS 6 – x86_64

ip address : 192.168.1.1

Puppet Agent

puppetclient.miniatel.com

Linux – CentOS 6 – x86_64

ip address : 192.168.1.2


۱ – فراموش نکنید selinux را غیر فعال کنید و DNS را تنظیم کنید تا hostname ها در دسترس باشند . برای سادگی کار در این سناریو ما فایل hosts در پوشه etc هر دو سیستم را تنظیم میکنیم .

vim /etc/hosts

۱۹۲٫۱۶۸٫۱٫۱           puppetmaster.miniatel.com

۱۹۲٫۱۶۸٫۱٫۲           puppetclient.miniatel.com


۲ – نصب Puppet Master و اجرای سرویس ان بر روی سیستم puppetmaster.miniatel.com :

PuppetMaster :

rpm -ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm

yum install puppet-server

chkconfig puppetmaster on

service puppet master start

و در فایل etc/sysconfig/puppet/ اسم سرور Puppet Master را که در اینجا puppetmaster.miniatel.com است را مشخص می کنیم :

vim /etc/sysconfig/puppet

PUPPET_SERVER=puppetmaster.miniatel.com


۳ – اجنت Puppet که اسم بسته نرم افزاری ان puppet است را برروی puppetclient.miniatel.com نصب کرده ولی سرویس انرا فعلا اجرا نمی کنیم 

rpm -ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm

yum install puppet

chkconfig puppet on

و ادرس puppetmaster را در دو فایل زیر ویرایش میکنیم .

a . vim /etc/sysconfig/puppet

PUPPET_SERVER=puppetmaster.miniatel.com

b . vim /etc/puppet/puppet.conf

[agent]

server : puppetmaster.miniatel.com

هر Agent برای ارتباط با Puppet Master باید با دستور زیر یک certificate تولید کند که توسط PuppetMasterدر مرحله بعد امضا ( sign )  شود تا امکان برقراری ارتباط فراهم شود . البته قبل از اجرای این دستور باید فایروال هر دو سیستم را تنظیم نمود .

-A INPUT -m state –state NEW -m tcp -p tcp –dport 8140 -j ACCEPT

نام فایل certificate را در فایل etc/puppet/puppet.conf/ و زیر agent مشخص میکنیم .

 certfile = puppetclient.miniatel.com

 و اکنون اجرای دستور :

puppet agent –test

 البته در این مرحله فقط فایل certificate اجرا شده و تا در سرور sign نشود امکان برقراری ارتباط وجود ندارد .


۴ – مشاهده certificate ها در Puppet Master و امضای ان

puppet cert –list  –all

puppet cert sign puppetclient.miniatel.com


۵ – و اکنون میتوانیم به نوشتن یک manifest ساده در puppetmaster.miniatel.com و اعمال ان در puppetclient.miniatel.com کارایی انرا تست کنید .

vim /etc/puppet/manifests/site.pp

node 'puppetclient.miniatel.com' {
        include custom_utils
}

class custom_utils {
        package { ["nmap","telnet","vim-enhanced","traceroute"]:
                ensure => latest,
                allow_virtual => false,
        }
}

برای اجرای این Manifest در  puppetclient.miniatel.com باید ۳۰ دقیقه منتظر بمانید یا اینکه دستور زیر را اجرا کنید :

puppet agent –test

 


pixelstats trackingpixel

۳ نظر

  1. محمد ابراهیم قانع گفت:

    سلام مهندس
    خدا قوت
    خیلی عالیه

  2. alimp5 گفت:

    Tnx Dear
    I heard a lot about it :X

    TTYTT

  3. مجتبی گفت:

    بسم الله الرحمن الرحیم
    ممنون از مطلب خوبتون
    پاپت ارتباطی با داکر هم پیدا می کنه؟

نوشتن دیدگاه