Установка Puppet на виртуальный выделенный сервер
Linux, VPS | Комментировать запись
Puppet – это кроссплатформенная система управления конфигурациями, которая позволяет автоматизировать оркестровку инфраструктуры и другие рутинные задачи с помощью специальных сценариев – манифестов.
Для разработки манифеста Puppet достаточно базовых навыков работы с кодом. Группы манифестов называются модулями. Вы можете создавать модули для настройки программ, изменения привилегий и т.п.
Примечание: Терминология Puppet подробнее изложена в статье Создание манифестов Puppet.
Данное руководство поможет установить и настроить Puppet.
Puppet реализует централизованное управление с помощью модели клиент-сервер, или агент-мастер. Мастер – это ведущий сервер, который управляет нодами инфраструктуры (или агентами). Больше о компонентах и инфраструктуре Puppet можно узнать в статьях:
Требования
По умолчанию Puppet обнаруживает мастер-сервер по имени хоста puppet через DNS.
Для работы вам понадобится:
- Мастер-сервер Puppet и его IP-адрес.
- Агенты Puppet.
- Установленные имена хостов и FQDN на каждом сервере инфраструктуры.
- NTP-демон на каждом сервере (инструкции по настройке – в этой статье).
- Записи А и CNAME для мастер-сервера (имя хоста – puppet).
Настройка брандмауэра
CentOS использует очень строгую политику iptables. Если вы используете брандмауэр iptables, убедитесь, что мастер поддерживает подключения на порт 3000, 8139 и 8140.
Обновление пакетов
Чтобы обновить пакеты, используйте:
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo reboot
1: Установка мастера Puppet
Установить мастер-сервер Puppet можно несколькими способами:
- Использовать пакет из официального репозитория системы.
- Добавить репозиторий Puppet Labs. Такой вариант лучше, поскольку даёт доступ к более современной версии пакета.
Чтобы добавить репозиторий Puppet Labs, загрузите и установите пакет puppetlabs-release (с этого сайта).
Например, чтобы установить мастер Puppet на сервер Ubuntu 12.04 LTS из репозитория Puppet Labs, нужно запустить:
sudo wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update && sudo apt-get -y install puppetmaster
Примечание: Инструкции по установке Puppet в другие дистрибутивы Linux, OS X, Windows и другие системы можно найти здесь.
2: Настройка мастера Puppet
Выполните команду:
sudo touch /etc/puppet/manifests/site.pp
Puppet предлагает много параметров для настройки поведения системы.
Главный конфигурационный файл Puppet находится в /etc/puppet/puppet.conf. Он содержит разделы [main], [agent] и [master]. Настройки агентов находятся в разделах [agent] и [main], настройки мастера – в [master] и [main].
Примечание: Обычно мастер-сервер работает также и как агент.
3: Настройка DNS
Теперь нужно настроить доменное имя (FQDN) мастера, чтобы он мог подписывать сертификаты агентов.
Если у мастера Puppet не будет псевдонимов (т.е., будет только одно имя хоста) и ранее вы создали А-запись для мастера, введите следующие команды:
sudo service puppetmaster stop
sudo rm -rf /var/lib/puppet/ssl
sudo vim /etc/puppet/puppet.conf
Добавьте следующую строку в раздел [main].
server = puppet.yourdomain.tld
Если вы создали запись CNAME для мастера, тогда нужно выполнить команды:
sudo service puppetmaster stop
sudo rm -rf /var/lib/puppet/ssl
sudo vim /etc/puppet/puppet.conf
И добавить в блок [master] все псевдонимы:
dns_alt_names = puppet, [alias1], [alias2], puppet.yourdomain.tld
Затем запустите мастер:
sudo service puppetmaster start
4: Зависимости мастера Puppet
Теперь нужно установить зависимости на мастер-сервер Puppet:
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove && sudo reboot
5: Установка агентов Puppet
Добавьте репозиторий Puppet Labs и установите программу:
sudo wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update && sudo apt-get -y install puppet
Примечание: Инструкции по установке Puppet в другие дистрибутивы Linux можно найти здесь.
Важно! Puppet является кроссплатформенной системой, а потому мастер и агенты не должны использовать одну и ту же операционную систему.
6: Настройка агента Puppet
Примечание: Эти инструкции нужно выполнить на всех нодах Puppet.
Теперь нужно подключить клиент Puppet к мастеру.
sudo vim /etc/puppet/puppet.conf
Добавьте в этот файл следующее:
[agent]
server = puppet.yourdomain.tld
report = true
pluginsync = true
certname = [hostname of Puppet client].yourdomain.tld
Теперь нужно настроить автозапуск Puppet. Откройте файл:
sudo vim /etc/default/puppet
Найдите строку, которая начинается со слова START. Она должна выглядеть так:
START=yes
Запустите сервис:
sudo service puppet start
7: Настройка взаимодействия мастера и агентов Puppet
Чтобы настроить взаимодействие клиентов и сервера Puppet, нужно подписать SSL-сертификаты клиентов. Перейдите на мастер-сервер и просмотрите список запросов на подпись:
sudo puppet cert --list
Чтобы подписать сертификат, используйте команду:
sudo puppet cert --sign [hostname of Puppet client]
8: Модули и манифесты
Теперь мастер может управлять настройками агентов. Попробуйте использовать модуль для установки MySQL на агенты Puppet. Для этого запустите на мастере следующие команды:
sudo apt-get -y install git
sudo git clone https://github.com/puppetlabs/puppetlabs-mysql mysql
sudo vim /etc/puppet/manifests/site.pp
Скопируйте и вставьте следующий код в site.pp.
node [hostname of Puppet client] {
class { 'mysql': }
class { 'mysql::server':
config_hash => { 'root_password' => '[desired password]' }
}
}
На клиенте нужно запустить команду:
sudo puppet agent --test
После этого клиент перечитает директивы в настройках мастера и установит MySQL.
Tags: NTP, Puppet