0
Сравнение современных
средств управления
конфигурацией:
Chef, Puppet, SaltStack, Ansible
Александр Чистяков,
главный инжен...
Давайте познакомимся, я:
§ Живу на Северо-Западе
§ Работаю главным инженером в компании Git in Sky
§ Занимаюсь поддержкой ...
Давайте познакомимся, Вы:
§ Занимаетесь разработкой веб-проектов?
§ Занимаетесь поддержкой веб-проектов?
§ Не занимаетесь?...
Зачем нужны CM системы?
§ Системы управления конфигурацией позволяют:
§ Управлять конфигурацией (сюрприз!)
§ Добиваться по...
How to configure like a pro!
§ 70-е Сначала был UNIX shell (почему «был», он и сейчас есть)
§ 90-е CFEngine 1, CFEngine 2 ...
Мужской справочник по СМ системам:
§ Задача: выбрать систему
управления конфигурацией
§ План действий (два варианта):
Срав...
Меня зовут Саша, и у меня есть проблема:
Как решал эту задачу я:
§ Начало 2011-го, Puppet и Chef уже есть, выбираю из них
...
Назад в будущее:
Я из 2011-го и эта же задача сейчас:
§ 2014: Puppet, Chef, Salt, Ansible, Fabric, ...
§ Про Chef есть кни...
Придумываем критерии:
§ Порог вхождения (низкий, высокий, средний)
§ Сложность развертывания (низкая, высокая, средняя)
§ ...
Порог вхождения:
Сильно зависит от вашего пути:
§ Я начинал с Puppet, и мне было сложно
§ Через три года мы вернулись - «т...
Порог вхождения:
§ Про CFEngine тоже есть книга
§ Я пытался читать ее, уже имея опыт с Puppet и Chef
§ Сначала я сломался ...
«Getting started»
Типичные действия:
§ Развернуть и настроить сервер, пусть в минимальном варианте (если сервер
вообще пре...
Анатомия СМ-системы:
§ Сервер (если есть, обычно — есть)
§ Агент на клиентских узлах (если есть, часто — есть)
§ Описания ...
Шаг 1: развернуть сервер
Сервер нормального человека: Сервер курильщика (Chef):
Сравнение современных средств управления к...
Шаг 1: развернуть сервер
§ В настоящее время (после выхода Chef 11) любой CM сервер
разворачивается через один-два одностр...
Шаг 2: настроить агент на клиентах
§ Плюс-минус однострочник для всех систем
§ Надо только решить, как будет работать аген...
Шаг 3: описываем конфигурацию
§ Лучшее описание — декларативное
§ Сам процесс применения описания императивен из-за тяжело...
DSL курильщика
§ В докладе Стаса Богатырева «Chef-сервер не нужен» есть отличный
слайд, отображающий 15 разных мест в опис...
Дружелюбность и компетентность сообщества
§ В трекере Chef до сих пор висят незакрытые проблемы от 2012-го года
§ Я попыта...
Все СМ-системы системы похожи?
§ С большого расстояния — да
§ Если подойти поближе, то у них окажется
разный цвет и разная...
У каждой системы свой жаргон
На мой взгляд, это довольно глупая уникальность.
Но создателей CM-систем тоже можно понять –
...
Chef: сделано рубистами для рубистов
§ Chef-Librarian и Berkshelf — dependency managers
(то же, что Bundler (Ruby), Compos...
Puppet: сделано для RHEL
§ В отличие от Chef, Puppet всегда таргетировался на RHEL-based
системы и нормально на них работа...
Salt: сделано для быстрых и грязных
§ Клиенты держат постоянное соединение
с сервером
§ Очень удобно выполнять ad hoc кома...
Ansible: сделано для нас
§ Сервер — это не всегда сервер
§ Меньше забот о безопасности
§ Агента на управляемых хостах нет ...
Ansible: момент истины
§ Честно говоря, до сегодняшней ночи я вообще не знал, что это такое
§ Но я знал, что такое SmartOS...
Всё вместе и я
§ Мой личный опыт использования:
§ Chef — 2 года
§ Puppet — 3 месяца
§ Salt — 9 месяцев
§ Ansible — менее с...
Выводы:
§ Знать одну CM систему лучше, чем ни одной!
§ Знать несколько CM систем лучше, чем одну!
§ План не изменился
§ Но...
С вами был Александр Чистяков,
главный инженер Git in Sky
alex@gitinsky.com
http://gitinsky.com
http://meetup.com/DevOps-4...
Upcoming SlideShare
Loading in...5
×

Chef, Puppet, Salt, Ansible on SECON 2014

2,007

Published on

My presentation from SECON 2014

Published in: Technology
6 Comments
4 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,007
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
26
Comments
6
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Chef, Puppet, Salt, Ansible on SECON 2014"

  1. 1. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible Александр Чистяков, главный инженер Git in Sky, 2014
  2. 2. Давайте познакомимся, я: § Живу на Северо-Западе § Работаю главным инженером в компании Git in Sky § Занимаюсь поддержкой инфраструктуры разных проектов, больших и маленьких § Постоянно что-нибудь конфигурирую Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  3. 3. Давайте познакомимся, Вы: § Занимаетесь разработкой веб-проектов? § Занимаетесь поддержкой веб-проектов? § Не занимаетесь? А чем занимаетесь? § Готов поспорить, вы немного конфигурируете? § Если нет, кто-то делает это за вас. § (Надеюсь, вы знаете, кто именно, и доверяете ему) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  4. 4. Зачем нужны CM системы? § Системы управления конфигурацией позволяют: § Управлять конфигурацией (сюрприз!) § Добиваться повторимости § Рассматривать конфигурацию как код § За что мы любим библиотеки? § Переиспользовать код, в том числе, и чужой Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  5. 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. 6. Мужской справочник по СМ системам: § Задача: выбрать систему управления конфигурацией § План действий (два варианта): Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  7. 7. Меня зовут Саша, и у меня есть проблема: Как решал эту задачу я: § Начало 2011-го, Puppet и Chef уже есть, выбираю из них § Не знаю ни Chef, ни Puppet, ни Ruby § Но! Про Puppet есть книга! § Книга — источник знаний? § Книга — показатель «взрослости» проекта! § http://goo.gl/MKe5Ni (опубликована Feb 4, 2008) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  8. 8. Назад в будущее: Я из 2011-го и эта же задача сейчас: § 2014: Puppet, Chef, Salt, Ansible, Fabric, ... § Про Chef есть книга...две книги...три книги § Про Puppet есть три книги...или больше? § (Packt Publishing — это круто!) § O_O Нужно менять критерии отбора! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  9. 9. Придумываем критерии: § Порог вхождения (низкий, высокий, средний) § Сложность развертывания (низкая, высокая, средняя) § Язык ядра проекта (Ruby, Python, C, Java, Prolog, ...) § Язык описания конфигурации (custom DSL, YAML, XML, eDSL, Ruby) § Парадигма описания конфигурации (императивная, декларативная) § Сложность поддерживания сервиса (низкая, высокая, средняя) § Ресурсоемкость (низкая, высокая, средняя) § Дружелюбность и компетентность сообщества § Классификация получилась очень субъективная и не очень стройная § Но другой у меня для вас нет (может, есть у вас для меня?) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  10. 10. Порог вхождения: Сильно зависит от вашего пути: § Я начинал с Puppet, и мне было сложно § Через три года мы вернулись - «так здесь же все понятно!» § Мы уже знали анатомию типичной CM системы § Мы знали, что именно нам необходимо (все CM системы похожи) § Новая информация про Puppet в сети, новые книги, etc Тем не менее, у разных систем порог вхождения разный Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  11. 11. Порог вхождения: § Про CFEngine тоже есть книга § Я пытался читать ее, уже имея опыт с Puppet и Chef § Сначала я сломался прямо на оглавлении § Потом я не смог найти, как в CFEngine устроена генерация конфигов при помощи шаблонов § Так, до сих пор, и не знаю, возможно, никак не устроена § Да, я не хочу читать никакие книги, я хочу описывать конфигурацию, где мой «Getting started»? Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  12. 12. «Getting started» Типичные действия: § Развернуть и настроить сервер, пусть в минимальном варианте (если сервер вообще предусмотрен) § Настроить агент на клиентских машинах, связать их с сервером § Начать описывать конфигурацию § Протестировать описание § Применить описание Казалось бы, пять простых пунктов! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  13. 13. Анатомия СМ-системы: § Сервер (если есть, обычно — есть) § Агент на клиентских узлах (если есть, часто — есть) § Описания конфигурации (хранятся на сервере, применяются на клиенте), состоят из: § Описаний установленных пакетов § Описаний разрешенных и запущенных сервисов § Шаблонов конфигурационных файлов и правил генерации § Описаний параметров сред (логических групп серверов) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  14. 14. Шаг 1: развернуть сервер Сервер нормального человека: Сервер курильщика (Chef): Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  15. 15. Шаг 1: развернуть сервер § В настоящее время (после выхода Chef 11) любой CM сервер разворачивается через один-два однострочника § При этом количество компонентов Chef-сервера не уменьшилось — их там по-прежнему хватает на целую диаграмму Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  16. 16. Шаг 2: настроить агент на клиентах § Плюс-минус однострочник для всех систем § Надо только решить, как будет работать агент: как постоянно загруженный сервис, либо через cron § В случае, если агент написан на Ruby, крайне рекомендую использовать cron § Кстати, в книге про Puppet так и написано: “используйте лучше cron” § Потому что Ruby-машина так устроена, что если что-то взяла, то обратно уже не отдаст Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  17. 17. Шаг 3: описываем конфигурацию § Лучшее описание — декларативное § Сам процесс применения описания императивен из-за тяжелого наследия UNIX shell и других технологий 70-х § Выберите тот DSL, который вам будет понятнее (DSL курильщика тоже есть) § Привыкните к мысли, что никакого DSL не хватит и придется либо писать свои модули, либо исполнять ad hoc скрипты § По возможности, делайте их идемпотентными § Берите систему с тем языком ядра, который знаете — вам с ним еще интегрироваться, а, возможно, и патчи на ядро выпускать Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  18. 18. DSL курильщика § В докладе Стаса Богатырева «Chef-сервер не нужен» есть отличный слайд, отображающий 15 разных мест в описании конфигурации, где могут быть объявлены атрибуты ноды (управляемой машины) § Описание конфигураций для Salt с применением Python, а не YAML — чистая магия, хотел с гордостью показать вам, как я это умею, но потом мне стало стыдно § Вообще, чем больше и сложнее описываемая конфигурация, тем больше метрика WTF/LOC при изучении ее описания § По субъективным ощущениям для описаний под Chef эта метрика будет, при прочих равных, наименьшей Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  19. 19. Дружелюбность и компетентность сообщества § В трекере Chef до сих пор висят незакрытые проблемы от 2012-го года § Я попытался отправить патч в один из Chef cookbook'ов — через полгода (!) меня попросили подписать отказ от прав § Один человек в мейл-листе Salt жаловался, что его прогнали из сообщества Ansible § В связи со всем этим: § Сообщество — это вы сами § Вам придется владеть кодом (скорее всего, всем) § Дружелюбность и компетентность оцените в зеркале Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  20. 20. Все СМ-системы системы похожи? § С большого расстояния — да § Если подойти поближе, то у них окажется разный цвет и разная форма ушей § Кроме того, у каждой будет уникальный характер Поговорим об уникальных отличиях Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  21. 21. У каждой системы свой жаргон На мой взгляд, это довольно глупая уникальность. Но создателей CM-систем тоже можно понять – они втайне хотят, чтобы остался только один игрок. Раньше я приводил в докладах словарики этого жаргона. Но, говоря о четырех системах сразу, я не вижу смысла этого делать. Теперь о действительно уникальном. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  22. 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. 23. Puppet: сделано для RHEL § В отличие от Chef, Puppet всегда таргетировался на RHEL-based системы и нормально на них работал § Полная поддержка команд Augeas: § Augeas — это API и tool для управления конфигурационными файлами § Сhef с Augeas не работает вообще, Salt поддерживает только команду «set», для Ansible есть сторонний модуль. Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  24. 24. Salt: сделано для быстрых и грязных § Клиенты держат постоянное соединение с сервером § Очень удобно выполнять ad hoc команды § Исходно Salt — parallel execution tool § Сравните с тем, как параллельное исполнение сделано, например, в Chef! (если вкратце, оно там сделано очень плохо) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  25. 25. Ansible: сделано для нас § Сервер — это не всегда сервер § Меньше забот о безопасности § Агента на управляемых хостах нет вообще! § Ничего не надо устанавливать, кроме Python, все по SSH § OpenBSD? Да, конечно! § DragonflyBSD? Да, конечно! § SmartOS? Да, конечно! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  26. 26. Ansible: момент истины § Честно говоря, до сегодняшней ночи я вообще не знал, что это такое § Но я знал, что такое SmartOS: § Потомок OpenSolaris § Запускается с флешки — часть каталогов read-only, конфигурация восстанавливается хитрыми shell scripts, которые у всех свои и не работают § Используется у нас в инфраструктуре в качестве гипервизора и очень нам нравится § Через сорок минут после прочтения Getting Started я мог управлять SmartOS при помощи Ansible (и был очень, очень удивлен и рад этому) Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  27. 27. Всё вместе и я § Мой личный опыт использования: § Chef — 2 года § Puppet — 3 месяца § Salt — 9 месяцев § Ansible — менее суток § Можно ли мне верить? § Верить можно только исходным кодам приложения Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  28. 28. Выводы: § Знать одну CM систему лучше, чем ни одной! § Знать несколько CM систем лучше, чем одну! § План не изменился § Но теперь у вас есть схема магазина (я надеюсь) § Кстати, наша торговая точка здесь http://gitinsky.com Заходите! Сравнение современных средств управления конфигурацией: Chef, Puppet, SaltStack, Ansible. 2014
  29. 29. С вами был Александр Чистяков, главный инженер Git in Sky alex@gitinsky.com http://gitinsky.com http://meetup.com/DevOps-40 Пожалуйста, ваши вопросы. Спасибо за внимание!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×