Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Соль как средство от боли: SaltStack и его отличия от Chef

HappyDev'13
December 07, 2013

Соль как средство от боли: SaltStack и его отличия от Chef

Александр Чистяков

HappyDev'13

December 07, 2013
Tweet

More Decks by HappyDev'13

Other Decks in Programming

Transcript

  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. Ущипните меня, я сплю! • Никто не привез доклад про

    Chef? Как такое возможно! • Chef – это такой “старший брат”, на которого я буду постоянно оглядываться • ^ 1.5 с лишним года...
  7. Как это работает? • Любая* система управления конфигурацией выглядит как:

    • Сервер – хранилище шаблонов и правил генерации • Клиент – активный агент, применяющий правила • *не любая (chef-solo, etc)
  8. Словарик • Chef SaltStack • “cookbook” – “state” • “server”

    – “master” • “node” – “minion” • “recipe” – “module” • knife – salt • знание – сила!
  9. Как развернуть сервер? • SaltStack: • wget -O - http://bootstrap.saltstack.org

    | sudo sh -s -- -M • Chef 0.10.x: • Лучше не знать • Chef 0.11.x: • Скачать .deb-пакет • Поставить, вызвать скрипт
  10. Как выглядит сервер? • SaltStack: • /usr/bin/python /usr/bin/salt-master (RES 26m*7

    процессов) • Chef: • RabbitMQ, Solr, сервис на Erlang, сервис на Ruby, PostgreSQL • 710m в общей сложности
  11. Как установить клиент? • “Однострочники” и там, и там •

    Регистрация на сервере • В SaltStack: • salt-key -L – список ключей • salt-key -A – подтверждение • В Chef не сложнее
  12. Как выглядит клиент? • В Chef (это какой-то баг): •

    • В SaltStack: один процесс, ~30m RES • Клиент Chef лучше не запускать как сервис
  13. Общение сервера и клиента • Chef: • REST API на

    сервере • Клиенты ходят по HTTP, инициируют коммуникацию сами • Salt – все иначе
  14. Клиент и сервер в Salt • Salt начинался как parallel

    execution tool • Клиент всегда соединен с сервером через 0MQ • Коммуникацию всегда инициирует сервер
  15. Parallel execution • В Chef тоже возможно сделать • Но

    очень, очень неприятно • Через SSH – клиенты должны быть доступны • Символические имена - DNS • Через рубишный SSH • ^ А он очень плох
  16. Как описать конфигурацию • В Chef – свой DSL поверх

    обычного Ruby • Исполнить Chef-рецепты без Ruby на клиенте нельзя! • В Chef сто разных способов связать ноду с конфигом • ^ Роль, рецепт, атрибуты
  17. Как описать конфигурацию • В SaltStack – DSL поверх YAML

    • На практике без вставок на Python не обойтись
  18. Как управлять конфигурацией • В Chef – команда knife со

    специальной ноды (в любом месте) • В Salt – управление только с сервера командой salt: • salt '*' state.highstate
  19. Как выглядит конфигурация • В Salt: • /srv/salt/pillar – данные

    • /srv/salt/states – стейты • Данные – это тоже YAML, который описывает (внезапно) данные
  20. Как выглядят стейты • states/top.sls: base: '*': <- к чему

    применять - ntp <- что применять 'group1-*': - apt - platform 'group2-*': - apt.dev - platform - mysql - mongo
  21. Как выглядят стейты • states/ntp/init.sls: ntp: <- имя реализации стейта

    pkg: <- имя стейта - installed <- функция стейта service: - running - enable: True - require: - pkg: ntp <- атрибут функции стейта
  22. SaltStack лучше Chef? • Пока что я почти все время

    хвалил SaltStack и ругал Chef • Но я не назвал доклад “Salt как средство от Chef” • Если Salt во всем лучше, то почему он не вытеснит Chef?
  23. Светлая сторона Chef • Кукбуки есть для решения любой задачи

    • Внедрений гораздо больше • Процесс управления кукбуками построен гораздо лучше • Есть юнит-тестирование
  24. Управление кукбуками в Chef • Центральный репозиторий • knife cookbook

    site download • Другие репы – librarian-chef • ^ Рубисты – это такой bundler • Ничего этого в Salt нет! • Кроме центральной репы
  25. Темная сторона Salt • Проект очень молодой, в документации есть

    не все • ^ Глава про юнит-тестирование состоит только из заголовка • Есть дружелюбный форум • С большим трафиком
  26. Серебряной пули нет! • Chef – большие проекты, выделенная роль

    “инженера по кукбукам”, юнит-тестирование кукбуков • Salt – небольшие проекты, скорость, простота, ad-hoc выполнение
  27. Спасибо за внимание! • Вопросы? • С вами был: •

    Александр Чистяков, инженер, Git in Sky, координатор, DevOps-40