Puppet, система управления конфигурациями. Часть I

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

    В этой статье я расскажу об основных особенностях системы.

    Puppet написана на Ruby, архитектура — клиент-серверная. На каждом управляемом узле находится клиент, который периодически обращается по https к серверу за обновлениями конфигурации.

    Puppet, система управления конфигурациями


    Язык управления конфигурациями


    Конфигурация описывается на специальном языке. Базовыми элементами конфигурации являются ресурсы. Каждый ресурс имеет тип, атрибуты и название. Самый простой пример ресурса, файловый:

    file { "/etc/passwd":
    owner => «root»
    }

    Этот ресурс включает проверку владельца файла /etc/passwd, и если он отличен от root, Puppet устанавливает юзера root хозяином этого файла.

    Ресурсы можно (и обычно нужно) группировать в классы. Например, класс для Postfix будет содержать ресурсы и для установки и для настройки почтового сервера Postfix.

    Одним из главных элементов описания конфигурации является узел (node). Узел позволяет описывать функциональность определённого типа. Скажем, можно описать узел «офисный десктоп», или «веб-сервер». Соответственно, для офисного десктопа будет установлено и настроено всё необходимое для офиса ПО, а для веб-сервера какой-нибудь апач или nginx.

    Вообще, язык описания конфигурации поддерживает практически все фичи нормального ООП-языка. Так что, по сути получается, что вы как бы программируете поведение машин. Действительно, в результате получается довольно наглядное описание, которое легко читать и понимать.

    Сообщество юзеров делится своими наработками, в терминах Puppet они называются «рецептами».

    Где и как это работает ?


    Следующее, что необходимо отметить, это платформонезависимость. Ваши сценарии могут разворачиваться одинаково на Linux и FreeBSD, все особенности конкретной платформы учитываются клиентом Puppet. Вы можете ознакомиться со списком поддерживаемых платформ, чтобы убедиться, что ваша любимая ОС поддерживается Puppet. Windows в этом списке нет, но сообщается, что Puppet в ней работает через cygwin.

    Что касается производительности. Она и сейчас довольно неплохая. Скажем, вы можете управлять 50-100 машинами с помощью довольно средненького сервера с 2 гигами памяти. Однако, на подходе версия 0.25, в которой одной из главных фич является переход с XML-RPC на REST, что означает существенное улучшение производительности.

    Кроме того, как практически любой веб-сервис, Puppet масштабируется. Puppet можно запускать с помощью nginx и Mongrel. Так что вы можете не опасаться ситуации, когда вдруг ваша организация разрастётся до больших размеров, Puppet с этой работой справится :-)

    Резюме


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

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

    Если вам не терпится узнать о Puppet больше прямо сейчас, милости просим в документацию :-)

    P.S.
    Размещаю в «Linux для всех», т.к. может быть полезно не только админам :-)
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 20
      +1
      Плз, раскройте тему группировки хостов в группы. У меня например 300 десктопов, как мне быстро создать для них группу?
        0
        Достигается это с помощью узлов. Т.к. у вас 300 десктопов, то очевидно, что проще всего будет задать default node. При этом любой подсоединившийся клиент явно не прописанный отдельно будет сконфигурирован как десктоп.

        Вообще, я эту тему раскрою в последующих статьях, пока что мало материала, чтобы объяснить.
          0
          Просто эта тема очень интересная, как удобно и быстро работать с различными группами хостов в puppet я так и не нашел, кроме мучений с LDAP или набивания сотен хостов вручную.
      0
      Очень интересно, а есть осуществление контроля самих конфигов и в каком виде они организованы?
      Я имею ввиду естьли возможность размещения на сервере папета скелета конфигов которые будут переданые на остальные сервера.
      Еслть ли возможность синхронизировать несколько папит серверов? тем самым организовав управляющий псевдокластер, ибо не хотелось бы что бы при настройке таким образом 300 серверов у меня накрылся подобный контроллер.
      0
      Мне кажется, что в случае «пакетных» дистрибутивов проще и надежнее распространять конфиги как раз в пакетах.
      Это позволяет проще версионировать и следить за конфигурацией.
        +1
        Существуют разные подходы, это нормально :-)
        –2
        Полистал примеры. Так и не понял чем он лучше ssh + bash.
          0
          Чем лучше vi по сравнению с emacs? :-)
          0
          Лучше бы товарищи интеграцией компонент с LDAP занимались. Впрочем централизованное управление конфигурационными файлами тоже кому то нужно, только вот с первого взгляда не понятно, интегрирована ли в эту радость система шаблонов и пр. В противном случае я не понимаю кому это может быть нужно.
          0
          Ждемс с нетерпением вторую часть — про установку и настройку!
            0
            Спасибо, постараюсь на следующей неделе оформить и запостить :-)
            –2
            бесползная и ненужная информация, которую можно почерпнуть за пару минут в интернете. лучше сразу к делу переходить. примеры настройки, особенности и отличия от аналогов.
              0
              Пытался использовать паппет для настройки серверов. Сделал вывод, что система окупается только если нужно настроить кучу однотипных серверов. Если приходиться кастомизировать каждый сервер, то написание конфига превращается в ад. DSL паппета — это нечто жуткое и дико не удобное. Любая попытка расширить этот DSL или написать свой тип ресурса — означает потратить несколько часов на копание в кишках паппета, чтобы понять как оно все работает.

              Ну про то, что у паппет-сервера постоянно течет память, я вабще молчу.
                0
                Да, Вы совершенно правы. Система предназначена для управления однотипными конфигурациями. Впрочем, этих однотипных конфигураций может быть очень много :-)

                С другой стороны, конфиг для каждого сервера Вы пишете один раз, и в дальнейшем остаётся нажать пару кнопок, чтобы «собрать» систему.

                Про утечку не в курсе, Вы разработчикам репортили? У них Trac, можно отписать.
                0
                Ну и как-то что-то не видно второй части. Ждём!
                  0
                  Есть, но не дооформлена — может завтра будет время оформить, когда выложу, сообщу в личку.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое