☁️ Что такое Puppet?

by itisgood

В DevOps мы хотим автоматизировать как можно больше задач.

Ручная настройка окружения занимает недели при огромных инфраструктурах.

Puppet помогает автоматизировать ручные задачи для быстрого создания систем и развертывания приложений.

Динамическое управление инфраструктурой лежит в основе Puppet.

В этой статье объясняется, что такое Puppet, какие проблемы он решает и как успешно использовать Puppet для автоматизации ручных задач в качестве команды DevOps.

Что такое Puppet ?

Puppet – это инструмент IaC (Infrastructure as Code) для управления несколькими серверами.

Написанный в основном на языке Ruby, Puppet работает на различных Unix-подобных системах и поддерживает Windows.

Программное обеспечение является очень зрелым, его первоначальный выпуск состоялся в 2005 году.

Puppet поставляется как бесплатное программное обеспечение с открытым исходным кодом, а для сложных инфраструктур также доступна проприетарная версия.

Для чего используется Puppet?

Puppet автоматизирует управление конфигурацией и развертывание серверов.

Программное обеспечение позволяет “дергать за ниточки” и управлять состоянием сразу нескольких систем, а такой подход сокращает ручную настройку и управление серверами по отдельности.

Puppet определяет желаемое состояние системы, а не то, как его достичь.

Конфигурация применяется к различным платформам и устройствам и поддерживает состояние во всей инфраструктуре.

В целом, системным администраторам меньше нужно тушить пожары, что позволяет команде DevOps внедрять новые и лучшие серверные решения.

Управление конфигурацией Puppet

Скрипты автоматизации помогают решать повторяющиеся задачи, такие как установка и настройка серверов.

Однако при работе с обширной инфраструктурой сценарии автоматизации не масштабируются.

Управление конфигурациями обеспечивает решение для обширных конфигураций инфраструктуры.

Эта практика считается основой DevOps и позволяет часто и более надежно выпускать программное обеспечение в рамках налаженного конвейера DevOps.

Управление конфигурацией сервера происходит благодаря подходу “инфраструктура как код”.

В случае с Puppet код управления сервером находится в коде Puppet, который похож на Ruby.

Этот язык является декларативным и описывает конфигурацию на основе моделей.

Как работает Puppet?

Puppet использует клиент-серверный подход и состоит из следующих систем:

Puppet Master – это сервер с демоном Puppet Master, который управляет важной системной информацией для всех узлов с помощью манифестов.

Агенты Puppet – это узлы с установленным на них Puppet с запущенным демоном Puppet Agent.

В следующих разделах объясняются основные элементы и терминология Puppet, которые помогают прояснить принцип работы Puppet.

Топология и архитектура Puppet

Puppet использует архитектуру клиент/сервер, состоящую из Puppet Master и Puppet Agents.

Агенты Puppet используют режим pull для опроса мастера и получения информации о конфигурации конкретного узла и сайта.

Топология проходит через следующие шаги:

  • Хост, на котором запущен демон Puppet Agent, собирает всю информацию (факты) о себе, и агент отправляет эти факты на Puppet Master.
  • Puppet Master использует эти данные для создания каталога конфигурации хоста и отправляет его обратно Puppet Agent.
  • Агент Puppet настраивает себя на основе каталога и отчитывается перед Puppet Master.

Puppet использует утилиту под названием Facter для обнаружения информации о системе.

Эта утилита по умолчанию поставляется вместе с установкой Puppet.

Puppet Master

Puppet Master – это демон, работающий на выделенном сервере.

Puppet Master – это источник информации и орган управления конфигурацией хоста сервера.

Мастер отправляет инструкции всем узлам-агентам и контролирует конфигурацию системы.

Puppet Master отвечает за выполнение следующих задач:

  • Создание каталога для агентов.
  • Передача файлов с файлового сервера агентам.
  • Принятие SSL-сертификатов от агентов.
  • Хранение конфигурационных манифестов.

Puppet использует управление доступом к идентификационным данным через выделенного пользователя и группу, обеспечивая безопасность и предоставляя агентам только необходимую информацию.

Однако не все действия требуют повышенных привилегий.

Агенты Puppet

Агент Puppet – это демон Puppet, запущенный в системе или на хосте.

Агенты имеют определенные привилегии на узле, чтобы применять каталоги конфигурации, полученные от Puppet Master.

Для получения разрешений на связь агент запрашивает SSL-сертификат при первом контакте с мастером.

Сертификат проверяется каждый раз, когда агент запрашивает у мастера обновления конфигурации перед отправкой информации.

Мастер также аутентифицирует агентов, чтобы убедиться в правильности информации о конфигурации.

Агенты Puppet изменяют конфигурацию системы и требуют рутовых прав для выполнения задач.

Шифрование и безопасность в Puppet

Puppet использует OpenSSL для связи и безопасности.

Основываясь на протоколах SSL и TLS, Puppet использует стандартное шифрование SSL/TLS и SSL-сертификаты для аутентификации и проверки агентов/мастеров.

Кроме того, Puppet шифрует поток трафика между агентами и серверами с помощью SSL/TLS, используя SHA-256 в качестве хэша по умолчанию.

Методы шифрования в Puppet обеспечивают следующее:

  • Аутентификацию и проверку подлинности мастера/агента.
  • Предотвращение утечки данных между мастером и агентами.
  • Мастер генерирует собственный сертификат ЦС, закрытый ключ, CRL (список отзыва сертификатов) и сертификат сервера. Сертификат сервера отправляется агентам для обеспечения связи SSL и TLS.

Преимущества Puppet и почему вы должны его использовать

Puppet – один из самых давних и популярных инструментов автоматизации управления конфигурацией.

Ниже приведены пять преимуществ, которые дают веские причины начать использовать Puppet.

1. Открытый исходный код

Puppet имеет открытый исходный код, что делает технологию расширяемой.

Пользовательские библиотеки и модули обогащают отдельные проекты в соответствии с вашими потребностями.

Преимуществом открытого исходного кода также является наличие активного сообщества.

Множество обсуждений, форумов и экспертов готовы помочь и ответить на вопросы.

2. Абстракция ресурсов

Задачи конфигурирования являются повторяющимися, и одни и те же шаги часто требуются на серверах с различными операционными системами с помощью шагов, специфичных для конкретной платформы. З

апомнить все команды – непосильная задача.

Facter помогает Puppet разобраться со спецификой и добиться абстракции.

Данные, относящиеся к конкретной системе, и детали ОС – все это знакомо Puppet благодаря Facter.

3. Идемпотентность

Избыточные конфигурации – сложная проблема при работе с многочисленными серверами, а Puppet стремится применять только те изменения, которые влияют на систему.

Если желаемое состояние инфраструктуры достигнуто, Puppet не выполняет команды.

Эта функция Puppet известна как idempotency, она помогает уменьшить избыточность и повысить эффективность.

4. Кросс-платформенность

Puppet охватывает широкий спектр платформ, что увеличивает количество серверов в процессе автоматизации конфигурации.

Инструмент работает на Windows, OS X, системах на базе Debian, Fedora, Gentoo, RHEL и Solaris.

5. Гибкиость

Язык Puppet включает в себя возможность отменять инструкции и создавать исключения для различных скриптов.

Puppet также помогает периодически планировать определенные действия по обслуживанию.

Заключение

Puppet – мощный инструмент для управления конфигурациями и задачами сервера, и это отличный выбор для стабильных серверов, которые не меняются динамически или часто.

см. также:

 

You may also like

Leave a Comment