ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
SaltStack vs Chef, HappyDev 2013
1. Соль как средство от боли:
SaltStack и его отличия от Chef
(c) Alexander Chistyakov,
Senior Cloud Engineer, Git in Sky
2. Докладчик
DevOps, что бы это ни значило
●
Ко-фаундер митапа DevOps-40
●
^ шутят ли в Сибири шутки про
смузи и коворкинг?
●
Ведущий (куда?) инженер
компании Git in Sky
●
7. Ущипните меня, я сплю!
Никто не привез доклад про
Chef? Как такое возможно!
●
Chef – это такой “старший брат”,
на которого я буду постоянно
оглядываться
●
^ 1.5 с лишним года...
●
8. Как это работает?
Любая* система управления
конфигурацией выглядит как:
●
Сервер – хранилище шаблонов
и правил генерации
●
Клиент – активный агент,
применяющий правила
●
*не любая (chef-solo, etc)
●
12. Как установить клиент?
“Однострочники” и там, и там
●
Регистрация на сервере
●
В SaltStack:
●
salt-key -L – список ключей
●
salt-key -A – подтверждение
●
В Chef не сложнее
●
13. Как выглядит клиент?
●
В Chef (это какой-то баг):
●
В SaltStack:
один процесс, ~30m RES
●
Клиент Chef лучше не
запускать как сервис
●
14. Общение сервера и клиента
Chef:
●
REST API на сервере
●
Клиенты ходят по HTTP,
инициируют коммуникацию
сами
●
Salt – все иначе
●
15. Клиент и сервер в Salt
Salt начинался как parallel
execution tool
●
Клиент всегда соединен с
сервером через 0MQ
●
Коммуникацию всегда
инициирует сервер
●
16. Parallel execution
В Chef тоже возможно сделать
●
Но очень, очень неприятно
●
Через SSH – клиенты должны
быть доступны
●
Символические имена - DNS
●
Через рубишный SSH
●
^ А он очень плох
●
17. Как описать конфигурацию
В Chef – свой DSL поверх
обычного Ruby
●
Исполнить Chef-рецепты без
Ruby на клиенте нельзя!
●
В Chef сто разных способов
связать ноду с конфигом
●
^ Роль, рецепт, атрибуты
●
18. Как описать конфигурацию
В SaltStack – DSL поверх YAML
●
На практике без вставок на
Python не обойтись
●
19. Как управлять конфигурацией
В Chef – команда knife со
специальной ноды (в любом
месте)
●
В Salt – управление только с
сервера командой salt:
●
salt '*' state.highstate
●
20. Как выглядит конфигурация
В Salt:
●
/srv/salt/pillar – данные
●
/srv/salt/states – стейты
●
Данные – это тоже YAML,
который описывает
(внезапно) данные
●
22. Как выглядят стейты
●
states/ntp/init.sls:
ntp:
<- имя реализации стейта
pkg:
<- имя стейта
- installed <- функция стейта
service:
- running
- enable: True
- require:
- pkg: ntp <- атрибут функции стейта
23. SaltStack лучше Chef?
Пока что я почти все время
хвалил SaltStack и ругал Chef
●
Но я не назвал доклад “Salt как
средство от Chef”
●
Если Salt во всем лучше, то
почему он не вытеснит
Chef?
●
24. Светлая сторона Chef
Кукбуки есть для решения
любой задачи
●
Внедрений гораздо больше
●
Процесс управления кукбуками
построен гораздо лучше
●
Есть юнит-тестирование
●
25. Управление кукбуками в Chef
Центральный репозиторий
●
knife cookbook site download
●
Другие репы – librarian-chef
●
^ Рубисты – это такой bundler
●
Ничего этого в Salt нет!
●
Кроме центральной репы
●
26. Темная сторона Salt
Проект очень молодой, в
документации есть не все
●
^ Глава про юнит-тестирование
состоит только из заголовка
●
Есть дружелюбный форум
●
С большим трафиком
●
27. Серебряной пули нет!
Chef – большие проекты,
выделенная роль “инженера по
кукбукам”, юнит-тестирование
кукбуков
●
Salt – небольшие проекты,
скорость, простота, ad-hoc
выполнение
●