Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Соль как средство от боли: SaltStack и его отличия от Chef
Search
HappyDev'13
December 07, 2013
Programming
0
320
Соль как средство от боли: SaltStack и его отличия от Chef
Александр Чистяков
HappyDev'13
December 07, 2013
Tweet
Share
More Decks by HappyDev'13
See All by HappyDev'13
Вводный доклад о процессах и ролях, требованиях и визуализации
happydev
0
180
Особенности разработки финансовых проектов
happydev
0
160
Domain Driven Design. Модель вместо требований
happydev
0
400
К черту менеджерские карго культы! Дайте нормальное ТЗ
happydev
0
180
Эволюция больших проектов. Опыт API Яндекс.Карт
happydev
1
380
Мастер класс «Управленческие поединки»
happydev
0
160
Лучшая client-side архитектура
happydev
1
250
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
happydev
0
520
Вводный доклад про SQL, NoSQL и других
happydev
0
230
Other Decks in Programming
See All in Programming
Long journey of Ruby standard library RubyKaigi 2024
andpad
2
150
RailsConf 2024: Riffing on Rails: sketch your way to better designed code
kaspth
0
200
TypeScriptで使いやすいOpenAPIの書き方
yukimochi_dwango
0
500
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
49
16k
Namespace, What and Why
tagomoris
3
620
TypeScriptのパフォーマンス改善
yajihum
12
4.9k
ソースコードを美しくたもつために ~コードレビューの認知限界を突破し、年間400リリースを達成する~
kotauchisunsun
1
150
CDKコントリビュートの最初の壁を越えよう! -簡単issueの見つけ方-
badmintoncryer
3
410
Fragment Composition of GraphQL
quramy
14
1.7k
株式会社ゼネテック
genetec
0
120
チーム立ち上げにAWSを活用したらClaudeさんに褒められた話
mkdev10
3
230
SIMD Parallel Programming with the Vector API
josepaumard
0
250
Featured
See All Featured
Web development in the modern age
philhawksworth
203
10k
A Philosophy of Restraint
colly
197
16k
In The Pink: A Labor of Love
frogandcode
138
21k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
81
44k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Faster Mobile Websites
deanohume
300
30k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
Typedesign – Prime Four
hannesfritz
36
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
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