Установка и настройка puppet на CentOS

Как установить и настроить Puppet на CentOS

В качестве примера используется Linux CentOS 7.

Что такое CentOS?

Подготовка сервера

Заходим в систему под суперпользователем:

$ sudo su

Обновляем список пакетов:

# yum update -y

Устанавливаем ntp для возможности синхронизировать время:

# yum install ntp -y

Устанавливаем часовой пояс (у меня московское время) и синхронизируем его с сервером времени:

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate ru.pool.ntp.org

Создаем задание в cron для автоматической синхронизации времени каждый день в 00:00:

# mkdir -p /var/cron/tabs && echo ‘0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org ‘ >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab && crontab -l

Задаем сетевой интерфейс для доверенной зоны брандмауэра:

# firewall-cmd —zone=trusted —change-interface=ens32

* ens32 — имя сетевого интерфейса (список доступен командой ip addr ).

Устанавливаем доверенную зону брандмауэра по умолчанию:

# firewall-cmd —set-default-zone=trusted

Puppet чувствителен к именам узлов, поэтому задаем имена сервера и тестового клиента в файле hosts:

# vi /etc/hosts

192.168.166.155 puppet-srv.remontka.local

192.168.166.156 puppet-cl.remontka.local

Также зададим имя нашего сервера:

# vi /etc/hostname

puppet-srv.remontka.local

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

Подключаем репозиторий:

# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

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

# yum install -y puppet-server

Разрешаем автозапуск puppet-сервера:

# systemctl enable puppetmaster.service

По умолчанию, puppet настроен для оптимальной работы. Единственное, что мы сделаем, включим автоматическое подтверждение сертификатов от клиентов:

# vi /etc/puppet/puppet.conf

[main]

autosign = true

Конфигурационные файлы правил в puppet называются манифестами. Удобнее делить правила по различным файлам. Для этого отредактируем основной манифест-файл:

# vi /etc/puppet/manifests/site.pp

import ‘nodes/*.pp’

* Данная строчка означает, что мы будем подгружать все файлы с расширением .pp из каталога /etc/puppet/manifests/nodes

Создаем каталог nodes:

# mkdir /etc/puppet/manifests/nodes

В качестве теста, создадим первое правило:

# vi /etc/puppet/manifests/nodes/files.pp

file { «/tmp/hello-file»:

replace => «no»,

owner => «root»,

group => «wheel»,

ensure => «present»,

content => «From Puppetn»,

mode => 644,

}

* Правило создаст файл hello-file, если его нет, в каталоге /tmp. Задаст ему владельца root и группу-владельца wheel. Добавит в него текст «From Puppet» и задаст права 644.

Запускаем службу puppet:

# systemctl start puppetmaster.service

Установка агентов

CentOS 7

Заходим в систему под суперпользователем:

$ sudo su

Обновляем список пакетов:

# yum update -y

Устанавливаем ntp для возможности синхронизировать время:

# yum install ntp -y

Устанавливаем часовой пояс (у меня московское время) и синхронизируем его с сервером времени:

# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate ru.pool.ntp.org

Задаем имя сервера puppet в файле hosts:

# vi /etc/hosts

192.168.166.155 puppet-srv.remontka.local

Также зададим имя клиента:

# vi /etc/hostname

puppet-cl.remontka.local

Подключаем репозиторий:

# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

Устанавливаем puppet:

# yum install -y puppet

Редактируем конфигурационный файл puppet:

# vi /etc/puppet/puppet.conf

[agent]

server=puppet-srv.remontka.local

certname=puppet-cl.remontka.local

Запускаем puppet:

# systemctl start puppet.service

Проверяем подключение клиента к серверу:

# puppet agent —server=puppet-srv.remontka.local —test —debug

Если вы все правильно настроили, результатом выполнения данной команды будет создание файла /tmp/hello-file

Удаление сертификатов

Иногда необходимо удалить сертификат. Для этого сначала выполняем команду на сервере:

# puppet cert clean puppet-cl.remontka.local

Затем на клиенте:

# rm -rf /var/lib/puppet/ssl/*

Примеры манифестов

Задает права и владельца для файла /etc/passwd:

file { «/etc/passwd»:

owner => «root»,

group => «wheel»,

mode => 664,

}

Устанавливает последнюю версию пакета samba:

package { «samba»:

ensure => latest

}
EnglishRussianUkrainian