|
|
Публикувано в 20.10.2014 г. 9:47:45 ч.
|
|
|

1. Въведение в Puppet
Системните администратори често са заседнали в серия от повтарящи се задачи: ъпгрейд на пакети, управление на конфигурационни файлове, системни услуги, cron задачи, добавяне на нови конфигурации, поправка на бъгове и др. Тези задачи често са повтарящи се и неефективни, а първият отговор при решаването им е автоматизирането им, така че да се появят персонализирани скриптове. Поради сложността на средата, персонализирани скриптове и приложения се разработват многократно и трудно се помещават на няколко платформи, а гъвкавостта и функционалността са трудни за гарантиране, затова се появиха автоматизирани инструменти за управление на конфигурация като Puppet.
В света на отворения код има много инструменти за конфигурация, от които да избирате, а някои от ключовите продукти в тази област са:
Puppet (http://puppet.reductivelabs.com/): Инструмент за управление на конфигурации, написан на Ruby, който използва C/S архитектурата за конфигуриране на клиента в декларативен език. Cfengine (http://www.cfengine.org): Един от първите инструменти за конфигурация с отворен код, пуснат през 1993 г., също така е C/S архитектура, обикновено използвана в образователни институции. LCFG(http://www.lcfg.org/): Инструмент за управление на конфигурации за C/S архитектури, който използва XML за дефиниране на конфигурации. Bcfg2: Инструмент за управление на конфигурация за C/S архитектура, написан на Python, който използва спецификации и отговори на клиента за конфигуриране на целевия хост.
Този документ е посветен на описанието как да използвате Puppet за управление на вашия хост, приложения, фонови програми и различни услуги.
За Puppet:
1. За какво се използва Puppet?
Puppet е инструмент за управление на конфигурация на системи с отворен код, базиран на Ruby, който разчита на C/S архитектурата за внедряване. Основният разработчик е Luke Kanies, който следва лиценза за авторски права на GPLv2. От 1997 г. Кейнис участва в администрирането на UNIX системи, а развитието на Puppet произлиза от този опит. Недоволен от наличните инструменти за конфигурация, Кейнис започва да разработва инструменти в редуктивната лаборатория между 2001 и 2005 г. Скоро Reductive Labs пуснаха своя водещ продукт – Puppet.
2. Характеристики на Pupput
Много инструменти за управление на конфигурацията на системата работят много подобно, като cfengine. Какво прави Puppet уникален?
Синтаксисът на Puppet ви позволява да създадете отделен скрипт, който да изгражда потребител на всички целеви хостове. Всички целеви хостове ще интерпретират и изпълняват модула поотделно, използвайки синтаксиса, приложим към локалната система. Например, ако тази конфигурация се изпълнява на Red Hat сървър, създайте потребител с командата useradd; Ако тази конфигурация се изпълнява на FreeBSD хост, се използва командата adduser.
Друг забележителен аспект на Puppet е неговата гъвкавост. Поради естеството на софтуера с отворен код, можете свободно да получите изходния код на Puppet, а ако срещнете проблеми и имате възможност, можете да модифицирате или подобрите кода на Puppet, за да отговаря на вашата среда. Освен това, разработчиците и дарителите на общността продължават да подобряват възможностите на Puppet. Голяма общност от разработчици и потребители също е ангажирана с предоставянето на документация и техническа поддръжка за Puppet.
Puppet също е лесен за мащабиране. Поддръжка на персонализирани пакети и специални конфигурации на системна среда могат да бъдат добавени бързо и лесно към инсталатора на Puppet.
3. Работен режим на куклата
Puppet е инструмент за управление на конфигурация в C/S архитектура, който инсталира пакета за кукли-сървър (известен като Puppet master) на централен сървър. Инсталирайте Puppet клиентския софтуер (наречен Puppet Client) на целевия хост, който трябва да се управлява. Когато клиентът се свърже с Puppet master, конфигурационният файл, дефиниран на Puppet master, се компилира и след това се изпълнява на клиента. По подразбиране всеки клиент комуникира със сървъра на всеки половин час, за да потвърди актуализацията на конфигурационната информация. Ако има нова конфигурационна информация или е променена, конфигурацията ще бъде прекомпилирана и публикувана на всеки клиент за изпълнение. Можете също активно да задействате актуализация на конфигурационната информация на сървъра, за да принудите всеки клиент да я конфигурира. Ако конфигурационната информация на клиента бъде променена, той може да получи оригиналната конфигурация от сървъра, за да я коригира.
Управление на конфигурацията: Инсталиране и използване на кукли (1)
4. Бъдещето на Puppet
Накрая, Puppet е млад инструмент, който все още е в процес на разработка и развитие. Общността на Puppet расте бързо и много нови идеи постоянно се въвеждат, което подтиква разработване, актуализации и модули, които се представят всеки ден.
2. Конфигурация и инсталация (инсталация на Puppet 2.6.4 CentOS 5.4):
Конфигурирайте хранилището на сървъра за кукли и клиента: обороти - Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm [root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo Добави към: [епел-кукла] Име=кукла Епел baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ активирано=0 gpgcheck=0
Добавете репозитория puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [куклени лаборатории] name=Пакети на Puppet Labs baseurl=http://yum.puppetlabs.com/base/ активирано=0 gpgcheck=0
Инсталация на Puppet Master: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Модифицирайте хостовете и добавете следните два записа: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com кукла 192.168.0.100 puppetclient.leju.com
Конфигуриране на кукли: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster кукла]# vi puppet.conf
[основна] # Директория с куклен дневник. # По подразбиране стойността е '$vardir/log'. logdir = /var/log/puppet
# Където се пазят PID файловете на Puppet. # По подразбиране стойността е '$vardir/run'. Rundir = /var/run/кукла
# Където се съхраняват SSL сертификати. # По подразбиране стойността е '$confdir/ssl'. SSLdir = $vardir/SSL
[агент] # Файлът, в който куклата съхранява списък с класовете # свързана с възстановената конфигурация. Може да се зареди # отделният изпълним файл '''puppet'' с помощта на ''--loadclasses'' # опция. # Стандартната стойност е '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Където puppetd кешира локалната конфигурация. An # разширение, което показва формат на кеша, се добавя автоматично. # По подразбиране стойността е '$confdir/localconfig'. localconfig = $vardir/localconfig Сървър = puppetmaster.leju.com доклад = вярно слушай = вярно
[майстор] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = true доклади = съхранение
[root@puppetmaster puppet]# vi fileserver.conf [файлове] path /etc/puppet/files позволи *
[модули] позволи *
[плъгини] позволи *
[root@puppetmaster кукла]# mkdir /etc/puppet/files
[root@puppetmaster кукла]# CD се проявява/ Създайте site.pp, който е конфигурационният файл за запис на кукла: [root@puppetmaster manifests]# vi site.pp импортиране на "modules.pp" Импортиране на "roles.pp" импортиране на "nodes.pp"
# Общи настройки за стандартни типове Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } File { backup => main }
Създайте modules.pp за импортиране на модули: [root@puppetmaster manifests]# vi modules.pp Импорт "тест"
Създайте roles.pp, за да дефинирате сървърни роли: [root@puppetmaster проявява]# vi roles.pp клас baseclass { Включи теста
}
Създайте nodes.pp, за да конфигурирате сървърните възли: [root@puppetmaster manifests]# vi nodes.pp възел 'basenode' { включване на базов клас
}
Възел 'puppetclient.leju.com' наследява basenode { таг("тест")
}
Възел 'puppetmaster.leju.com' наследява basenode { таг("тест")
}
[root@puppetmaster се проявява]# CD .. [root@puppetmaster puppet]# mkdir модули Създайте тестов модул: [root@puppetmaster модули]# mkdir -p test/manifests/ [root@puppetmaster модули]# mkdir test/files/ [root@puppetmaster модули]# CD тест/файлове/ [root@puppetmaster файлове]# vi test.txt Тестова линия! [root@puppetmaster файлове]# CD .. /се проявява/ Създайте тестов клас, който да достави файл на клиента: [root@puppetmaster се проявява]# vi init.pp Класов тест { file { "/tmp/test.txt": осигури => присъства, група => "корен", собственик => "корен", режим => "0644", източник => "puppet:///test/test.txt" }
}
Изстрелване на Puppet Master: [root@puppetmaster се проявява]# /etc/init.d/puppetmaster start Увери се, че порт 8140 е активен.
Инсталация на куклен клиент: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" инсталирай кукла
Модифицирайте хостовете и добавете следните два записа: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com кукла 192.168.0.100 puppetclient.leju.com
Конфигуриране на куклата: [root@puppetclient ~]# cd /etc/puppet/ [root@puppetclient кукла]# vi puppet.conf [основна] # Директория с куклен дневник. # По подразбиране стойността е '$vardir/log'. logdir = /var/log/puppet
# Където се пазят PID файловете на Puppet. # По подразбиране стойността е '$vardir/run'. Rundir = /var/run/кукла
# Където се съхраняват SSL сертификати. # По подразбиране стойността е '$confdir/ssl'. SSLdir = $vardir/SSL
[агент] # Файлът, в който куклата съхранява списък с класовете # свързана с възстановената конфигурация. Може да се зареди # отделният изпълним файл '''puppet'' с помощта на ''--loadclasses'' # опция. # Стандартната стойност е '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Където puppetd кешира локалната конфигурация. An # разширение, което показва формат на кеша, се добавя автоматично. # По подразбиране стойността е '$confdir/localconfig'. localconfig = $vardir/localconfig
Сървър = puppetmaster.leju.com доклад = вярно слушай = вярно
[root@puppetclient кукла]# vi namespaceauth.conf [Puppetrunner] Позволете puppetmaster.leju.com позволи *.leju.com
[root@puppetclient кукла]# vi auth.conf Добави let * към последния ред ...... Път / Удостоверение на всякакъв позволи *
[root@puppetclient кукла]# CD Екзекутирай куклата: [root@puppetclient ~]# Puppetd --noop --тест --trace --debug Ако Puppet Master не зададе: autosign=true, трябва да се изпълни в Puppet Master: [root@puppetmaster ~]# Сертификат за кукли -L puppetclient.leju.com [root@puppetmaster ~]# Сертификат за кукли -с puppetclient.leju.com Подпишете puppetclient.leju.com така. След това се върнете към клиента, за да изпълните тук: [root@puppetclient ~]# Puppetd --noop --тест --trace --debug Join --noop, конфигурацията няма да се приложи на клиента, основно използван за тестване, за да се провери дали има грешки в разпечатката, и се изпълнява без грешки: [root@puppetclient ~]# Puppetd --тест --trace --debug
Вижте документа: [root@puppetclient ~]# ll /tmp/ общо 8 -rw-r--r-- 1 корен 11 фев 25 22:35 test.txt Документът е издаден.
Възможно е също да се натиснете на Puppet Master: [root@puppetmaster ~]# Puppet Kick -D --хост puppetclient.leju.com Задействане на puppetclient.leju.com Получаване на статут Статусът е успех puppetclient.leju.com завършено с код за изход 0 Завършено Връщането 0 показва, че марионетката на клиента е била успешно задействана.
Настройте куклата да стартира автостарт: chkconfig --ниво 2345 Puppet включен
Модифицирай кукловод, за да използва Пътник Passenger е разширение на Apache 2.x за използване на релси или стойки приложения в Apache. puppetmaster използва WEBrick за предоставяне на файлови услуги по подразбиране; ако имате много куклени клиенти, производителността на файловите услуги на Puppetmaster ще бъде слаба, за да стане Puppetmaster по-устойчив, затова използвайте Apache за предоставяне на файлови услуги.
Инсталация: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Пътнически 2.2.2 RHEL5 работи без проблем. Add foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [Бригадир] name=Репозиториум на Форман baseurl=http://yum.theforeman.org/stable gpgcheck=0 активирано=1 [root@puppetmaster ~]# yum install rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# Passenger-install-apache2-module
Инсталиране на SSL модула Apache: [root@puppetmaster ~]# yum install mod_ssl
За да конфигурирате приложението Puppet rack: mkdir -p /и т.н./puppet/rack/puppetmasterd/ mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/ chown puppet /etc/puppet/rack/puppetmasterd/config.ru
[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 ПътникРубин /usr/bin/ruby ПътникМаксБасейнРазмер 30 Пътнически басейнСвободно време 1500 ПътникМаксИска 1000 PassengerStatThrottleRate 120 RackAutoDetect изключено RailsAutoDetect Off
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Вероятно искаш да настроиш тези настройки ПътникВисокоПроизводителност включен ПътникМаксПулРазмер 12 Пътнически басейнСвободно време 1500 # ПътникМаксИска 1000 PassengerStatThrottleRate 120 RackAutoDetect изключено RailsAutoDetect Off
Слушай 8140
<VirtualHost *:8140> SSLEngine включено SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ВСИЧКИ:! ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Ако Apache се оплаква от невалидни подписи в CRL, можете да опитате да ги изключите # Проверка на CRL чрез коментар към следващия ред, но това не се препоръчва. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient по избор SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Следващите клиентски заглавия позволяват същата конфигурация да работи с Pound. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /и т.н./кукла/rack/puppetmasterd/public/ RackBaseURI / <Директория /и т.н./кукли/стойка/куклен майстор/> Опции нямат AllowOverride None Заповед позволявай, отказвай Позволи от всички </Directory> </VirtualHost>
Модифицирайте конфигурационния файл puppetmaster, за да добавите следните два реда: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [майстор] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Модифицирай /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Добавете следния ред в края: PUPPETMASTER_EXTRA_OPTS="--store за доклади" Ако трябва да докладвате както на foreman, така и на куклово табло, добавете следния ред: PUPPETMASTER_EXTRA_OPTS="--докладва магазин, бригадир, puppet_dashboard"
Спрете услугата на кукловод и започнете услугата с апачите: [root@puppetmaster ~]# /etc/init.d/puppetmaster спри [root@puppetmaster ~]# /etc/init.d/httpd start
Boot не стартира puppetmaster услугата, boot стартира httpd услугата: [root@puppetmaster ~]# chkconfig --ниво 2345 Puppetmaster изключен [root@puppetmaster ~]# chkconfig --level 2345 httpd on
Уверете се, че порт 8140 е активиран: [root@puppetmaster ~]# netstat -tunlp |grep 8140 tcp 0 0 :::8140 :::* СЛУШАЙ 9834/httpd
Тествайте от страна на клиента, за да видите дали логът за грешки е отпечатан: [root@puppetclient ~]# Puppetd --тест --trace --debug |
Предишен:php-fpm.conf Важни параметри са обяснени подробноСледващ:На 25 октомври 2014 г. (събота), в 23:00 ч., беше тествана алармата за противовъздушна отбрана и предотвратяване на бедствия
|