Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14

2,881 views

Published on

This presentation in Russian compares CFEngine3, Chef, Puppet, SaltStack and Ansible

Published in: Technology
  • Be the first to comment

CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14

  1. 1. Сравнение систем управления конфигурациями CFEngine3, Puppet, Chef, SaltStack, Ansible
  2. 2. Что такое CM-системы? Централизованное, формализованное и согласованное управление большими группами устройств (до сотен и тысяч) для обеспечения необходимых процессов в инфраструктуре. Управление состояниями инфраструктуры, состоящей из большого числа компьютеров и других устройств, поддерживающее версионность и переключение между этими состояниями.
  3. 3. Общая схема работы CM-инструмента Repository System Input Translation agent Profile Profile Profile Profile Managed device (Deployment agent) Managed device (Deployment agent) Managed device (Deployment agent)
  4. 4. История появления CM-инструментов 1. CFEngine (Mark Burgess), 1993 2. LCFG (Perl), 1994 3. ISConf, PIKT, STAF, 1997-1998 4. CFEngine2 (Convergence to desired state), 2002 5. BCfg (Python), 2002 6. Puppet, 2005 7. Chef (idempotence, flow control), 2009 8. CFEngine3 (Theory of promises), 2009 9. SaltStack (ZeroMQ), 2011 10. Ansible (CM, adhoc, deployment)
  5. 5. Как мы сравнивали CM-инструменты? 1. Свойства спецификации ввода 1. Язык описаний 2. Доступные механизмы абстракции 3. Поддержка модульности 4. Возможность управления отношениями между узлами 2. Свойства процесса внедрения 1. Масштабируемость 2. Архитектура внедрения 3. Поддержка платформ 3. Свойства управления спецификациями 1. Удобство 2. Версионность 3. Документация 4. Интеграция с окружением 5. Права доступа 4. Поддержка продукта 1. Доступная документация 2. Коммерческая поддержка 3. Сообщество 4. Зрелость продукта
  6. 6. Какие CM-инструменты мы сравнивали? 1.CFEngine 3.0.4, 3.5.2 2.Puppet 2.7.* 3.Opscode Chef 11.6.0 4.SaltStack 2014.1.0 5.Ansible 1.5 CM-инструментыCM-инструментыCM-инструменты
  7. 7. Свойства языка ввода спецификаций CM-инструмент Декларативный/ императивный DSL DSL использует язык/стандарт Наличие Web- интерфейса СF Engine 3 Декларативный Свой Да, в платной версии Puppet Декларативный/Импер ативные элементы Свой/Ruby Да Chef Императивный/ Декларативные элементы Ruby (в чистом виде) Да, только управление рецептами/кукбуками Salt Декларативный/импер ативные элементы YAML/Python Да, пока сырая версия Ansible Декларативный/импер ативные элементы YAML Да, только в платной версии Ansible Tower
  8. 8. Возможные механизмы абстракции DSL A. Управление требованиями SLA к системе (например: «сконфигурировать достаточно почтовых серверов, чтобы обеспечить время SMTP-отклика N ms») B. Управление требованиями к ролям (классам) инстансов (например: «сконфигурировать N подходящих машин в качестве почтовых серверов») C. Управление требованиями к инстансам, независимо от их конкретной реализации (например: «сконфигурировать машины X,Y,Z как почтовые серверы»). D. Управление требованиями к конкретным реализациям инстансов (например: «Создать/заменить следующие строчки в sendmail.cf на машинах X,Y,Z») E. Управление конфигурационными файлами (например: «положить конфигурационный файл sendmail.cf на сервер X») F. Управление двоичными образами конфигураций («залить образ виртуальной машины на сервер X»)
  9. 9. Возможные механизмы абстракции DSL СМ-инструмент Возможные уровни абстракции CFEngine 3 C, D, E Puppet С, D, E Chef C, D, E SaltStack C, D, E Ansible C, D, E
  10. 10. Механизмы поддержки модульности A. Статически описанные группы (Static) B. Группы сформированны е по запросу (Query based) C. Иерархические группы (Hierarchical) СМ- инструмент Механизмы поддержки модульности Возможность создания модулей 3 сторонами CFEngine 3 A,B,C Да Puppet A,B,C Да Chef A,B Да SaltStack A,B Да Ansible A Да
  11. 11. Механизмы моделирования отношений. Детальность. A. Инстанс-инстанс. Примером такого отношения является приведенный выше пример зависимости между инстансом сервера DNS и его клиентов. B. Параметр-параметр. Примером такой зависимости является, например, CNAME-запись, которая требует обязательного наличия соотвествующей A- записи в DNS. C. Параметр-инстанс. Примером такой зависимости может быть зависимость mail-сервера от наличия MX-записи в DNS.
  12. 12. Механизмы моделирования отношений: Арность, Ограничения Арность A. One-to-one B. One-to-many C. Many-to-many Ограничения A. Ограничение с проверкой условия. B. «Мягкое» ограничение. Одно из ряда. СМ- инструмент Детальность Арность Ограничения CFEngine 3 A, B, C A, B, C B Puppet A, B, C B, C A Chef A, B, C B, C A SaltStack A, B, C B, C A Ansible Не поддержвает Не поддержвает Не поддержвает
  13. 13. Свойства процесса внедрения. СМ- инструмент Масштабируе мость Deployment architecture Способ доставки Platforms CFEngine 3  10000 узлов Stronglydistributed Pull, Push *BSD, AIX, HP-UX, Linux, Mac OS X, Solaris, Windows Puppet Есть инсталляции 100k узлов Centralizedor weakly distributed Push, Pull *BSD, AIX, HP-UX, Linux, Mac OS X, Solaris, Windows Chef > 10000, заявлено до 50000 Centralizedor weakly distributed Pull, Push *BSD, Linux, Mac OS X, Solaris, Windows SaltStack No info Centralizedor weakly distributed Pull *BSD, AIX, HP-UX, Linux, Mac OS X, Solaris, Windows Ansible  100 Centralized Push *BSD, AIX, HP-UX, Linux, Mac OS X, Solaris
  14. 14. Управление спецификациями. СМ- инструмент Простота Тесты Мониторинг Версион- ность репозиторий Докумен- тирование Окружения Права CFEngine 3 Сложно Dry run Встроен Внешний Структ. Runtime Path-based Puppet Средне Dry run, staging/testing Интеграция с внешним Внешний Свободная и структ. Runtime, database Path-based Chef Сложно DevOps Dry run, staging/testing Интеграция с внешним Встроенный и внешний Свободная и структ. Runtime, database Path-based SaltStack Средне Dry run Встроен с 0.15.0 Внешний Свободная Runtime, database Встроенный ACL Ansible Просто Dry run Интеграция с внешним Внешний Свободная Runtime Нет
  15. 15. Поддержка продукта. СМ- инструм ент Освоение Внедрение Документация Коммерч. поддержка Сообщество Зрелость CFEngine 3 2 3 Полная документация, туториал, справка Есть 3 5 Puppet 3 4 Полная документация, туториал, справка Есть 5 4 Chef 2 3 Полная документация, туториал, справка Есть 5 5 SaltStack 4 3 Полная документация, справка Есть 3 3 Ansible 5 5 Полная документация, справка Есть 3 3
  16. 16. Выводы Все системы достаточно хороши, но приспособлены немного для разного. 1) Если у вас есть ограничения по мощности машин и/или по коннективити – однозначно CFEngine 2) Если вы Ruby-developer – ваш выбор Chef 3) Если вы питонщик, то SaltStack понравится вам больше. 4) Если вы системный инженер/администратор и только начинаете осваивать СM- инструменты, попробуйте Ansible 5) Puppet имеет в своих списках внедрения ОГРОМНЫЕ (HUGE!) инфраструктуры. Мы попробовали все системы в реальных конфигурациях, поэтому можем помочь вам с тем, как определиться. Да и вообще, написать все скрипты .
  17. 17. С вами был Сергей Житинский, CEO, Git in Sky sergey@gitinsky.ru А о конкретных кейсах внедрения расскажет главный инженер Git in Sky Александр Чистяков
  18. 18. Краткий обзор CM-систем с высоты 10000 метров § Что-то большое и сложное, за день не облететь § Кажется, в инфраструктуре есть сервер § Раз есть сервер — значит, есть и клиенты § Знакомо, не правда ли? § CM-система — это сервер и клиенты (агенты)
  19. 19. Кстати, как называется конференция? § Мы еще ничем не начали управлять, § А у нас уже прибавилось точек отказа! § Кстати, сколько их теперь? § Рассмотрим, например, архитектуру Chef-сервер § (Это старая диаграмма, сейчас квадратиков еще больше)
  20. 20. Мы же обещали кейсы! Не беспокойтесь, сейчас всё будет § Сначала я познакомился с Puppet, и это было довольно давно § Сейчас мы тоже работаем с Puppet § Puppet — он как Windows, стремится быть умнее своего пользователя § Ключевые слова: RHEL, enterprise § В 2014 году нам это уже не мешает (потому что современный Puppet это такой почти Chef)
  21. 21. Chef: эта музыка может быть вечной § Chef — это очень большой и не очень простой стек технологий § К счастью, он очень гибкий § К несчастью, из него могут застрелиться даже его создатели § Про Chef-сервер я уже говорил § Безусловные плюсы: инфраструктура тестирования (от юнит-тестов до интеграционных), система управления зависимостями
  22. 22. Salt: альтернативная кулинария § Salt начинался как parallel execution tool § Два других важных преимущества — очень отзывчивое сообщество и простота (сервер - один процесс, описание на YAML, старый добрый Python в качестве языка ядра системы) § Пытается догнать Chef и, в конце концов, догонит § Пока не догнал — используем с удовольствием, рекомендуем и внедряем клиентам
  23. 23. Ansible: серебряной пули нет § Для автора Ansible это была уже вторая попытка § Простота и легкость использования § Очень большое удобство для решения повседневных задач § Нет необходимости в сервере § Нет необходимости в агенте - «сервер» и клиент общаются по SSH, нужен только интепрертатор Python § ansible-pull
  24. 24. Обратно на 10000 метров § Прогресс не стоит на месте: serverless Chef, serverless Puppet, serverless Salt § Конкуренция идет: производители с удовольствием копируют друг у друга § Пользователь пока выигрывает!
  25. 25. Подведение итогов и награждение § Спасибо за внимание! § Мы готовы отвечать на вопросы § С вами были Сергей Житинский и Александр Чистяков § sergey@gitinsky.com § alex@gitinsky.com § http://gitinsky.com, http://meetup.com/DevOps-40

×