Подключаем Epel: http://phpsuxx.blogspot.com/2009/03/centos-rhel.html
Ставим пакет:
yum install -y puppet-server
Итого, сервер puppet имеет следующий набор конфигов:
ls /etc/puppet/
fileserver.conf manifests puppet.conf
Сразу можно оценить поистине ОГРОМНЫЙ набор конфигов:
ls -l /usr/lib/ruby/site_ruby/1.8/puppet/provider
augeas host naginator.rb selmodule
computer ldap.rb nameservice service
confine macauthorization nameservice.rb ssh_authorized_key
confine_collection.rb mailalias package sshkey
confine.rb maillist package.rb user
confiner.rb mcx parsedfile.rb zfs
cron mount port zone
group mount.rb selboolean zpool
Создаем стандартный конфиг (Now we'll create the site.pp manifest which is the master manifest. Puppet will search for a manifest by this name by default. ):
vi /etc/puppet/manifests/site.pp
А теперь сделаем финт ушами - будем ставить sudo посредством puppet. Для этого в выше указанынй файл забиваем следующее:
package {
sudo:
ensure => latest
}
Запускаем сервер (автоматически он в автозапуск не прописывается):
/etc/init.d/puppetmaster start
Добавляем сервер в автозапуск:
chkconfig puppetmaster on
Открываем в фаерволле доступ к Puppet:
iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
Сохраняем настройки фаерволла:
/etc/init.d/iptables save
Кстати, если у Вас очень много машин, то не лишним будет запроксировать Puppet посредством Nginx, как это сделать, описывается здесь. А если хотите использовать Passenger / Mongrel, то прошу сюда: http://docs.puppetlabs.com/guides/scaling.html
Клиент
Подключаем Epel: http://phpsuxx.blogspot.com/2009/03/centos-rhel.html
yum install puppet -y
Либо, если клиентская машина на Debian:
apt-get install puppet -y
Далее в случае Debian необходимо убрать Puppet из автозагрузки:
update-rc.d -f puppet remove
/etc/init.d/puppet stop
Клиент имеет всего-лишь один конфиг-файл:
ls /etc/puppet/
puppet.conf
Открываем конфиг файл:
vi /etc/puppet/puppet.conf
Теперь в блок [puppetd] добавляем следующее (это адрес нашего puppet сервера):
server=puppet.server.ru
Теперь запускаем команду тестирования конфига:
puppetd --verbose --test
warning: peer certificate won't be verified in this SSL session
notice: Did not receive certificate
notice: Set to run 'one time'; exiting with no certificate
Есть еще вариант запуска без демонизации (в обычном случае puppet запускает своего демона, а onetime запрещает ему это делать):
puppetd --verbose --test --onetime
Теперь сертификат клиентской машинки будет отослан на сервер и нам необходимо сходить на сервер и посмотреть, что это произошло успешно:
puppetca --list
client.domain.ru
Теперь нам необходимо его подписать (опять же на сервере):
puppetca --sign client.domain.ru
Signed client.domain.ru
Возвращаемся на клиента:
puppetd --verbose --test
В ответ мы должны получить следующее:
warning: peer certificate won't be verified in this SSL session
notice: Got signed certificate
info: No classes to store
info: Caching catalog at /var/lib/puppet/localconfig.yaml
notice: Starting catalog run
notice: //Package[sudo]/ensure: created
notice: Finished catalog run in 10.89 seconds
Ну вот и все:
sudo был установлен:
rpm -qa | grep sudo
sudo-1.6.9p17-5.el5
Что еще сказать - это мегасупер штука, обеспечивающая ОГРОМНУЮ экономию времени на деплой систем :)
Вопросы
1. Можно ли использовать Puppet клиент на сервере, где установлен Puppet сервер? Да, можно, все будет отлично работать.
Основано на: http://habrahabr.ru/blogs/linux/68532/ а вот и список всех "контроллеров" (для управления различными частями ОС) и их возможностей: http://reductivelabs.com/trac/puppet/wiki/TypeReference#package
No comments :
Post a Comment
Note: only a member of this blog may post a comment.