![cover image](https://wikiwandv2-19431.kxcdn.com/_next/image?url=https://upload.wikimedia.org/wikipedia/commons/thumb/3/34/140228puppetrunExampleManuallyInvokedPackageUpdate.png/640px-140228puppetrunExampleManuallyInvokedPackageUpdate.png&w=640&q=50)
Puppet
З Вікіпедії, безкоштовно encyclopedia
Puppet (маріонетка англійською) — багатоплатформовий клієнт-серверний застосунок, який дозволяє централізовано керувати конфігурацією операційних систем та програм, встановлених на кількох комп'ютерах. Puppet написано мовою програмування Ruby.[1]
![]() | |
![]() | |
Тип | управління конфігураціями |
---|---|
Розробник | Puppet Labs |
Перший випуск | 2005; 19 років тому (2005) |
Стабільний випуск | 4.0 (15 квітня 2015; 9 років тому (2015-04-15)) |
Операційна система | GNU/Linux, Unix-like, Windows |
Мова програмування | Ruby |
Стан розробки | активний |
Ліцензія | Apache для >2.7.0; GPL для попередніх версій. |
Репозиторій | github.com/puppetlabs/puppet |
Вебсайт | www.puppetlabs.com |
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 протягом пів години звернеться до сервера за конфігурацією і в результаті її застосування буде створено вказаний вище файл.