Spec-Zone.ru › MariaDB

Обзор Puppet для пользователей MariaDB

Puppet — это инструмент для автоматизации управления конфигурацией серверов. Он разработан компанией Puppet Inc и распространяется по лицензии Apache, версия 2.

Использовать Ansible для автоматизации развертывания и настройки MariaDB также возможно. Эта страница содержит общую информацию для пользователей MariaDB, которые хотят изучить или оценить Puppet.

Модули Puppet можно искать на Puppet Forge. Большинство из них также опубликованы на GitHub с открытыми лицензиями. Puppet Forge позволяет фильтровать модули, чтобы отображать только наиболее надёжные: поддерживаемые Puppet, поддерживаемые партнёрами Puppet или одобренные.

Дополнительную информацию об установке Puppet см. в документации Puppet на странице Установка и обновление.

Принципы проектирования

С помощью Puppet вы пишете манифесты, описывающие ресурсы, которые вам нужно запустить на определённых серверах, и их атрибуты.

Поэтому манифесты являются декларативными. Вы не пишете шаги для достижения желаемого результата. Вместо этого вы описываете желаемый результат. Когда Puppet обнаруживает различия между вашим описанием и текущим состоянием сервера, он определяет, что нужно сделать, чтобы устранить эти различия.

Манифесты также являются идемпотентными. Вам не нужно беспокоиться о последствиях применения манифеста дважды. Это может произойти (см. архитектуру ниже), но это не повлияет на результат.

Определение ресурсов

Вот пример того, как описать ресурс в манифесте:

file { '/etc/motd':
  content => '',
  ensure => present,
}

Этот блок описывает ресурс. Тип ресурса file, а сам ресурс — /etc/motd. Описание состоит из набора атрибутов. Наиболее важным является ensure, который в данном случае указывает на то, что файл должен существовать. Также часто этот ресурс используется для указания, что файла (вероятно, созданного предыдущей версией манифеста) не существует.

Существуют следующие классы типов ресурсов:

  • Встроенные ресурсы или ядерные ресурсы Puppet: Ресурсы, которые являются частью Puppet и поддерживаются командой Puppet.
  • Определённые ресурсы: Ресурсы, определённые как комбинация других ресурсов. Они написаны на языке Puppet.
  • Пользовательские ресурсы: Ресурсы, написанные пользователями на языке Ruby.

Для получения информации о ресурсах:

# list existing resource types
puppet resource --types
# print information about the file resource type
puppet describe file

Для группировки нескольких ресурсов в переиспользуемый класс:

class ssh_server {
  file { '/etc/motd':
    content => '',
    ensure => present,
  }
  file { '/etc/issue.net':
    content => '',
    ensure => present,
  }
}

Существует несколько способов включения класса. Например:

include Class['ssh_server']

Определение узлов

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

Узлы определяются следующим образом:

node 'maria-1.example.com' {
  include common
  include mariadb
}

Тип ресурса — node. Затем мы указываем имя хоста, которое используется для сопоставления этого узла с существующим хостом. Это также может быть список имён хостов, регулярное выражение, которое соответствует нескольким узлам, или ключевое слово default, которое соответствует всем хостам. Для использования регулярного выражения:

node /^(maria|mysql)-[1-3]\.example\.com$/ {
  include common
}

Концепции

Наиболее важные концепции Puppet:

  • Целевой объект: Хост, конфигурация которого управляется с помощью Puppet.
  • Группа: Логическая группа целевых объектов. Например, может быть группа mariadb, и несколько целевых объектов могут входить в эту группу.
  • Факты: Информация, собранная с целевых объектов, например, имя системы или версия системы. Они собираются с помощью Ruby-gem под названием Facter. Они могут быть ядерными фактами (собираются по умолчанию) или пользовательскими фактами (определены пользователем).
  • Манифест: Описание, которое может быть применено к целевому объекту.
  • Каталог: Скомпилированный манифест.
  • Применение: Изменение состояния целевого объекта таким образом, чтобы оно соответствовало его описанию в манифесте.
  • Модуль: Набор манифестов.
  • Ресурс: Минимальная единица описания. Манифест состоит из набора ресурсов, описывающих компоненты системы, таких как файл или служба.
  • Тип ресурса: Определяет класс ресурса. Например, есть тип ресурса file, и манифест может содержать любое количество ресурсов этого типа, описывающих различные файлы.
  • Атрибут: Характеристика ресурса, например, владелец файла или его права доступа.
  • Класс: Группа ресурсов, которые могут быть повторно использованы в нескольких манифестах.

Архитектура

В зависимости от того, как пользователь решил развернуть изменения, Puppet может использовать две разные архитектуры:

  • Архитектура клиент-сервер. Это предпочтительный способ использования Puppet.
  • Архитектура автономная, аналогичная архитектуре Ansible.

Архитектура клиент-сервер

Сервер Puppet хранит каталог для каждого целевого объекта. Может быть более одного сервера Puppet для повышения надёжности.

Каждый целевой объект выполняет агент Puppet в фоновом режиме. Каждый агент Puppet периодически подключается к серверу Puppet, отправляя свои факты. Сервер Puppet компилирует соответствующий манифест с использованием полученных фактов и отправляет обратно каталог. Обратите внимание, что каталоги также можно хранить в PuppetDB.

После получения агентом Puppet обновлённого каталога он проверяет все ресурсы и сравнивает их с текущим состоянием. Он применяет необходимые изменения, чтобы убедиться, что его состояние отражает ресурсы, присутствующие в каталоге.

Автономная архитектура

В этой архитектуре целевые объекты выполняют Puppet apply. Это приложение обычно выполняется как задача Linux cron или Windows запланированная задача, но его также можно вызвать вручную.

При запуске Puppet apply он компилирует последние версии манифестов с использованием локальных фактов. Затем он проверяет каждый ресурс из полученных каталогов и сравнивает его с состоянием локальной системы, применяя изменения, где это необходимо.

Новые или изменённые манифесты обычно развертываются на целевые объекты, поэтому Puppet apply может читать их с локального хоста. Однако можно использовать PuppetDB вместо этого.

PuppetDB

PuppetDB — это узел Puppet, который использует базу данных PostgreSQL для хранения информации, которая может использоваться другими узлами. PuppetDB можно использовать как с архитектурой клиент-сервер, так и с автономной архитектурой, но она всегда необязательна. Тем не менее, она необходима для использования некоторых расширенных функций Puppet.

PuppetDB хранит следующую информацию:

  • Последние факты от каждого целевого объекта.
  • Последние каталоги, скомпилированные Puppet apply или сервером Puppet.
  • Необязательно, недавнюю историю деятельности каждого узла.

Внешние классификаторы узлов

В обеих архитектурах можно иметь компонент под названием Внешний классификатор узлов (ENC). Это скрипт или исполняемый файл, написанный на любом языке, который Puppet может вызвать, чтобы определить список классов, которые должны быть применены к определённому целевому объекту.

ENC получает в качестве входных данных имя узла и должен вернуть список классов, параметров и т.д. в виде YAML-хэша.

Bolt

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

См. Примеры Bolt, чтобы понять, что можно сделать с помощью Bolt.

hiera

hiera — это иерархическая система конфигурации, которая позволяет:

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

Для получения дополнительной информации см. Систему конфигурации Puppet hiera.

Ресурсы Puppet

  • Документация Puppet.
  • forge.puppet.com.
  • Puppet на GitHub.
  • Puppet в Википедии.

Дополнительную информацию о темах, рассмотренных на этой странице, можно найти в документации Ansible:

  • Словарь Puppet в документации Puppet.
  • Обзор архитектуры Puppet в документации Puppet.
  • Документация PuppetDB.
  • Классификация узлов в документации Puppet.
  • Hiera в документации Puppet.
  • Документация Bolt.

Контент первоначально предоставлен компанией Vettabase Ltd.

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/puppet-overview-for-mariadb-users/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API