SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Давайте познакомимся!
● Меня зовут Саша
● Я работаю главным инженером
● В компании Git in Sky
● Я немного знаю разные языки
программирования
● И умею немного администрировать
сайты
А вас как зовут?
● Вы веб-разработчики?
● У вас уже есть опыт
использования CM систем?
● Вам приходится управлять
инфраструктурой?
● Насколько она велика?
● Кстати, что значит понятие “велика”?
Возможная задача №1
● МНОГО серверов
● Их нужно БЫСТРО привести
к заданному виду
● Разные роли у разных машин
● Разные роли – это разные приложения
● Гетерогенные среды:
● Linux, FreeBSD, Solaris, ...
Возможная задача №2
● Описана эталонная конфигурация
● Разные окружения:
● development, testing
● staging, production
● Окружения различаются
размерами и свойствами
сервисов
Как можно решать эти задачи?
● Древний способ – скрипты на bash и пакеты
deb/RPM
● Современный – CM-системы:
● CFEngine
● Puppet, Chef
● Salt, Ansible
● Func, Babushka, Marelle
● Ansible создал автор Func
Чем плох древний способ?
● Никто не любит* писать скрипты на bash
● bash: плохо писать, плохо
читать, недекларативный,
неидемпотентный
● deb/RPM-пакеты это тоже
плохо (недекларативно, не
обеспечивается повторяемость)
*Я не люблю
Полезные свойства CM-систем
● bash-скрипты не торчат наружу
● Вместо – декларативный DSL
● Исполняется параллельно на
всех узлах
● Объекты предметной области -
иерархия (роли, модули, группы
узлов, атрибуты)
Модель предметной области
● Описание конфигурации:
● Описания установленных
пакетов
● Описания разрешенных и
запущенных сервисов
● Шаблоны конфигурационных файлов и
правила их генерации
● Среды, роли, узлы, параметры всего этого
Типичное устройство CM-систем
● Клиент-серверная архитектура
● “Толстый клиент”
● Много зависимостей
● Часто – eDSL на Ruby
● ^ (и сама система тоже)
● Pull-модель: клиенты
обращаются к серверу
Что нам не нравится?
● Клиент-серверная архитектура
● Нужно развернуть и поддерживать сервер
● Сервер потребляет ресурсы
● Необходимо обеспечить
безопасность сервера
● И его отказоустойчивость
Что еще плохо?
● “Толстый клиент”
● Нужно делать бутстреппинг узла при его
введении в инфраструктуру
● Работает не на любой
платформе
● При работе потребляет
ресурсы
Что еще плохо?
● Часто – eDSL на Ruby
● Я же на Python секции?
● Вы любите Ruby?
● eDSL сделан “поверх”
основного языка – декларативность не
навязывается на уровне DSL, можно писать
bash скрипты на основном языке
Что еще плохо?
● Pull-модель
● Мне кажется, это потеря
смысла:
● Зачем нужен командный
центр, который не имеет
возможности оперативного
управления?
Как же быть?
● Больше декларативности:
YAML
● Вернуть серверу возможность
управлять клиентами
● Может, убрать сервер?
● Кстати, может и толстые
клиенты тоже убрать?
И, наконец, о практике
● Salt – начинался как средство параллельного
исполнения
● Клиенты постоянно подключены к серверу
через ØMQ
● Эволюционировал в CM-систему
● С документацией на
1668 страниц
Чем хорош Salt?
● ОЧЕНЬ быстро развивается
● Уже сейчас предоставляет
много возможностей
● Сервер и клиент относительно
легковесны (в сравнении с Chef)
● Выполнение ad hoc команд сделано идеально
(в сравнении с чем угодно на Ruby)
● Отличная (!) поддержка сообществом
Чем плох Salt?
● Слишком быстро развивается
● Инфраструктура, в которой
нужны ad hoc команды -
источник проблем в будущем
● Русские читают документацию только в
критической ситуации, особенно, если ее
1668 страниц
Не расходитесь, это не всё!
● Порог вхождения:
● Минимален, это же Python и YAML
● Выразительность:
● Простые вещи делаются просто, вещи
посложнее – сложно (вместо YAML можно
описывать конфигурацию на Python, но будет
некрасиво)
● Кроссплатформенность: Windows, FreeBSD
Что еще умеет Salt
● Масштабироваться: Salt Syndic (репитер)
● Управлять частным облаком: Salt Virt
● Управлять публичным облаком: Salt Cloud
● Заменить собой cron: опция “schedule”
● Показывать статус инфраструктуры и
выполнять команды через веб-интерфейс:
Halite
Еще один претендент
● Ansible – вторая попытка
Michael DeHaan сделать CM-систему
● На управляемых узлах нужен только
интепретатор Python, никаких клиентов*
● Коммуникация между “сервером” и клиентами
по обычному SSH
*чуть позже мы вернемся к
вопросу о том, что такое “клиент”
Звучит очень круто!
● Почему никто не сделал
подобное раньше?
● Потому, что в Ruby нет
нормального быстрого SSH-клиента? :)
● Кстати, как я обеспечиваю безопасность
своего Ansible-сервера?
● Я привез его с собой в своем рюкзаке, он
отключен от сети
Работает еще более круто!
● Если мой Ansible-сервер в зале, что же
применяет конфигурацию на клиентах?
● Как применяет конфигурацию CM-система?
● Клиент скачивает файлы с сервера
● И применяет правила из них локально
● Постойте, я знаю много разных способов
передачи файлов с сервера клиенту!
● Некоторые из них даже “high load” :)
Сервер не нужен
● На каждом хосте по cron
работает команда ansible-pull
● Она забирает из git-репозитория
новую версию, если она есть
● И применяет ее локально
● Проблема курицы и яйца – как ansible-pull
попадет в cron первый раз?
● При помощи моего “сервера”
Нужен ли сервер?
● Пришлось пожертвовать
возможностями, которые
сервер предоставлял в
классических CM-системах:
● autodiscovery, обмен параметрами*
● Autodiscovery через CM сервер? Зачем?
● Для этого есть Serf, etcd, mDNS
*можно, но теперь это peer-to-peer связь
Другие свойства Ansible
● Порог вхождения:
● Еще ниже, чем у Salt
● Выразительность:
● Местный диалект YAML менее многословен,
чем у Salt
● Кросплатформенность:
● Разработчики знают такие платформы, о
которых даже я не знаю (DragonFly BSD)
Кросплатформенность
● Я использую Ansible под SmartOS:
● SmartOS работает с флешки, и каталоги
/usr/bin и /etc там недоступны на запись
● SmartOS – это Solaris, а не Linux, там SMF, а
не sysvinit, upstart или systemd
● При рестартах некоторая часть
конфигурации теряется
● Ansible отлично справляется со всем этим
Что плохо (и там, и там)?
● Выразительности YAML часто
недостаточно – не все сценарии есть
● Управление серверами императивно
● Скрипты “на bash” неизбежны
● Я писал state для Salt на Python
● Он был так же плох, как и на bash
Что ужасно (и там, и там)?
● Можно много спорить о необходимости
unit-тестирования
● Но механизмов для него нет ни в Salt, ни в
Ansible (в отличие от Chef)
● Управление модулями, их версиями и их
зависимостями – в зачаточном состоянии (нет
аналогов pip, Bundler или librarian-chef)
● Есть Ansible Galaxy (это как PyPI, но без
версий)
Great artists steal
● Open Source-системы могут пользоваться
идеями друг друга не боясь патентных
преследований
● Так появились “salt-ssh” и “Ansible Fireball”
● Последний благополучно умер, вместо
ZeroMQ-транспорта рекомендуется включать
в ansible.cfg SSH pipelining
● (но ansible-pull все равно быстрее)
(Chef-)сервер не нужен!
● Все пользуются идеями друг друга:
● В Salt есть salt-call (masterless)
● В Chef есть chef-solo
● Masterless Puppet тоже можно настроить
Выводы
● Конкуренция – двигатель прогресса
● Прогресс в области CM-систем пока еще не
остановился
● Python-based CM-системы молоды и бурно
развиваются
● Мы можем им помочь!
● 62
Спасибо за внимание!
● Пожалуйста, ваши вопросы!
● С вами был Александр Чистяков,
● Главный инженер Git in Sky
● http://twitter.com/noatbaksap
● alex@gitinsky.com
● http://gitinsky.com,
http://meetup.com/DevOps-40

Weitere ähnliche Inhalte

Was ist angesagt?

Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
Ontico
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
Badoo Development
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
drupalconf
 

Was ist angesagt? (19)

My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
Why we did not choose Hadoop
Why we did not choose HadoopWhy we did not choose Hadoop
Why we did not choose Hadoop
 
Performance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon SaranskPerformance engineering stories from #fdminicon Saransk
Performance engineering stories from #fdminicon Saransk
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
 
Юрий Насретдинов, Badoo
Юрий Насретдинов, BadooЮрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
 
Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?Docker & Puppet: как их скрестить и надо ли вам это?
Docker & Puppet: как их скрестить и надо ли вам это?
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 

Andere mochten auch

Управление рисками при эксплуатации ИТ-инфраструктуры
Управление рисками при эксплуатации ИТ-инфраструктурыУправление рисками при эксплуатации ИТ-инфраструктуры
Управление рисками при эксплуатации ИТ-инфраструктуры
Serguei Gitinsky
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
Daniel Podolsky
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Alex Chistyakov
 

Andere mochten auch (17)

My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016My talk from PgConf.Russia 2016
My talk from PgConf.Russia 2016
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016
 
My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016My talk on monitoring systems at RootConf 2016
My talk on monitoring systems at RootConf 2016
 
My talk at Linux Piter 2015
My talk at Linux Piter 2015My talk at Linux Piter 2015
My talk at Linux Piter 2015
 
My talk on using LVM thin provisioning from SPbLUG/DevOps-40 meetup 25.06.14
My talk on using LVM thin provisioning from SPbLUG/DevOps-40 meetup 25.06.14My talk on using LVM thin provisioning from SPbLUG/DevOps-40 meetup 25.06.14
My talk on using LVM thin provisioning from SPbLUG/DevOps-40 meetup 25.06.14
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Управление рисками при эксплуатации ИТ-инфраструктуры
Управление рисками при эксплуатации ИТ-инфраструктурыУправление рисками при эксплуатации ИТ-инфраструктуры
Управление рисками при эксплуатации ИТ-инфраструктуры
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
My talk at Linux Piter 2016
My talk at Linux Piter 2016My talk at Linux Piter 2016
My talk at Linux Piter 2016
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
 
Презентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в МинскеПрезентация про DTrace на ADDconf в Минске
Презентация про DTrace на ADDconf в Минске
 
Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFo
 

Ähnlich wie My talk on Salt and Ansible from DevConf 2014

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
Alex Chistyakov
 
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
Конференция разработчиков программного обеспечения SECON'2014
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
IT-Portfolio
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
Alex Chistyakov
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
Ontico
 

Ähnlich wie My talk on Salt and Ansible from DevConf 2014 (20)

Salt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsSalt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systems
 
Operden1
Operden1Operden1
Operden1
 
Ansible on a great Moscow DevOps CM battle
Ansible on a great Moscow DevOps CM battleAnsible on a great Moscow DevOps CM battle
Ansible on a great Moscow DevOps CM battle
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
 
Sivko
SivkoSivko
Sivko
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
SECON'2014 - Александр Чистяков - Сравнение современных средств управления ко...
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
GetDev.NET: Снова Эрланг
GetDev.NET: Снова ЭрлангGetDev.NET: Снова Эрланг
GetDev.NET: Снова Эрланг
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 

Mehr von Alex Chistyakov

Mehr von Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 

My talk on Salt and Ansible from DevConf 2014

  • 1.
  • 2. Давайте познакомимся! ● Меня зовут Саша ● Я работаю главным инженером ● В компании Git in Sky ● Я немного знаю разные языки программирования ● И умею немного администрировать сайты
  • 3. А вас как зовут? ● Вы веб-разработчики? ● У вас уже есть опыт использования CM систем? ● Вам приходится управлять инфраструктурой? ● Насколько она велика? ● Кстати, что значит понятие “велика”?
  • 4. Возможная задача №1 ● МНОГО серверов ● Их нужно БЫСТРО привести к заданному виду ● Разные роли у разных машин ● Разные роли – это разные приложения ● Гетерогенные среды: ● Linux, FreeBSD, Solaris, ...
  • 5. Возможная задача №2 ● Описана эталонная конфигурация ● Разные окружения: ● development, testing ● staging, production ● Окружения различаются размерами и свойствами сервисов
  • 6. Как можно решать эти задачи? ● Древний способ – скрипты на bash и пакеты deb/RPM ● Современный – CM-системы: ● CFEngine ● Puppet, Chef ● Salt, Ansible ● Func, Babushka, Marelle ● Ansible создал автор Func
  • 7. Чем плох древний способ? ● Никто не любит* писать скрипты на bash ● bash: плохо писать, плохо читать, недекларативный, неидемпотентный ● deb/RPM-пакеты это тоже плохо (недекларативно, не обеспечивается повторяемость) *Я не люблю
  • 8. Полезные свойства CM-систем ● bash-скрипты не торчат наружу ● Вместо – декларативный DSL ● Исполняется параллельно на всех узлах ● Объекты предметной области - иерархия (роли, модули, группы узлов, атрибуты)
  • 9. Модель предметной области ● Описание конфигурации: ● Описания установленных пакетов ● Описания разрешенных и запущенных сервисов ● Шаблоны конфигурационных файлов и правила их генерации ● Среды, роли, узлы, параметры всего этого
  • 10. Типичное устройство CM-систем ● Клиент-серверная архитектура ● “Толстый клиент” ● Много зависимостей ● Часто – eDSL на Ruby ● ^ (и сама система тоже) ● Pull-модель: клиенты обращаются к серверу
  • 11. Что нам не нравится? ● Клиент-серверная архитектура ● Нужно развернуть и поддерживать сервер ● Сервер потребляет ресурсы ● Необходимо обеспечить безопасность сервера ● И его отказоустойчивость
  • 12. Что еще плохо? ● “Толстый клиент” ● Нужно делать бутстреппинг узла при его введении в инфраструктуру ● Работает не на любой платформе ● При работе потребляет ресурсы
  • 13. Что еще плохо? ● Часто – eDSL на Ruby ● Я же на Python секции? ● Вы любите Ruby? ● eDSL сделан “поверх” основного языка – декларативность не навязывается на уровне DSL, можно писать bash скрипты на основном языке
  • 14. Что еще плохо? ● Pull-модель ● Мне кажется, это потеря смысла: ● Зачем нужен командный центр, который не имеет возможности оперативного управления?
  • 15. Как же быть? ● Больше декларативности: YAML ● Вернуть серверу возможность управлять клиентами ● Может, убрать сервер? ● Кстати, может и толстые клиенты тоже убрать?
  • 16. И, наконец, о практике ● Salt – начинался как средство параллельного исполнения ● Клиенты постоянно подключены к серверу через ØMQ ● Эволюционировал в CM-систему ● С документацией на 1668 страниц
  • 17. Чем хорош Salt? ● ОЧЕНЬ быстро развивается ● Уже сейчас предоставляет много возможностей ● Сервер и клиент относительно легковесны (в сравнении с Chef) ● Выполнение ad hoc команд сделано идеально (в сравнении с чем угодно на Ruby) ● Отличная (!) поддержка сообществом
  • 18. Чем плох Salt? ● Слишком быстро развивается ● Инфраструктура, в которой нужны ad hoc команды - источник проблем в будущем ● Русские читают документацию только в критической ситуации, особенно, если ее 1668 страниц
  • 19. Не расходитесь, это не всё! ● Порог вхождения: ● Минимален, это же Python и YAML ● Выразительность: ● Простые вещи делаются просто, вещи посложнее – сложно (вместо YAML можно описывать конфигурацию на Python, но будет некрасиво) ● Кроссплатформенность: Windows, FreeBSD
  • 20. Что еще умеет Salt ● Масштабироваться: Salt Syndic (репитер) ● Управлять частным облаком: Salt Virt ● Управлять публичным облаком: Salt Cloud ● Заменить собой cron: опция “schedule” ● Показывать статус инфраструктуры и выполнять команды через веб-интерфейс: Halite
  • 21. Еще один претендент ● Ansible – вторая попытка Michael DeHaan сделать CM-систему ● На управляемых узлах нужен только интепретатор Python, никаких клиентов* ● Коммуникация между “сервером” и клиентами по обычному SSH *чуть позже мы вернемся к вопросу о том, что такое “клиент”
  • 22. Звучит очень круто! ● Почему никто не сделал подобное раньше? ● Потому, что в Ruby нет нормального быстрого SSH-клиента? :) ● Кстати, как я обеспечиваю безопасность своего Ansible-сервера? ● Я привез его с собой в своем рюкзаке, он отключен от сети
  • 23. Работает еще более круто! ● Если мой Ansible-сервер в зале, что же применяет конфигурацию на клиентах? ● Как применяет конфигурацию CM-система? ● Клиент скачивает файлы с сервера ● И применяет правила из них локально ● Постойте, я знаю много разных способов передачи файлов с сервера клиенту! ● Некоторые из них даже “high load” :)
  • 24. Сервер не нужен ● На каждом хосте по cron работает команда ansible-pull ● Она забирает из git-репозитория новую версию, если она есть ● И применяет ее локально ● Проблема курицы и яйца – как ansible-pull попадет в cron первый раз? ● При помощи моего “сервера”
  • 25. Нужен ли сервер? ● Пришлось пожертвовать возможностями, которые сервер предоставлял в классических CM-системах: ● autodiscovery, обмен параметрами* ● Autodiscovery через CM сервер? Зачем? ● Для этого есть Serf, etcd, mDNS *можно, но теперь это peer-to-peer связь
  • 26. Другие свойства Ansible ● Порог вхождения: ● Еще ниже, чем у Salt ● Выразительность: ● Местный диалект YAML менее многословен, чем у Salt ● Кросплатформенность: ● Разработчики знают такие платформы, о которых даже я не знаю (DragonFly BSD)
  • 27. Кросплатформенность ● Я использую Ansible под SmartOS: ● SmartOS работает с флешки, и каталоги /usr/bin и /etc там недоступны на запись ● SmartOS – это Solaris, а не Linux, там SMF, а не sysvinit, upstart или systemd ● При рестартах некоторая часть конфигурации теряется ● Ansible отлично справляется со всем этим
  • 28. Что плохо (и там, и там)? ● Выразительности YAML часто недостаточно – не все сценарии есть ● Управление серверами императивно ● Скрипты “на bash” неизбежны ● Я писал state для Salt на Python ● Он был так же плох, как и на bash
  • 29. Что ужасно (и там, и там)? ● Можно много спорить о необходимости unit-тестирования ● Но механизмов для него нет ни в Salt, ни в Ansible (в отличие от Chef) ● Управление модулями, их версиями и их зависимостями – в зачаточном состоянии (нет аналогов pip, Bundler или librarian-chef) ● Есть Ansible Galaxy (это как PyPI, но без версий)
  • 30. Great artists steal ● Open Source-системы могут пользоваться идеями друг друга не боясь патентных преследований ● Так появились “salt-ssh” и “Ansible Fireball” ● Последний благополучно умер, вместо ZeroMQ-транспорта рекомендуется включать в ansible.cfg SSH pipelining ● (но ansible-pull все равно быстрее)
  • 31. (Chef-)сервер не нужен! ● Все пользуются идеями друг друга: ● В Salt есть salt-call (masterless) ● В Chef есть chef-solo ● Masterless Puppet тоже можно настроить
  • 32. Выводы ● Конкуренция – двигатель прогресса ● Прогресс в области CM-систем пока еще не остановился ● Python-based CM-системы молоды и бурно развиваются ● Мы можем им помочь! ● 62
  • 33. Спасибо за внимание! ● Пожалуйста, ваши вопросы! ● С вами был Александр Чистяков, ● Главный инженер Git in Sky ● http://twitter.com/noatbaksap ● alex@gitinsky.com ● http://gitinsky.com, http://meetup.com/DevOps-40