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 и его отли...
Search
HappyDev'13
December 07, 2013
Programming
0
350
Соль как средство от боли: SaltStack и его отличия от Chef
Александр Чистяков
HappyDev'13
December 07, 2013
Tweet
Share
More Decks by HappyDev'13
See All by HappyDev'13
Вводный доклад о процессах и ролях, требованиях и визуализации
happydev
0
210
Особенности разработки финансовых проектов
happydev
0
170
Domain Driven Design. Модель вместо требований
happydev
0
420
К черту менеджерские карго культы! Дайте нормальное ТЗ
happydev
0
210
Эволюция больших проектов. Опыт API Яндекс.Карт
happydev
1
440
Мастер класс «Управленческие поединки»
happydev
0
190
Лучшая client-side архитектура
happydev
1
280
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
happydev
0
570
Вводный доклад про SQL, NoSQL и других
happydev
0
280
Other Decks in Programming
See All in Programming
UPDATEがシステムを複雑にする? イミュータブルデータモデルのすすめ
shimomura
1
520
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
380
Bytecode Manipulation 으로 생산성 높이기
bigstark
1
200
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
270
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
3
320
実はすごいスピードで進化しているCSS
hayato_yokoyama
0
110
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
290
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
OpenNext + Hono on Cloudflare でイマドキWeb開発スタックを実現する
rokuosan
0
120
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
180
プロダクト開発でも使おう 関数のオーバーロード
yoiwamoto
0
140
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
490
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
24
1.7k
How STYLIGHT went responsive
nonsquared
100
5.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
900
Become a Pro
speakerdeck
PRO
28
5.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Building an army of robots
kneath
306
45k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
130
Done Done
chrislema
184
16k
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