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