Установка и настройка Puppet.

Дата: 18.05.2015 Автор Admin

Установка и настройка Puppet.

В данной статье мы рассмотрим установку и настройку системы управления конфигурациями Puppet.

Устанавливать Puppet будем на Ubuntu 14.04 LTS.

Создайте DNS запись A для сервера Puppet.
Устанавливаем NTP клиент.

apt-get -y install ntp

Синхронизируем время на сервере Puppet и клиенте.

ntpdate pool.ntp.org

Скачиваем пакет Puppet Labs.

wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

 

Устанавливаем пакет.

dpkg -i puppetlabs-release-trusty.deb

Обновляем кэш пакетов .

apt-get update

Устанавливаем Puppet.

apt-get install puppetmaster-passenger

Фиксируем версию Puppet.

Просматриваем установленную версию.

puppet help | tail -n 1

Далее создаем файл /etc/apt/preferences.d/00-puppet.pref
В файле меняем версию на версию полученную из предыдущей команды (в примере это 3.6)

Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.6*
Pin-Priority: 501

 

Настройка сертификатов .

Удаляем установленные сертификаты.

sudo rm -rf /var/lib/puppet/ssl

Настраиваем конфигурацию Puppet. Для этого открывам файл конфигурации /etc/puppet/puppet.conf и приводим к виду:

[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 можно найти тут

Создаем новый сертификат.

puppet master --verbose --no-daemonize

Просматриваем сертификат.

puppet cert list -all

Запускаем Apache2

service apache2 start

Перейдем к установке Puppet агента на клиентскую машину.
Скачиваем пакет Puppet Labs

wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb

Устанавливаем пакет.

dpkg -i puppetlabs-release-trusty.deb

Обновляем кэш пакетов.

apt-get update

Устанавливаем Puppet agent.

apt-get install puppet

Включим Puppet агент.

Открываем файл — /etc/default/puppet

Изменяем содержимое на это:

START=yes

Блокируем версию Puppet.

Создаем файл /etc/apt/preferences.d/00-puppet.pref

В строке Pin: version указываем версию Puppet.

Перейдем к настройке агента.

Открываем файл /etc/puppet/puppet.conf

И в поле server указываем наш Puppet сервер.

[agent]
server = puppet.nyc2.example.com

 

Запускаем сервис Puppet.

service puppet start

Для тестирования работоспособности выполните команду

puppet agent --test

Теперь перейдем на сервер Puppet и подпишем сертификат агента.

puppet cert sign "ubuntu01.domain.local"

Выполняем puppet agent —test еще раз

Вывод должен быть таким:

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 добавляем следующие строки:

file {'/root/example':
ensure => present,
mode => 0644,
content => "Test 123",
}

 

Теперь откроем клиент и выполним puppet agent —test

Проверяем папку /root

Файл example создался.

Рассмотрим пример создания папки

file { "/etc/site-conf":
ensure => "directory",
}

 

Создание папки с правами

file { "/var/log/admin-app-log":
ensure => "directory",
owner => "root",
group => "wheel",
mode => 750,
}

 

Cron задание

cron { 'update_cron':
ensure => 'present',
command => '/bin/bash /root/update',
user => 'root',
hour => '12',
minute => '00',
weekday => '1',
}

 

Установку deb пакета

package { "tzdata":
provider => dpkg,
ensure => latest,
source => "/home/user/tzdata_2014h-2_all.deb"
}

 

Установка пакета из репозиториев

package { "screen":
ensure => "installed"
}

 

Установка нескольких пакетов

package { "screen": ensure => "installed" }
package { "strace": ensure => "installed" }
package { "sudo": ensure => "installed" }

 

Удаление пакетов

package { "screen":
ensure => "absent"
}

 

Удаление пакета и конфигурационных файлов

package { "screen":
ensure => "purged"
}

 

Выполнить команду

exec { "refresh_cache":
command => "refresh_cache 8600",
path => "/usr/local/bin/:/bin/",
# path => [ "/usr/local/bin/", "/bin/" ], # alternative syntax
}

 

Запустить сервис

service { "cron":
ensure => "running",
}

 

Запуск конфигурации на конкретных клиентах, где клиентами являются test1 и test2

node 'test1', 'test2' {
file {'/tmp/dns':
ensure => present,
mode => 0644,
content => "TEST01",
}
}

 

На этом все. Удачной установки! =)


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *