Соль как средство от боли:
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
●

SaltStack vs Chef, HappyDev 2013

  • 1.
    Соль как средствоот боли: SaltStack и его отличия от Chef (c) Alexander Chistyakov, Senior Cloud Engineer, Git in Sky
  • 2.
    Докладчик DevOps, что быэто ни значило ● Ко-фаундер митапа DevOps-40 ● ^ шутят ли в Сибири шутки про смузи и коворкинг? ● Ведущий (куда?) инженер компании Git in Sky ●
  • 3.
    Слушатели Разрабатываете под веб? ● Пишетекод? ● Придумываете архитектуру? ● Тащите в проект MongoDB? ● Эксплуатируете веб-проект? ● Проклинаете MongoDB? ●
  • 4.
    Кто же такиеDevOps'ы? Сильные и смелые люди ● Которые борятся с хаосом каждый день ●
  • 5.
    Как бороться схаосом? Выкиньте MongoDB ● Автоматизируйте! ● Развертывание окружений ● Генерацию конфигов ● Запуск сервисов ● Мониторинг ●
  • 6.
    Как автоматизировать? Есть специальныесредства: ● CFEngine ● Puppet ● Chef ● SaltStack (http://saltstack.org) ● Ansible ● ... ●
  • 7.
    Ущипните меня, ясплю! Никто не привез доклад про Chef? Как такое возможно! ● Chef – это такой “старший брат”, на которого я буду постоянно оглядываться ● ^ 1.5 с лишним года... ●
  • 8.
    Как это работает? Любая*система управления конфигурацией выглядит как: ● Сервер – хранилище шаблонов и правил генерации ● Клиент – активный агент, применяющий правила ● *не любая (chef-solo, etc) ●
  • 9.
    Словарик Chef SaltStack ● “cookbook” – “state” ● “server” –“master” ● “node” – “minion” ● “recipe” – “module” ● knife – salt ● знание – сила! ●
  • 10.
    Как развернуть сервер? ● ● SaltStack: wget-O - http://bootstrap.saltstack.org | sudo sh -s -- -M Chef 0.10.x: ● Лучше не знать ● Chef 0.11.x: ● Скачать .deb-пакет ● Поставить, вызвать скрипт ●
  • 11.
    Как выглядит сервер? ● SaltStack: ● /usr/bin/python/usr/bin/salt-master (RES 26m*7 процессов) Chef: ● RabbitMQ, Solr, сервис на Erlang, сервис на Ruby, PostgreSQL ● 710m в общей сложности ●
  • 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, который описывает (внезапно) данные ●
  • 21.
    Как выглядят стейты ● states/top.sls: base: '*': -ntp 'group1-*': - apt - platform 'group2-*': - apt.dev - platform - mysql - mongo <- к чему применять <- что применять
  • 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 выполнение ●
  • 28.
    Выводы Рассмотрите возможность использования SaltStack ● Особенно,если раньше не использовали ничего ● ^ тем более рассмотрите ●
  • 29.
    Спасибо за внимание! Вопросы? ● Свами был: ● Александр Чистяков, инженер, Git in Sky, координатор, DevOps-40 ●