saltstack vs chef, happydev 2013

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

Upload: alexander-chistyakov

Post on 29-Nov-2014

1.684 views

Category:

Technology


4 download

DESCRIPTION

My talk on SaltStack versus Chef on HappyDev 2013, Omsk

TRANSCRIPT

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