SaltStack vs Chef, HappyDev 2013

29
Соль как средство от боли: SaltStack и его отличия от Chef (c) Alexander Chistyakov, Senior Cloud Engineer, Git in Sky

description

My talk on SaltStack versus Chef on HappyDev 2013, Omsk

Transcript of SaltStack vs Chef, HappyDev 2013

Page 1: SaltStack vs Chef, HappyDev 2013

Соль как средство от боли:SaltStack и его отличия от Chef

(c) Alexander Chistyakov,Senior Cloud Engineer, Git in Sky

Page 2: SaltStack vs Chef, HappyDev 2013

Докладчик● DevOps, что бы это ни значило● Ко-фаундер митапа DevOps-40● ^ шутят ли в Сибири шутки про смузи и коворкинг?

● Ведущий (куда?) инженер компании Git in Sky

Page 3: SaltStack vs Chef, HappyDev 2013

Слушатели● Разрабатываете под веб?● Пишете код?● Придумываете архитектуру?● Тащите в проект MongoDB?● Эксплуатируете веб-проект?● Проклинаете MongoDB?

Page 4: SaltStack vs Chef, HappyDev 2013

Кто же такие DevOps'ы?● Сильные и смелые люди● Которые борятся с хаосом каждый день

Page 5: SaltStack vs Chef, HappyDev 2013

Как бороться с хаосом?● Выкиньте MongoDB● Автоматизируйте!● Развертывание окружений● Генерацию конфигов● Запуск сервисов● Мониторинг

Page 6: SaltStack vs Chef, HappyDev 2013

Как автоматизировать?● Есть специальные средства:● CFEngine● Puppet● Chef● SaltStack (http://saltstack.org)● Ansible● ...

Page 7: SaltStack vs Chef, HappyDev 2013

Ущипните меня, я сплю!● Никто не привез доклад про Chef? Как такое возможно!

● Chef – это такой “старший брат”, на которого я буду постоянно оглядываться

● ^ 1.5 с лишним года...

Page 8: SaltStack vs Chef, HappyDev 2013

Как это работает?● Любая* система управления конфигурацией выглядит как:

● Сервер – хранилище шаблонов и правил генерации

● Клиент – активный агент, применяющий правила

● *не любая (chef-solo, etc)

Page 9: SaltStack vs Chef, HappyDev 2013

Словарик● Chef SaltStack● “cookbook” – “state”● “server” – “master”● “node” – “minion”● “recipe” – “module”● knife – salt● знание – сила!

Page 10: SaltStack vs Chef, HappyDev 2013

Как развернуть сервер?● SaltStack:● wget -O - http://bootstrap.saltstack.org | sudo sh -s -- -M

● Chef 0.10.x:● Лучше не знать● Chef 0.11.x:● Скачать .deb-пакет● Поставить, вызвать скрипт

Page 11: SaltStack vs Chef, HappyDev 2013

Как выглядит сервер?● SaltStack:● /usr/bin/python /usr/bin/salt-master (RES 26m*7 процессов)

● Chef:● RabbitMQ, Solr, сервис на Erlang, сервис на Ruby, PostgreSQL

● 710m в общей сложности

Page 12: SaltStack vs Chef, HappyDev 2013

Как установить клиент?● “Однострочники” и там, и там● Регистрация на сервере● В SaltStack:● salt-key -L – список ключей● salt-key -A – подтверждение● В Chef не сложнее

Page 13: SaltStack vs Chef, HappyDev 2013

Как выглядит клиент?● В Chef (это какой-то баг):

● В SaltStack: один процесс, ~30m RES

● Клиент Chef лучше не запускать как сервис

Page 14: SaltStack vs Chef, HappyDev 2013

Общение сервера и клиента● Chef:● REST API на сервере● Клиенты ходят по HTTP, инициируют коммуникацию сами

● Salt – все иначе

Page 15: SaltStack vs Chef, HappyDev 2013

Клиент и сервер в Salt● Salt начинался как parallel execution tool

● Клиент всегда соединен с сервером через 0MQ

● Коммуникацию всегда инициирует сервер

Page 16: SaltStack vs Chef, HappyDev 2013

Parallel execution● В Chef тоже возможно сделать● Но очень, очень неприятно● Через SSH – клиенты должны быть доступны

● Символические имена - DNS● Через рубишный SSH● ^ А он очень плох

Page 17: SaltStack vs Chef, HappyDev 2013

Как описать конфигурацию● В Chef – свой DSL поверх обычного Ruby

● Исполнить Chef-рецепты без Ruby на клиенте нельзя!

● В Chef сто разных способов связать ноду с конфигом

● ^ Роль, рецепт, атрибуты

Page 18: SaltStack vs Chef, HappyDev 2013

Как описать конфигурацию● В SaltStack – DSL поверх YAML● На практике без вставок на Python не обойтись

Page 19: SaltStack vs Chef, HappyDev 2013

Как управлять конфигурацией● В Chef – команда knife со специальной ноды (в любом месте)

● В Salt – управление только с сервера командой salt:

● salt '*' state.highstate

Page 20: SaltStack vs Chef, HappyDev 2013

Как выглядит конфигурация● В Salt:● /srv/salt/pillar – данные ● /srv/salt/states – стейты ● Данные – это тоже YAML, который описывает (внезапно) данные

Page 21: SaltStack vs Chef, HappyDev 2013

Как выглядят стейты● states/top.sls:

base: '*': <- к чему применять - ntp <- что применять 'group1-*': - apt - platform 'group2-*': - apt.dev - platform - mysql - mongo

Page 22: SaltStack vs Chef, HappyDev 2013

Как выглядят стейты● states/ntp/init.sls:

ntp: <- имя реализации стейта pkg: <- имя стейта - installed <- функция стейта service: - running - enable: True - require: - pkg: ntp <- атрибут функции стейта

Page 23: SaltStack vs Chef, HappyDev 2013

SaltStack лучше Chef?● Пока что я почти все время хвалил SaltStack и ругал Chef

● Но я не назвал доклад “Salt как средство от Chef”

● Если Salt во всем лучше, то почему он не вытеснит Chef?

Page 24: SaltStack vs Chef, HappyDev 2013

Светлая сторона Chef● Кукбуки есть для решения любой задачи

● Внедрений гораздо больше● Процесс управления кукбуками построен гораздо лучше

● Есть юнит-тестирование

Page 25: SaltStack vs Chef, HappyDev 2013

Управление кукбуками в Chef● Центральный репозиторий● knife cookbook site download● Другие репы – librarian-chef● ^ Рубисты – это такой bundler● Ничего этого в Salt нет!● Кроме центральной репы

Page 26: SaltStack vs Chef, HappyDev 2013

Темная сторона Salt● Проект очень молодой, в документации есть не все

● ^ Глава про юнит-тестирование состоит только из заголовка

● Есть дружелюбный форум● С большим трафиком

Page 27: SaltStack vs Chef, HappyDev 2013

Серебряной пули нет!● Chef – большие проекты, выделенная роль “инженера по кукбукам”, юнит-тестирование кукбуков

● Salt – небольшие проекты, скорость, простота, ad-hoc выполнение

Page 28: SaltStack vs Chef, HappyDev 2013

Выводы● Рассмотрите возможность использования SaltStack

● Особенно, если раньше не использовали ничего

● ^ тем более рассмотрите

Page 29: SaltStack vs Chef, HappyDev 2013

Спасибо за внимание!● Вопросы?● С вами был:● Александр Чистяков, инженер, Git in Sky, координатор, DevOps-40