Установка и настройка Puppet.
Установка и настройка Puppet.
В данной статье мы рассмотрим установку и настройку системы управления конфигурациями Puppet.
Устанавливать Puppet будем на Ubuntu 14.04 LTS.
Создайте DNS запись A для сервера Puppet.
Устанавливаем NTP клиент.
1 |
apt-get -y install ntp |
Синхронизируем время на сервере Puppet и клиенте.
1 |
ntpdate pool.ntp.org |
Скачиваем пакет Puppet Labs.
1 |
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb |
Устанавливаем пакет.
1 |
dpkg -i puppetlabs-release-trusty.deb |
Обновляем кэш пакетов .
1 |
apt-get update |
Устанавливаем Puppet.
1 |
apt-get install puppetmaster-passenger |
Фиксируем версию Puppet.
Просматриваем установленную версию.
1 |
puppet help | tail -n 1 |
Далее создаем файл /etc/apt/preferences.d/00-puppet.pref
В файле меняем версию на версию полученную из предыдущей команды (в примере это 3.6)
1 2 3 |
Package: puppet puppet-common puppetmaster-passenger Pin: version 3.6* Pin-Priority: 501 |
Настройка сертификатов .
Удаляем установленные сертификаты.
1 |
sudo rm -rf /var/lib/puppet/ssl |
Настраиваем конфигурацию Puppet. Для этого открывам файл конфигурации /etc/puppet/puppet.conf и приводим к виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter certname = puppet dns_alt_names = puppet,puppet.nyc2.example.com [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY |
В данном файле в секции dns_alt_names указываются DNS имена сервера Puppet.
Более подробную документацию по настройке конфигурации Puppet можно найти тут
Создаем новый сертификат.
1 |
puppet master --verbose --no-daemonize |
Просматриваем сертификат.
1 |
puppet cert list -all |
Запускаем Apache2
1 |
service apache2 start |
Перейдем к установке Puppet агента на клиентскую машину.
Скачиваем пакет Puppet Labs
1 |
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb |
Устанавливаем пакет.
1 |
dpkg -i puppetlabs-release-trusty.deb |
Обновляем кэш пакетов.
1 |
apt-get update |
Устанавливаем Puppet agent.
1 |
apt-get install puppet |
Включим Puppet агент.
Открываем файл — /etc/default/puppet
Изменяем содержимое на это:
1 |
START=yes |
Блокируем версию Puppet.
Создаем файл /etc/apt/preferences.d/00-puppet.pref
В строке Pin: version указываем версию Puppet.
Перейдем к настройке агента.
Открываем файл /etc/puppet/puppet.conf
И в поле server указываем наш Puppet сервер.
1 2 |
[agent] server = puppet.nyc2.example.com |
Запускаем сервис Puppet.
1 |
service puppet start |
Для тестирования работоспособности выполните команду
1 |
puppet agent --test |
Теперь перейдем на сервер Puppet и подпишем сертификат агента.
1 |
puppet cert sign "ubuntu01.domain.local" |
Выполняем puppet agent —test еще раз
Вывод должен быть таким:
1 2 3 4 5 |
Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for ubuntu01.domain.local Info: Certificate Request fingerprint (SHA256): 0E:7A:26:D9:45:29:31:7F:88:E0:AF:75:50:4E:B7:DE:C5:1F:A4:99:AE:6B:F8:2E:0E:8A:F9:37:5B:6C:DE:32 Info: Caching certificate for ca |
Теперь рассмотрим примеры управления конфигурациями.
Перейдем на сервер Puppet.
Конфигурации Puppet хранятся в папке /etc/puppet/manifests
Создадим файл манифеста /etc/puppet/manifests/site.pp
Рассмотрим пример создания файла example, в папке /root с содержимым Test 123 с правами 644
В файл /etc/puppet/manifests/site.pp добавляем следующие строки:
1 2 3 4 5 |
file {'/root/example': ensure => present, mode => 0644, content => "Test 123", } |
Теперь откроем клиент и выполним puppet agent —test
Проверяем папку /root
Файл example создался.
Рассмотрим пример создания папки
1 2 3 |
file { "/etc/site-conf": ensure => "directory", } |
Создание папки с правами
1 2 3 4 5 6 |
file { "/var/log/admin-app-log": ensure => "directory", owner => "root", group => "wheel", mode => 750, } |
Cron задание
1 2 3 4 5 6 7 8 |
cron { 'update_cron': ensure => 'present', command => '/bin/bash /root/update', user => 'root', hour => '12', minute => '00', weekday => '1', } |
Установку deb пакета
1 2 3 4 5 |
package { "tzdata": provider => dpkg, ensure => latest, source => "/home/user/tzdata_2014h-2_all.deb" } |
Установка пакета из репозиториев
1 2 3 |
package { "screen": ensure => "installed" } |
Установка нескольких пакетов
1 2 3 |
package { "screen": ensure => "installed" } package { "strace": ensure => "installed" } package { "sudo": ensure => "installed" } |
Удаление пакетов
1 2 3 |
package { "screen": ensure => "absent" } |
Удаление пакета и конфигурационных файлов
1 2 3 |
package { "screen": ensure => "purged" } |
Выполнить команду
1 2 3 4 5 |
exec { "refresh_cache": command => "refresh_cache 8600", path => "/usr/local/bin/:/bin/", # path => [ "/usr/local/bin/", "/bin/" ], # alternative syntax } |
Запустить сервис
1 2 3 |
service { "cron": ensure => "running", } |
Запуск конфигурации на конкретных клиентах, где клиентами являются test1 и test2
1 2 3 4 5 6 7 |
node 'test1', 'test2' { file {'/tmp/dns': ensure => present, mode => 0644, content => "TEST01", } } |
На этом все. Удачной установки! =)
Добавить комментарий