- PVSM.RU - https://www.pvsm.ru -
Всем привет! В данной статье хочу поделиться с вами впечатлениями от настройки Puppet для конфигурации Windows-серверов.
В целом, задача заключалась в следующем: требовалось организовать процесс автоматической доставки и установки патчей для обновления удаленных серверов. Выбирали из известных менеджеров конфигураций, главное требование к которым — поддержка Windows на высоком уровне. Сразу скажу, что от Puppet решили отказаться из-за высокого порога вхождения, pull подхода и необходимости знания Ruby. Но уж очень хочется поделиться тем, что получилось.
Puppet обладает коммуникационной моделью (архитектурой) «мастер-агент», причем операционной системой мастера не может быть Windows. Для управления Windows-агентами, на целевых машинах должно быть установлено ПО, которое представляет собой .msi установщик.
Puppet оперирует хостнеймами и взаимодействие между мастером и агентами осуществляется по протоколу HTTPS, из чего следует, что у агентов и мастера есть такие зависимости, как веб-сервер Apache, а также не удастся избежать взаимодействия с сертификатами и их настройки.
Установка состоит из двух частей, по количеству архитектурных компонент.
Установка мастера описана здесь [1]. Единственное, что во время установки не завелось – после перегенерации SSL сертификатов Apache перестал запускаться.
После обращения к журналу событий становится понятно, в чем проблема – сертификата с таким именем, как в конфигурационном файле /etc/apache2/sites-enabled/puppetmaster.conf, не существует. Заходим, исправляем имя (в моем случае просто puppet), готово. Кстати, посмотреть на сертификат мастера можно здесь — /var/lib/puppet/ssl/certs.
При установке Windows-агентов есть вероятность, что что-то пойдет не так. Самое главное правило – версия Puppet-мастера всегда должна быть сопоставима (или больше) версии Puppet-агента.
В самом начале процесса установки можно увидеть, что включает в себя установщик.
Конкретнее о многих из этих компонентов можно узнать из документации [2]. Далее указываем адрес мастера и готово.
Как можно увидеть, завершилось ли все успехом? Заходим в Event Viewer и смотрим на сообщения, где источником является Puppet. Пример ранее упомянутой проблемы несовместимости версий мастера и агента приведен ниже.
Если все прошло нормально, заключительным этапом является подпись сертификата агента на мастере.
puppet cert list --all
cert sign <agent-hostname>
# манифесты содержат набор инструкций для применения на целевых машинах
# класс определяет блок действий, которые необходимо применить
# создаем класс с описанием того, что файл должен существовать
# и иметь определенное содержимое
class action::windows {
file { 'c:\Temp\foo.txt':
ensure => present,
content => 'This is some text in my file'
}
}
# класс для обработки всех машин, кроме Windows
class action::default {
notify{ "Operating system $::operatingsystem not supported": }
}
# анализируем факт osfamily
# и в зависимости от этого выполняем нужные действия
case $::osfamily {
'windows': { include action::windows }
default: { include action::default }
}
Чтобы применить манифесты на мастере: puppet apply <manifest-name>
.
На агентах: puppet agent --test
.
Как я писал ранее, для поставленной задачи Puppet не был выбран главным образом из-за того, что использует pull подход к управлению, но, мое мнение — стабильность и возраст системы во многих ситуациях важнее. К тому же, для push подхода существует mcollective [3].
Автор: tikhoa
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows/256716
Ссылки в тексте:
[1] здесь: https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure
[2] документации: https://docs.puppet.com/puppet/
[3] mcollective: https://docs.puppet.com/mcollective/
[4] ssl background: https://docs.puppet.com/background/ssl/
[5] puppet agent/master communications: https://docs.puppet.com/puppet/latest/subsystem_agent_master_comm.html
[6] puppet architecture overview: https://docs.puppet.com/puppet/latest/architecture.html
[7] puppet official modules: https://docs.puppet.com/pe/latest/windows_modules.html
[8] tutorial presentation: http://www.example42.com/tutorials/PuppetTutorial/
[9] Источник: https://habrahabr.ru/post/329900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.