Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Puppet.Общая картина

Применяя Puppet для управления конфигурациями можно добиться следующего:
• автоматизировать процесс установки сервера
• глобального применения изменений на серверах
• поддержания целостного состояния серверов
Puppet может быть использован для автоматизации процесса установки программного обеспечения и конфигурирования при разворачивании серверов.
Такой инструмент, в частности, полезен, когда приходится устанавливать много серверов с похожей конфигурацией (например, файлы sudo, SSH-службы, веб-серверы и прочее).
Puppet также может быть полезен в ситуациях,когда нужно какой-либо скрипт или программу распространить на группу серверов. После этапа начального распространения, изменения в дальнейшем могут быть взяты с мастер-узла Puppet и применены к группам серверов с минимальными усилиями.
Частью работы системного администратора является проверка состояния сервера, в нужной ли он форме – как пример, SSH-сервис должен всегда спрашивать про публичные ключи, а парольная аутентификация должна быть отключена. Системному администратору придется персонализировать конфигурационные файлы на всех серверах и , при этом для соответствующих сервисов (например, SSH, NTP, named ...) должна быть обеспечена возможность их непрерывной работы, а также рестарта, в случае,если у них меняется конфигурация.
Puppet написан на Ruby и лицензируется под лицензией Apache (начиная с версии 2.7.6, до этого была лицензия GPL). Утилита является форком от cfEngine, еще одного мощного инструмента по управлению конфигурацией. Разобраться с Puppet и начать использовать его достаточно просто вследствие его декларативного языка. Вместо чтения объемных руководств посвященных Puppet, эта статья предлагает вам пройтись по тем простым примерам,как установить серверную и клиентскую части Puppet.
После этого мы разберем типовые сценарии, чтобы понять, как на самом деле работает программа.
 
Общая картина
Серверы FreeBSD, участвующие в клиент-серверной модели Puppet должны быть настроены и выглядеть следующим образом:
• Puppet правильно установлен и сконфигурирован на “мастере” и “агенте”, в основном речь идет об их взаимодействии по каналу, подписанному SSL-сертификатом
• система портов настроена корректно – она потребуется для разворачивания конфигураций  sudo и SSH-сервиса для использования в агенте Puppet, после этого будет возможным  автоматическая настройка и конфигурация веб-сервера Apache.
Чтобы выполнить озвученные задачи, мы разобъем установку на логические части:
 
 
Часть I – установка мастер-узла Puppet и агента
1. установим Puppet и другие утилиты
2. выполним работу по редактирированию
конфигурационных файлов:
• /usr/local/etc/puppet/puppet.conf
• /usr/local/etc/puppet/fileserver.conf
• /usr/local/etc/puppet/manifests/site.pp
• /usr/local/etc/puppet/manifests/classes/*.pp
• /usr/local/etc/puppet/auth.conf
• /etc/rc.conf
3. подпишем сертификатом мастер-узел Puppet и агент
Часть II – различные сценарии развертывания
1. задействуем Puppet для конфигурации sudo на агенте
2. установим и сконфигурируем SSH-службу
3. установим и сконфигурируем веб-сервер Apache 2.2
Следующие серверы будут выполнять роли:
• puppet-master.example.com – этот сервер будет мастер-узлом/мастер-сервером Puppet. Он ответственен за распространение конфигураций на узлы-агенты.
• puppet-agent.example.com – собственно, сам агент. Он получает инструкции от мастер-узла и действует в соответствии с ними. В данном случае, разворачивает конфигурации для sudo, SSH-службы и веб-сервера.
Вы уже заметили, что для работы сервера требуется FQDN-имя. Мастер и агент будут называться, соответственно, как puppet-master.example.com” и “puppet-agent.example.com”.
Внимание: конфигурационные файлы, показанные в этой статье, являются необходимым минимумом
чтобы заработала связка мастер-агент, а также контролируемые сервисы. Примеры могут быть не предназначены для промышленного применения.
Используйте их на свой страх и риск!
Как работает Puppet 
Puppet полагается на связь “мастер-агент” для контроля клиентских машин со стороны сервера.
На мастер-узле готовится какой-либо сценарий и отсылается агенту, который, в свою очередь, выполняет присланный сценарий.
Эти действия называются “ресурсы” (“resources”).
Они могут быть сгруппированы в “классы” (“classes”) для формирования более общих “функций” (“functions”).
“Ресурсы” затем выполняются на узлах, то есть агентах.
Как себя ведет Puppet:
• Использует SSL для обеспечения безопасной связи между мастером и агентом.
• Мастер-узел хранит разрешения на ресурсы в файле /usr/local/etc/puppet/auth.conf
• Мастер-узел хранит собственную конфигурацию в файле /usr/local/etc/puppet/puppet.conf
• На агентах не требуется присутствие файла /usr/local/etc/puppet/puppet.conf
• Сообщения об ошибках Puppet хранятся в /var/log/messages
Древовидная структура ниже показывает какие именно файлы и директории необходимы для
мастера-узла Puppet:
 
/ usr/local/etc/puppet
+-- auth.conf
+-- files
¦ +-- httpd.conf
¦ +-- sshd_config
¦ L-- sudoers
+-- fileserver.conf
+-- manifests
¦ +-- classes
¦ ¦ +-- resource_group.pp
¦ ¦ L-- something.pp
¦ L-- site.pp
L-- puppet.conf