SlideShare a Scribd company logo
Сравнение современных
средств управления
конфигурацией:
Chef, Puppet, SaltStack, Ansible
Александр Чистяков,
главный инженер Git in Sky,
2014
Давайте познакомимся, я:
§ Живу на Северо-Западе
§ Работаю главным инженером в компании Git in Sky
§ Занимаюсь поддержкой инфраструктуры разных проектов,
больших и маленьких
§ Постоянно что-нибудь конфигурирую
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Давайте познакомимся, Вы:
§ Занимаетесь разработкой веб-проектов?
§ Занимаетесь поддержкой веб-проектов?
§ Не занимаетесь? А чем занимаетесь?
§ Готов поспорить, вы немного конфигурируете?
§ Если нет, кто-то делает это за вас.
§ (Надеюсь, вы знаете, кто именно, и доверяете ему)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Зачем нужны CM системы?
§ Системы управления конфигурацией позволяют:
§ Управлять конфигурацией (сюрприз!)
§ Добиваться повторимости
§ Рассматривать конфигурацию как код
§ За что мы любим библиотеки?
§ Переиспользовать код, в том числе, и чужой
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
How to configure like a pro!
§ 70-е Сначала был UNIX shell (почему «был», он и сейчас есть)
§ 90-е CFEngine 1, CFEngine 2 (ядро проекта - на языке C, кстати,
кто-нибудь здесь разрабатывает на языке C?)
§ 00-е Puppet (на Ruby), Bcfg2 (на Python)
§ 10-е Chef (Ruby), Salt (Python), Ansible (Python), Juju (Go),
Rundeck (Java), Babushka (Ruby), Marelle (Prolog)
Как видите, выбор есть! (Наверняка, я перечислил не всё)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Мужской справочник по СМ системам:
§ Задача: выбрать систему
управления конфигурацией
§ План действий (два варианта):
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Меня зовут Саша, и у меня есть проблема:
Как решал эту задачу я:
§ Начало 2011-го, Puppet и Chef уже есть, выбираю из них
§ Не знаю ни Chef, ни Puppet, ни Ruby
§ Но! Про Puppet есть книга!
§ Книга — источник знаний?
§ Книга — показатель «взрослости» проекта!
§ http://goo.gl/MKe5Ni (опубликована Feb 4, 2008)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Назад в будущее:
Я из 2011-го и эта же задача сейчас:
§ 2014: Puppet, Chef, Salt, Ansible, Fabric, ...
§ Про Chef есть книга...две книги...три книги
§ Про Puppet есть три книги...или больше?
§ (Packt Publishing — это круто!)
§ O_O
Нужно менять критерии отбора!
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Придумываем критерии:
§ Порог вхождения (низкий, высокий, средний)
§ Сложность развертывания (низкая, высокая, средняя)
§ Язык ядра проекта (Ruby, Python, C, Java, Prolog, ...)
§ Язык описания конфигурации (custom DSL, YAML, XML, eDSL, Ruby)
§ Парадигма описания конфигурации (императивная, декларативная)
§ Сложность поддерживания сервиса (низкая, высокая, средняя)
§ Ресурсоемкость (низкая, высокая, средняя)
§ Дружелюбность и компетентность сообщества
§ Классификация получилась очень субъективная и не очень стройная
§ Но другой у меня для вас нет (может, есть у вас для меня?)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Порог вхождения:
Сильно зависит от вашего пути:
§ Я начинал с Puppet, и мне было сложно
§ Через три года мы вернулись - «так здесь же все понятно!»
§ Мы уже знали анатомию типичной CM системы
§ Мы знали, что именно нам необходимо (все CM системы похожи)
§ Новая информация про Puppet в сети, новые книги, etc
Тем не менее, у разных систем порог вхождения разный
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Порог вхождения:
§ Про CFEngine тоже есть книга
§ Я пытался читать ее, уже имея опыт с Puppet и Chef
§ Сначала я сломался прямо на оглавлении
§ Потом я не смог найти, как в CFEngine устроена генерация конфигов
при помощи шаблонов
§ Так, до сих пор, и не знаю, возможно, никак не устроена
§ Да, я не хочу читать никакие книги, я хочу описывать конфигурацию,
где мой «Getting started»?
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
«Getting started»
Типичные действия:
§ Развернуть и настроить сервер, пусть в минимальном варианте (если сервер
вообще предусмотрен)
§ Настроить агент на клиентских машинах, связать их с сервером
§ Начать описывать конфигурацию
§ Протестировать описание
§ Применить описание
Казалось бы, пять простых пунктов!
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Анатомия СМ-системы:
§ Сервер (если есть, обычно — есть)
§ Агент на клиентских узлах (если есть, часто — есть)
§ Описания конфигурации (хранятся на сервере, применяются
на клиенте), состоят из:
§
Описаний установленных пакетов
§
Описаний разрешенных и запущенных сервисов
§
Шаблонов конфигурационных файлов и правил генерации
§
Описаний параметров сред (логических групп серверов)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Шаг 1: развернуть сервер
Сервер нормального человека: Сервер курильщика (Chef):
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Шаг 1: развернуть сервер
§ В настоящее время (после выхода Chef 11) любой CM сервер
разворачивается через один-два однострочника
§ При этом количество компонентов Chef-сервера не уменьшилось — их
там по-прежнему хватает на целую диаграмму
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Шаг 2: настроить агент на клиентах
§ Плюс-минус однострочник для всех систем
§ Надо только решить, как будет работать агент: как постоянно
загруженный сервис, либо через cron
§ В случае, если агент написан на Ruby, крайне рекомендую
использовать cron
§ Кстати, в книге про Puppet так и написано: “используйте лучше cron”
§ Потому что Ruby-машина так устроена, что если что-то взяла, то
обратно уже не отдаст
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Шаг 3: описываем конфигурацию
§ Лучшее описание — декларативное
§ Сам процесс применения описания императивен из-за тяжелого
наследия UNIX shell и других технологий 70-х
§ Выберите тот DSL, который вам будет понятнее (DSL курильщика тоже
есть)
§ Привыкните к мысли, что никакого DSL не хватит и придется либо
писать свои модули, либо исполнять ad hoc скрипты
§ По возможности, делайте их идемпотентными
§ Берите систему с тем языком ядра, который знаете — вам с ним еще
интегрироваться, а, возможно, и патчи на ядро выпускать
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
DSL курильщика
§ В докладе Стаса Богатырева «Chef-сервер не нужен» есть отличный
слайд, отображающий 15 разных мест в описании конфигурации,
где могут быть объявлены атрибуты ноды (управляемой машины)
§ Описание конфигураций для Salt с применением Python, а не YAML —
чистая магия, хотел с гордостью показать вам, как я это умею, но
потом мне стало стыдно
§ Вообще, чем больше и сложнее описываемая конфигурация, тем
больше метрика WTF/LOC при изучении ее описания
§ По субъективным ощущениям для описаний под Chef эта метрика
будет, при прочих равных, наименьшей
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Дружелюбность и компетентность сообщества
§ В трекере Chef до сих пор висят незакрытые проблемы от 2012-го года
§ Я попытался отправить патч в один из Chef cookbook'ов — через
полгода (!) меня попросили подписать отказ от прав
§ Один человек в мейл-листе Salt жаловался, что его прогнали из
сообщества Ansible
§ В связи со всем этим:
§ Сообщество — это вы сами
§ Вам придется владеть кодом (скорее всего, всем)
§ Дружелюбность и компетентность оцените в зеркале
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Все СМ-системы системы похожи?
§ С большого расстояния — да
§ Если подойти поближе, то у них окажется
разный цвет и разная форма ушей
§ Кроме того, у каждой будет уникальный характер
Поговорим об уникальных отличиях
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
У каждой системы свой жаргон
На мой взгляд, это довольно глупая уникальность.
Но создателей CM-систем тоже можно понять –
они втайне хотят, чтобы остался только один игрок.
Раньше я приводил в докладах словарики этого жаргона.
Но, говоря о четырех системах сразу, я не вижу
смысла этого делать.
Теперь о действительно уникальном.
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Chef: сделано рубистами для рубистов
§ Chef-Librarian и Berkshelf — dependency managers
(то же, что Bundler (Ruby), Composer (PHP), Bower (Node), etc)
§ Chef появился как SaaS, и в этом качестве он лучше всех
§ Шифрование sensitive данных — функция ядра системы
(Для Puppet есть подпроект Hiera-Puppet и отдельный плагин
hiera-gpg для шифрования)
§ foodcritic — lint tool
§ test-kitchen — integration testing tool
§ ChefSpec, Cucumber-chef, rspec-chef — unit testing tools
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Puppet: сделано для RHEL
§ В отличие от Chef, Puppet всегда таргетировался на RHEL-based
системы и нормально на них работал
§ Полная поддержка команд Augeas:
§
Augeas — это API и tool для управления конфигурационными файлами
§
Сhef с Augeas не работает вообще, Salt поддерживает только команду
«set», для Ansible есть сторонний модуль.
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Salt: сделано для быстрых и грязных
§ Клиенты держат постоянное соединение
с сервером
§ Очень удобно выполнять ad hoc команды
§ Исходно Salt — parallel execution tool
§ Сравните с тем, как параллельное исполнение
сделано, например, в Chef! (если вкратце,
оно там сделано очень плохо)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Ansible: сделано для нас
§ Сервер — это не всегда сервер
§ Меньше забот о безопасности
§ Агента на управляемых хостах нет вообще!
§ Ничего не надо устанавливать, кроме
Python, все по SSH
§ OpenBSD? Да, конечно!
§ DragonflyBSD? Да, конечно!
§ SmartOS? Да, конечно!
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Ansible: момент истины
§ Честно говоря, до сегодняшней ночи я вообще не знал, что это такое
§ Но я знал, что такое SmartOS:
§ Потомок OpenSolaris
§ Запускается с флешки — часть каталогов read-only, конфигурация
восстанавливается хитрыми shell scripts, которые у всех свои и не работают
§ Используется у нас в инфраструктуре в качестве гипервизора и очень нам
нравится
§ Через сорок минут после прочтения Getting Started я мог управлять SmartOS при
помощи Ansible (и был очень, очень удивлен и рад этому)
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Всё вместе и я
§ Мой личный опыт использования:
§ Chef — 2 года
§ Puppet — 3 месяца
§ Salt — 9 месяцев
§ Ansible — менее суток
§ Можно ли мне верить?
§ Верить можно только исходным кодам приложения
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
Выводы:
§ Знать одну CM систему лучше, чем ни одной!
§ Знать несколько CM систем лучше, чем одну!
§ План не изменился
§ Но теперь у вас есть
схема магазина (я надеюсь)
§ Кстати, наша торговая точка
здесь http://gitinsky.com
Заходите!
Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
С вами был Александр Чистяков,
главный инженер Git in Sky
alex@gitinsky.com
http://gitinsky.com
http://meetup.com/DevOps-40
Пожалуйста, ваши вопросы.
Спасибо за внимание!

More Related Content

PDF
SaltStack vs Chef, HappyDev 2013
PDF
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
PDF
Salt and Ansible - Python-based CM systems
PDF
Ansible in the enterprise
PDF
Performance engineering stories from #fdminicon Saransk
PDF
Repeatability on DevOps-40 meetup Apr 2014
PDF
Optimization of a big PostgreSQL database
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
SaltStack vs Chef, HappyDev 2013
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
Salt and Ansible - Python-based CM systems
Ansible in the enterprise
Performance engineering stories from #fdminicon Saransk
Repeatability on DevOps-40 meetup Apr 2014
Optimization of a big PostgreSQL database
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта

What's hot (20)

PDF
Разработка API для большого, нагруженного сервиса
PDF
My talk on Salt and Ansible from DevConf 2014
PPT
Kolosov drupalconf2011 2_kolosov
PPT
Drupal conf2011 2_kolosov
PPT
Инструментарий начинающего разработчика Drupal.
ODP
Chef Server не нужен? для DevOps-40
PDF
My talk on Docker from Moscow Django Meetup #25
ODP
My talk on Docker, Youcon 2015
PDF
Using Ansible
PDF
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
PDF
My talk on Hadoop stack operations engineering at OSPCon
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
PDF
Конструктор / Денис Паясь (Яндекс)
PDF
Про бэкапы (не энтерпрайз!)
PPTX
Chef @DevWeb
PPTX
Вредные советы для разработчиков
PDF
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
PDF
Современный фронтенд за 30 минут.
PPTX
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Разработка API для большого, нагруженного сервиса
My talk on Salt and Ansible from DevConf 2014
Kolosov drupalconf2011 2_kolosov
Drupal conf2011 2_kolosov
Инструментарий начинающего разработчика Drupal.
Chef Server не нужен? для DevOps-40
My talk on Docker from Moscow Django Meetup #25
My talk on Docker, Youcon 2015
Using Ansible
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
My talk on Hadoop stack operations engineering at OSPCon
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Конструктор / Денис Паясь (Яндекс)
Про бэкапы (не энтерпрайз!)
Chef @DevWeb
Вредные советы для разработчиков
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Современный фронтенд за 30 минут.
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Ad

Viewers also liked (20)

PDF
Vagrant и chef. от dev до deploy
PPTX
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
PDF
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
PDF
Мой modern Perl (весенняя встреча Piter United)
PDF
Выступление в DataArt на тему "Кто такие DevOps?"
PDF
Презентация про DTrace на ADDconf в Минске
PDF
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
ODP
My talk on LeoFS, HappyDev 2014
PDF
DevOps-40 meetup #7, Project FiFo
PDF
My talk on programming languages at SPbLUG Mar 2017
PDF
HBase on HappyDev 2013
PDF
My talk at CEE-SECR 2016
PDF
My talk at LVEE 2016
PDF
Harry Potter and the Daemons of Berkeley
PDF
My talk at YouCon Saratov 2016
PDF
My talk on HBase ops engineering at TBD Jun 2016
PDF
My talk at Highload++ 2015
PDF
HBase on Dev{Highload}
PDF
On Docker
PDF
My talk on Piter Py 2016
Vagrant и chef. от dev до deploy
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Мой modern Perl (весенняя встреча Piter United)
Выступление в DataArt на тему "Кто такие DevOps?"
Презентация про DTrace на ADDconf в Минске
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
My talk on LeoFS, HappyDev 2014
DevOps-40 meetup #7, Project FiFo
My talk on programming languages at SPbLUG Mar 2017
HBase on HappyDev 2013
My talk at CEE-SECR 2016
My talk at LVEE 2016
Harry Potter and the Daemons of Berkeley
My talk at YouCon Saratov 2016
My talk on HBase ops engineering at TBD Jun 2016
My talk at Highload++ 2015
HBase on Dev{Highload}
On Docker
My talk on Piter Py 2016
Ad

Similar to Chef, Puppet, Salt, Ansible on SECON 2014 (20)

PDF
Ansible on a great Moscow DevOps CM battle
PDF
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
PDF
«​Масштабируемый DevOps​» Александр Колесень
PDF
Масштабируемый DevOps
PDF
Application deployment & configuration management
PPTX
Применяем Ansible
PPT
Database automated deployment and versioning ...for smart people
PDF
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
PPTX
Система управления конфигурациями Ansible
PPTX
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
PDF
HappyDev'15 Keynote: Когда все данные станут большими...
PDF
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
PDF
Собеседование на позицию Java Developer
PDF
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PDF
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
PDF
My talk on PgDay Russia 2014
PDF
Визуализация покрытия автоматизированными UI тестами
PDF
SPA инструменты
PDF
Cerebro general overiew rus
PDF
Couchbase, что за зверь и на что способен.
Ansible on a great Moscow DevOps CM battle
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
«​Масштабируемый DevOps​» Александр Колесень
Масштабируемый DevOps
Application deployment & configuration management
Применяем Ansible
Database automated deployment and versioning ...for smart people
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Система управления конфигурациями Ansible
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Собеседование на позицию Java Developer
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
My talk on PgDay Russia 2014
Визуализация покрытия автоматизированными UI тестами
SPA инструменты
Cerebro general overiew rus
Couchbase, что за зверь и на что способен.

More from Alex Chistyakov (20)

PDF
My slides from DevOpsDays 2019
PDF
My slides from BMM №3 May 2019
PDF
My slides from DevOps-40 meetup Jun 2019
PDF
My slides from SECR'2018
PDF
My slides from the first SPb SRE community meetup at DataArt
PDF
My slides from CC'2019
PDF
My slides from BMM №4 Nov 2019
PDF
My slides from DevOps-40 meetup Oct 2019
PDF
My slides from DevOps-40 meetup Dec 2019
PDF
Configuration management and Kubernetes
PDF
Ansible and other stuff
PDF
Python performance engineering in 2017
PDF
My talk at SPb SQA sub-meetup of ITGM
PDF
My talk at SECR 2017
PDF
On scaling teams
PDF
MariaDB workshop
PDF
Docker for JS people
PDF
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
PDF
My talk on GitHub open data at ITGM #10
PDF
My talk on DevOps :) at Stachka 2017
My slides from DevOpsDays 2019
My slides from BMM №3 May 2019
My slides from DevOps-40 meetup Jun 2019
My slides from SECR'2018
My slides from the first SPb SRE community meetup at DataArt
My slides from CC'2019
My slides from BMM №4 Nov 2019
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Dec 2019
Configuration management and Kubernetes
Ansible and other stuff
Python performance engineering in 2017
My talk at SPb SQA sub-meetup of ITGM
My talk at SECR 2017
On scaling teams
MariaDB workshop
Docker for JS people
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on GitHub open data at ITGM #10
My talk on DevOps :) at Stachka 2017

Chef, Puppet, Salt, Ansible on SECON 2014

  • 1. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible Александр Чистяков, главный инженер Git in Sky, 2014
  • 2. Давайте познакомимся, я: § Живу на Северо-Западе § Работаю главным инженером в компании Git in Sky § Занимаюсь поддержкой инфраструктуры разных проектов, больших и маленьких § Постоянно что-нибудь конфигурирую Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 3. Давайте познакомимся, Вы: § Занимаетесь разработкой веб-проектов? § Занимаетесь поддержкой веб-проектов? § Не занимаетесь? А чем занимаетесь? § Готов поспорить, вы немного конфигурируете? § Если нет, кто-то делает это за вас. § (Надеюсь, вы знаете, кто именно, и доверяете ему) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 4. Зачем нужны CM системы? § Системы управления конфигурацией позволяют: § Управлять конфигурацией (сюрприз!) § Добиваться повторимости § Рассматривать конфигурацию как код § За что мы любим библиотеки? § Переиспользовать код, в том числе, и чужой Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 5. How to configure like a pro! § 70-е Сначала был UNIX shell (почему «был», он и сейчас есть) § 90-е CFEngine 1, CFEngine 2 (ядро проекта - на языке C, кстати, кто-нибудь здесь разрабатывает на языке C?) § 00-е Puppet (на Ruby), Bcfg2 (на Python) § 10-е Chef (Ruby), Salt (Python), Ansible (Python), Juju (Go), Rundeck (Java), Babushka (Ruby), Marelle (Prolog) Как видите, выбор есть! (Наверняка, я перечислил не всё) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 6. Мужской справочник по СМ системам: § Задача: выбрать систему управления конфигурацией § План действий (два варианта): Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 7. Меня зовут Саша, и у меня есть проблема: Как решал эту задачу я: § Начало 2011-го, Puppet и Chef уже есть, выбираю из них § Не знаю ни Chef, ни Puppet, ни Ruby § Но! Про Puppet есть книга! § Книга — источник знаний? § Книга — показатель «взрослости» проекта! § http://goo.gl/MKe5Ni (опубликована Feb 4, 2008) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 8. Назад в будущее: Я из 2011-го и эта же задача сейчас: § 2014: Puppet, Chef, Salt, Ansible, Fabric, ... § Про Chef есть книга...две книги...три книги § Про Puppet есть три книги...или больше? § (Packt Publishing — это круто!) § O_O Нужно менять критерии отбора! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 9. Придумываем критерии: § Порог вхождения (низкий, высокий, средний) § Сложность развертывания (низкая, высокая, средняя) § Язык ядра проекта (Ruby, Python, C, Java, Prolog, ...) § Язык описания конфигурации (custom DSL, YAML, XML, eDSL, Ruby) § Парадигма описания конфигурации (императивная, декларативная) § Сложность поддерживания сервиса (низкая, высокая, средняя) § Ресурсоемкость (низкая, высокая, средняя) § Дружелюбность и компетентность сообщества § Классификация получилась очень субъективная и не очень стройная § Но другой у меня для вас нет (может, есть у вас для меня?) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 10. Порог вхождения: Сильно зависит от вашего пути: § Я начинал с Puppet, и мне было сложно § Через три года мы вернулись - «так здесь же все понятно!» § Мы уже знали анатомию типичной CM системы § Мы знали, что именно нам необходимо (все CM системы похожи) § Новая информация про Puppet в сети, новые книги, etc Тем не менее, у разных систем порог вхождения разный Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 11. Порог вхождения: § Про CFEngine тоже есть книга § Я пытался читать ее, уже имея опыт с Puppet и Chef § Сначала я сломался прямо на оглавлении § Потом я не смог найти, как в CFEngine устроена генерация конфигов при помощи шаблонов § Так, до сих пор, и не знаю, возможно, никак не устроена § Да, я не хочу читать никакие книги, я хочу описывать конфигурацию, где мой «Getting started»? Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 12. «Getting started» Типичные действия: § Развернуть и настроить сервер, пусть в минимальном варианте (если сервер вообще предусмотрен) § Настроить агент на клиентских машинах, связать их с сервером § Начать описывать конфигурацию § Протестировать описание § Применить описание Казалось бы, пять простых пунктов! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 13. Анатомия СМ-системы: § Сервер (если есть, обычно — есть) § Агент на клиентских узлах (если есть, часто — есть) § Описания конфигурации (хранятся на сервере, применяются на клиенте), состоят из: § Описаний установленных пакетов § Описаний разрешенных и запущенных сервисов § Шаблонов конфигурационных файлов и правил генерации § Описаний параметров сред (логических групп серверов) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 14. Шаг 1: развернуть сервер Сервер нормального человека: Сервер курильщика (Chef): Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 15. Шаг 1: развернуть сервер § В настоящее время (после выхода Chef 11) любой CM сервер разворачивается через один-два однострочника § При этом количество компонентов Chef-сервера не уменьшилось — их там по-прежнему хватает на целую диаграмму Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 16. Шаг 2: настроить агент на клиентах § Плюс-минус однострочник для всех систем § Надо только решить, как будет работать агент: как постоянно загруженный сервис, либо через cron § В случае, если агент написан на Ruby, крайне рекомендую использовать cron § Кстати, в книге про Puppet так и написано: “используйте лучше cron” § Потому что Ruby-машина так устроена, что если что-то взяла, то обратно уже не отдаст Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 17. Шаг 3: описываем конфигурацию § Лучшее описание — декларативное § Сам процесс применения описания императивен из-за тяжелого наследия UNIX shell и других технологий 70-х § Выберите тот DSL, который вам будет понятнее (DSL курильщика тоже есть) § Привыкните к мысли, что никакого DSL не хватит и придется либо писать свои модули, либо исполнять ad hoc скрипты § По возможности, делайте их идемпотентными § Берите систему с тем языком ядра, который знаете — вам с ним еще интегрироваться, а, возможно, и патчи на ядро выпускать Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 18. DSL курильщика § В докладе Стаса Богатырева «Chef-сервер не нужен» есть отличный слайд, отображающий 15 разных мест в описании конфигурации, где могут быть объявлены атрибуты ноды (управляемой машины) § Описание конфигураций для Salt с применением Python, а не YAML — чистая магия, хотел с гордостью показать вам, как я это умею, но потом мне стало стыдно § Вообще, чем больше и сложнее описываемая конфигурация, тем больше метрика WTF/LOC при изучении ее описания § По субъективным ощущениям для описаний под Chef эта метрика будет, при прочих равных, наименьшей Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 19. Дружелюбность и компетентность сообщества § В трекере Chef до сих пор висят незакрытые проблемы от 2012-го года § Я попытался отправить патч в один из Chef cookbook'ов — через полгода (!) меня попросили подписать отказ от прав § Один человек в мейл-листе Salt жаловался, что его прогнали из сообщества Ansible § В связи со всем этим: § Сообщество — это вы сами § Вам придется владеть кодом (скорее всего, всем) § Дружелюбность и компетентность оцените в зеркале Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 20. Все СМ-системы системы похожи? § С большого расстояния — да § Если подойти поближе, то у них окажется разный цвет и разная форма ушей § Кроме того, у каждой будет уникальный характер Поговорим об уникальных отличиях Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 21. У каждой системы свой жаргон На мой взгляд, это довольно глупая уникальность. Но создателей CM-систем тоже можно понять – они втайне хотят, чтобы остался только один игрок. Раньше я приводил в докладах словарики этого жаргона. Но, говоря о четырех системах сразу, я не вижу смысла этого делать. Теперь о действительно уникальном. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 22. Chef: сделано рубистами для рубистов § Chef-Librarian и Berkshelf — dependency managers (то же, что Bundler (Ruby), Composer (PHP), Bower (Node), etc) § Chef появился как SaaS, и в этом качестве он лучше всех § Шифрование sensitive данных — функция ядра системы (Для Puppet есть подпроект Hiera-Puppet и отдельный плагин hiera-gpg для шифрования) § foodcritic — lint tool § test-kitchen — integration testing tool § ChefSpec, Cucumber-chef, rspec-chef — unit testing tools Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 23. Puppet: сделано для RHEL § В отличие от Chef, Puppet всегда таргетировался на RHEL-based системы и нормально на них работал § Полная поддержка команд Augeas: § Augeas — это API и tool для управления конфигурационными файлами § Сhef с Augeas не работает вообще, Salt поддерживает только команду «set», для Ansible есть сторонний модуль. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 24. Salt: сделано для быстрых и грязных § Клиенты держат постоянное соединение с сервером § Очень удобно выполнять ad hoc команды § Исходно Salt — parallel execution tool § Сравните с тем, как параллельное исполнение сделано, например, в Chef! (если вкратце, оно там сделано очень плохо) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 25. Ansible: сделано для нас § Сервер — это не всегда сервер § Меньше забот о безопасности § Агента на управляемых хостах нет вообще! § Ничего не надо устанавливать, кроме Python, все по SSH § OpenBSD? Да, конечно! § DragonflyBSD? Да, конечно! § SmartOS? Да, конечно! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 26. Ansible: момент истины § Честно говоря, до сегодняшней ночи я вообще не знал, что это такое § Но я знал, что такое SmartOS: § Потомок OpenSolaris § Запускается с флешки — часть каталогов read-only, конфигурация восстанавливается хитрыми shell scripts, которые у всех свои и не работают § Используется у нас в инфраструктуре в качестве гипервизора и очень нам нравится § Через сорок минут после прочтения Getting Started я мог управлять SmartOS при помощи Ansible (и был очень, очень удивлен и рад этому) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 27. Всё вместе и я § Мой личный опыт использования: § Chef — 2 года § Puppet — 3 месяца § Salt — 9 месяцев § Ansible — менее суток § Можно ли мне верить? § Верить можно только исходным кодам приложения Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 28. Выводы: § Знать одну CM систему лучше, чем ни одной! § Знать несколько CM систем лучше, чем одну! § План не изменился § Но теперь у вас есть схема магазина (я надеюсь) § Кстати, наша торговая точка здесь http://gitinsky.com Заходите! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  • 29. С вами был Александр Чистяков, главный инженер Git in Sky [email protected] http://gitinsky.com http://meetup.com/DevOps-40 Пожалуйста, ваши вопросы. Спасибо за внимание!