Puppet

Puppet (маріонетка англійською) — багатоплатформовий клієнт-серверний застосунок, який дозволяє централізовано керувати конфігурацією операційних систем та програм, встановлених на кількох комп'ютерах. Puppet написано мовою програмування Ruby.[1]

Puppet дозволяє просто налаштувати і згодом швидко керувати майже кожною мережею на базі будь-якої операційної системи Red Hat, CentOS, Fedora, Debian, Ubuntu, OpenSUSE , Solaris, BSD, Mac OS X і Microsoft Windows (через cygwin).[1][2]

Система Puppet досить поширена у світі IT, де у своїй роботі її використовують такі компанії як Google, Fedora Project, Стенфордський університет, Red Hat, Siemens IT Solution, Badoo[3] і SugarCRM.[1]

Puppet дозволяє автоматизувати роботу з адміністрування групи серверів, уможливлюючи централізоване керування користувачами, установку пакетів, оновлення конфігурації тощо. Вузли мережі, керовані за допомогою Puppet, час від часу опитують сервер, отримують і застосовують зміни конфігурації внесені адміністратором. Для описання конфігурації вживається особлива декларативна мова.

Схема роботи Puppet — клієнт-серверна, хоча підтримується і варіант роботи без сервера з обмеженою функціональністю. Використовується pull-модель роботи: за замовчуванням раз в півгодини клієнти звертаються до сервера за конфігурацією і застосовують її.

Наприклад у аналогічного за призначенням продукту Ansible використовується push-модель: адміністратор ініціює процес застосування конфігурації, самі по собі клієнти нічого не застосовуватимуть.

При мережевій взаємодії використовується двостороннє TLS-шифрування: у сервера і клієнта є свої закриті ключі і відповідні їм сертифікати. Щоб підключити агент до основного сервера, на агенті слід сгенерувати RSA-ключ SSL, та зробити запит до сервера на підпис ключа. В результаті на сервері з'явиться відповідний запит на підпис сертифікату, після чого його слід підписати. Після цього захищений SSL зв'язок встановлено. Зазвичай сервер випускає сертифікати для клієнтів, але в принципі можливо використання і зовнішнього CA. Завдяки цьому алгоритму взаємодії Puppet може працювати без ssh-протоколу, на відміну від Ansible.

Приклад файлу маніфеста manifest.pp:

node 'server1.testdomain' {            # блок конфигурації, стосується агена server1.testdomain
    file { '/etc/issue':               # описуємо файл /etc/issue
        ensure  => present,            # файл має існувати
        content => 'Debian GNU/Linux', # файл містить текст
        owner   => root                # власник файлу root 
    }
}

Файл manifest.pp описує, що на агенті server1.testdomain має існувати файл /etc/issue з текстом 'Debian GNU/Linux'.

Агент server1.testdomain протягом пів години звернеться до сервера за конфігурацією і в результаті її застосування буде створено вказаний вище файл.

Література

  • James Turnbull. Pulling Strings with Puppet Configuration Management Made Easy. — Apress, 2008. — 350 p. — ISBN 978-1-59059-978-5.
  • James Turnbull, Jeffrey McCune. Pro Puppet. — Apress, 2011. — 350 p. — ISBN 978-1-4302-3057-1.

Виноски

  1. а б в xakep: ru Master of puppets: Установка и настройка системы удаленного управления конфигурацией Puppet. Архів оригіналу за 29 січня 2013. Процитовано 19 березня 2013.
  2. Статья на Habrahabr.ru: «Puppet, система управления конфигурациями.» Часть I [Архівовано 12 лютого 2012 у Wayback Machine.], Часть II [Архівовано 31 січня 2012 у Wayback Machine.]
  3. Из грязи в князи или массовый запуск серверов с минимумом рутины. Архів оригіналу за 17 лютого 2013. Процитовано 19 березня 2013.

Посилання

  • Офіційний сайт(англ.)
  • Introduction to Puppet(англ.)
  • Language Guide(англ.)
  • Централизованная настройка UNIX-систем с помощью Puppet [Архівовано 20 березня 2013 у Wayback Machine.](рос.)
  • п
  • о
  • р
Реалізації
Активні
Неактивні
IDE
Додатки
  • Capistrano
  • Chef
  • Hackety Hack
  • Homebrew
  • Interactive Ruby Shell
  • Pry
  • Puppet
  • Rake
  • Redmine
  • RSpec
  • RubyGems
  • RVM
Бібліотеки та каркаси
  • Adhearsion
  • Camping
  • eRuby (RHTML)
  • Merb
  • Padrino
  • RubyCocoa
  • Ruby on Rails
  • Shoes
  • Sinatra
  • QtRuby
Серверне ПЗ
  • mod_ruby
  • Mongrel
  • Phusion Passenger (mod_rails/mod_rack)
  • Rack
  • WEBrick
Люди
Пов'язані статті
  • Document format
  • why's (poignant) Guide to Ruby
  • Ruby Central
  • RubyKaigi
  • RubyForge
  • Ліцензія Ruby
  • Сторінка Вікісховища Commons