Как установить и настроить 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.dmosk.local

192.168.166.156 puppet-cl.dmosk.local

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

# vi /etc/hostname

puppet-srv.dmosk.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 Puppet\n",

    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.dmosk.local

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

# vi /etc/hostname

puppet-cl.dmosk.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.dmosk.local

    certname=puppet-cl.dmosk.local

    ...

Запускаем puppet:

# systemctl start puppet.service

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

# puppet agent --server=puppet-srv.dmosk.local --test --debug

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

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

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

# puppet cert clean puppet-cl.dmosk.local

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

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

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

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

file { "/etc/passwd":

owner => "root",

group => "wheel",

mode => 664,

}

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

package { "samba":

    ensure => latest

}
# CentOS # Linux # UNIX # Настройки # Серверы # Управление
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет