saltstack vs chef, happydev 2013

Post on 29-Nov-2014

1.681 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

My talk on SaltStack versus Chef on HappyDev 2013, Omsk

TRANSCRIPT

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

top related