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.

SaltStack vs Chef, HappyDev 2013

2,061 views

Published on

My talk on SaltStack versus Chef on HappyDev 2013, Omsk

Published in: Technology

SaltStack vs Chef, HappyDev 2013

  1. 1. Соль как средство от боли: SaltStack и его отличия от Chef (c) Alexander Chistyakov, Senior Cloud Engineer, Git in Sky
  2. 2. Докладчик DevOps, что бы это ни значило ● Ко-фаундер митапа DevOps-40 ● ^ шутят ли в Сибири шутки про смузи и коворкинг? ● Ведущий (куда?) инженер компании Git in Sky ●
  3. 3. Слушатели Разрабатываете под веб? ● Пишете код? ● Придумываете архитектуру? ● Тащите в проект MongoDB? ● Эксплуатируете веб-проект? ● Проклинаете MongoDB? ●
  4. 4. Кто же такие DevOps'ы? Сильные и смелые люди ● Которые борятся с хаосом каждый день ●
  5. 5. Как бороться с хаосом? Выкиньте MongoDB ● Автоматизируйте! ● Развертывание окружений ● Генерацию конфигов ● Запуск сервисов ● Мониторинг ●
  6. 6. Как автоматизировать? Есть специальные средства: ● CFEngine ● Puppet ● Chef ● SaltStack (http://saltstack.org) ● Ansible ● ... ●
  7. 7. Ущипните меня, я сплю! Никто не привез доклад про Chef? Как такое возможно! ● Chef – это такой “старший брат”, на которого я буду постоянно оглядываться ● ^ 1.5 с лишним года... ●
  8. 8. Как это работает? Любая* система управления конфигурацией выглядит как: ● Сервер – хранилище шаблонов и правил генерации ● Клиент – активный агент, применяющий правила ● *не любая (chef-solo, etc) ●
  9. 9. Словарик Chef SaltStack ● “cookbook” – “state” ● “server” – “master” ● “node” – “minion” ● “recipe” – “module” ● knife – salt ● знание – сила! ●
  10. 10. Как развернуть сервер? ● ● SaltStack: wget -O - http://bootstrap.saltstack.org | sudo sh -s -- -M Chef 0.10.x: ● Лучше не знать ● Chef 0.11.x: ● Скачать .deb-пакет ● Поставить, вызвать скрипт ●
  11. 11. Как выглядит сервер? ● SaltStack: ● /usr/bin/python /usr/bin/salt-master (RES 26m*7 процессов) Chef: ● RabbitMQ, Solr, сервис на Erlang, сервис на Ruby, PostgreSQL ● 710m в общей сложности ●
  12. 12. Как установить клиент? “Однострочники” и там, и там ● Регистрация на сервере ● В SaltStack: ● salt-key -L – список ключей ● salt-key -A – подтверждение ● В Chef не сложнее ●
  13. 13. Как выглядит клиент? ● В Chef (это какой-то баг): ● В SaltStack: один процесс, ~30m RES ● Клиент Chef лучше не запускать как сервис ●
  14. 14. Общение сервера и клиента Chef: ● REST API на сервере ● Клиенты ходят по HTTP, инициируют коммуникацию сами ● Salt – все иначе ●
  15. 15. Клиент и сервер в Salt Salt начинался как parallel execution tool ● Клиент всегда соединен с сервером через 0MQ ● Коммуникацию всегда инициирует сервер ●
  16. 16. Parallel execution В Chef тоже возможно сделать ● Но очень, очень неприятно ● Через SSH – клиенты должны быть доступны ● Символические имена - DNS ● Через рубишный SSH ● ^ А он очень плох ●
  17. 17. Как описать конфигурацию В Chef – свой DSL поверх обычного Ruby ● Исполнить Chef-рецепты без Ruby на клиенте нельзя! ● В Chef сто разных способов связать ноду с конфигом ● ^ Роль, рецепт, атрибуты ●
  18. 18. Как описать конфигурацию В SaltStack – DSL поверх YAML ● На практике без вставок на Python не обойтись ●
  19. 19. Как управлять конфигурацией В Chef – команда knife со специальной ноды (в любом месте) ● В Salt – управление только с сервера командой salt: ● salt '*' state.highstate ●
  20. 20. Как выглядит конфигурация В Salt: ● /srv/salt/pillar – данные ● /srv/salt/states – стейты ● Данные – это тоже YAML, который описывает (внезапно) данные ●
  21. 21. Как выглядят стейты ● states/top.sls: base: '*': - ntp 'group1-*': - apt - platform 'group2-*': - apt.dev - platform - mysql - mongo <- к чему применять <- что применять
  22. 22. Как выглядят стейты ● states/ntp/init.sls: ntp: <- имя реализации стейта pkg: <- имя стейта - installed <- функция стейта service: - running - enable: True - require: - pkg: ntp <- атрибут функции стейта
  23. 23. SaltStack лучше Chef? Пока что я почти все время хвалил SaltStack и ругал Chef ● Но я не назвал доклад “Salt как средство от Chef” ● Если Salt во всем лучше, то почему он не вытеснит Chef? ●
  24. 24. Светлая сторона Chef Кукбуки есть для решения любой задачи ● Внедрений гораздо больше ● Процесс управления кукбуками построен гораздо лучше ● Есть юнит-тестирование ●
  25. 25. Управление кукбуками в Chef Центральный репозиторий ● knife cookbook site download ● Другие репы – librarian-chef ● ^ Рубисты – это такой bundler ● Ничего этого в Salt нет! ● Кроме центральной репы ●
  26. 26. Темная сторона Salt Проект очень молодой, в документации есть не все ● ^ Глава про юнит-тестирование состоит только из заголовка ● Есть дружелюбный форум ● С большим трафиком ●
  27. 27. Серебряной пули нет! Chef – большие проекты, выделенная роль “инженера по кукбукам”, юнит-тестирование кукбуков ● Salt – небольшие проекты, скорость, простота, ad-hoc выполнение ●
  28. 28. Выводы Рассмотрите возможность использования SaltStack ● Особенно, если раньше не использовали ничего ● ^ тем более рассмотрите ●
  29. 29. Спасибо за внимание! Вопросы? ● С вами был: ● Александр Чистяков, инженер, Git in Sky, координатор, DevOps-40 ●

×