Top Banner
Salt и Ansible — средства управления конфигурацией на языке Python Как перестать изучать Ruby и начать жить Александр Чистяков, главный инженер Git in Sky, 2014
30

Salt and Ansible - Python-based CM systems

Jun 16, 2015

Download

Technology

Alex Chistyakov

My talk from the Piter.Py conference
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Salt and Ansible - Python-based CM systems

Salt и Ansible — средства управления конфигурацией

на языке Python

Как перестать изучать Ruby и начать жить

Александр Чистяков, главный инженер Git in Sky,

2014

Page 2: Salt and Ansible - Python-based CM systems

Кто я?

§ Меня зовут Саша§ Я главный инженер в компании Git in Sky§ Днем — разработчик ПО§ Ночью — инженер отдела эксплуатации§ Или наоборот

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 3: Salt and Ansible - Python-based CM systems

Кто вы?

§ Разрабатываете на Python?§ Делаете веб-приложения?§ Может быть, Big Data приложения?§ А сервера у вас есть?§ Много? (Кстати, “много” - это от скольки?)§ Приходится заниматься их настройкой?

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 4: Salt and Ansible - Python-based CM systems

Задача #1

§ Есть много серверов§ Их нужно быстро привести к эталонному виду§ Разные серверы — разные роли§ Разные роли — разные приложения§ Возможно, разные платформы:

§ Linux, FreeBSD, Solaris, ...

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 5: Salt and Ansible - Python-based CM systems

Задача #2

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

§ Есть эталонная конфигурация§ Нужно воссоздавать ее в разных окружениях:

§ development§ testing§ staging§ production

§ Окружения отличаются размерами и свойствами сервисов

Page 6: Salt and Ansible - Python-based CM systems

Какие есть пути решения этих двух задач?

§ Классический — скрипты на bash и пакеты deb/RPM§ Современный — системы управления конфигурацией:

§ CFEngine§ Puppet, Chef§ Salt, Ansible§ Func, Babushka, etc§ ^ Ansible создал автор Func

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 7: Salt and Ansible - Python-based CM systems

Словарик

§ «Классический»:§ Старый, неудобный, унаследованный,

недостаточно проработанный§ «Современный»:

§ Новый, удобный,сделанный с учетом ошибокпрошлых лет

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 8: Salt and Ansible - Python-based CM systems

Чем плох классический путь?

§ Я знаю одного (1) человека, которому

нравится писать скрипты на bash§ И, по-моему, он гонит§ bash: плохо писать, плохо читать,

недекларативный, неидемпотентный§ Чем плохи deb/RPM пакеты — тема для

отдельного доклада (если вкратце - всем)

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 9: Salt and Ansible - Python-based CM systems

Полезные свойства современных систем

§ bash-скрипты изолированы глубоко внутри,

вместо них — DSL для декларативного описания§ Конфигурация применяется параллельно

на всех узлах§ Объекты предметной области составляют

иерархию (роли, модули, группы узлов, атрибуты)

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 10: Salt and Ansible - Python-based CM systems

Классическое устройство современных систем

§ Клиент-серверная архитектура§ “Толстый” клиент, много зависимостей§ Часто — eDSL на базе Ruby§ ^ Сама CM система тоже на Ruby§ Pull-модель: клиенты обращаются к серверу

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 11: Salt and Ansible - Python-based CM systems

Что нам не нравится?

§ Клиент-серверная архитектура§ Необходимо разворачивать и

поддерживать сервер§ ^ это может быть ресурсозатратно§ Необходимо обеспечивать

безопасность сервера

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 12: Salt and Ansible - Python-based CM systems

Что нам не нравится?

§ “Толстый” клиент, много зависимостей§ Нужно делать бутстреппинг узла при его

введении в инфраструктуру§ Работает не на любой платформе§ При работе потребляет ресурсы

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 13: Salt and Ansible - Python-based CM systems

Что нам не нравится?

§ Часто — eDSL на базе Ruby§ Напомните, как называется эта конференция?§ embedded DSL (eDSL) сделан “поверх”

основного языка — декларативность не

навязывается на уровне DSL, можно писать

как угодно плохо

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 14: Salt and Ansible - Python-based CM systems

Что нам не нравится?

§ Pull-модель: клиенты обращаются к серверу§ Потеря смысла:

§ Зачем нужен командный центр,который требует защиты,но не имеет возможностиоперативного управления?

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 15: Salt and Ansible - Python-based CM systems

Как же быть?

§ Использовать Python :)§ Описывать конфигурацию на YAML§ Вернуть серверу возможность

управлять клиентами§ Либо вообще убрать сервер§ Кстати, и клиенты тоже убрать

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 16: Salt and Ansible - Python-based CM systems

От теории к практике

§ Salt — начинался как parallel execution tool§ Клиенты поддерживают постоянное соединение

с сервером через ØMQ§ Сейчас это полноценная CM система§ С документацией на 1119 страниц

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 17: Salt and Ansible - Python-based CM systems

Чем хорош Salt?

§ Очень быстро развивается§ Предоставляет много возможностей§ Сервер и клиент относительно легковесны§ Выполнение ad hoc команд сделано идеально§ Отличная поддержка сообществом

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 18: Salt and Ansible - Python-based CM systems

Чем плох Salt?

§ Слишком быстро развивается§ Приоритет возможностей ради

возможностей часто ведет к потере качества§ Инфраструктура, в которой нужны ad hoc

команды, — источник проблем в будущем§ 1119 страниц невозможно прочесть :(

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 19: Salt and Ansible - Python-based CM systems

Что еще можно сказать про Salt?

§ Порог вхождения:§ Спасибо тов. ван Россуму, он минимален

§ Выразительность:§ Авторы пытались построить второй Chef,

к счастью, не получилось§ Кросплатформенность:

§ Пробовал под FreeBSD, получилось

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 20: Salt and Ansible - Python-based CM systems

Должно быть что-то еще!

§ Ansible — вторая попытка Michael DeHaan

сделать CM систему§ Никаких зависимостей на узлах, кроме

интерпретатора Python§ Коммуникация между сервером и клиентами

по обычному SSH

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 21: Salt and Ansible - Python-based CM systems

Идея довольно современна

§ Решение лежало на поверхности, почему же

им не пользовались раньше?§ Не в любом языке есть библиотека,

реализующая нормальный SSH-клиент§ Кстати, сервера теперь тоже никакого нет,

его можно свернуть и унести с собой

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 22: Salt and Ansible - Python-based CM systems

Другие важные следствия

§ Если сервер все равно неизвестно где,

можно, он будет на той же машине?§ В классических системах CM сервер (не) просто

раздает шаблоны конфигурации клиентам§ Я знаю несколько десятков вариантов передачи

файлов, среди них есть удобные

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 23: Salt and Ansible - Python-based CM systems

Что мы теряем?

§ В классических CM системах узлы общаются

между собой через сервер:§ Делают autodiscovery, обмениваются

параметрами§ Autodiscovery через CM сервер? Зачем?

§ Есть Serf, etcd, mDNS

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 24: Salt and Ansible - Python-based CM systems

Что еще можно сказать про Ansible?

§ Порог вхождения:§ Его нет, я его не заметил

§ Выразительность:§ Местный YAML менее многословен,

чем в Salt§ Кросплатформенность:

§ SmartOS, DragonFly BSD

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 25: Salt and Ansible - Python-based CM systems

Что плохо и там, и там?

§ Декларативный YAML слишком декларативен§ Управление серверами — императивный процесс,

исторически§ Приходится прибегать к помощи скриптов на Python§ ^ хорошо, если только на Python, а то ведь и на bash§ У меня есть Salt'овский стейт на Python, но я не готов его

показать

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 26: Salt and Ansible - Python-based CM systems

Что ужасно и там, и там?

§ В оглавлении документации Salt по слову “Unit” не находится “Unit testing”§ Поиском по всей документации находится пара абзацев§ Понять, о чем они — невозможно

§ Про Ansible не находится ничего релевантного§ Управление модулями, их версиями и их зависимостями —

аналогов pip или Bundler пока не существует§ Для Ansible есть Ansible Galaxy — это PyPI, но без версий

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 27: Salt and Ansible - Python-based CM systems

Останется только один

§ CM системы не могут друг друга убить,

но отлично могут брать друг у друга идеи§ Так появились “Salt SSH” и “Ansible Fireball”§ Последний, к счастью, не выжил§ Лишь бы только не вышло, как с JIRA

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 28: Salt and Ansible - Python-based CM systems

Кстати, что касается отказа от сервера

§ В Salt есть salt-call, позволяющий работать

без мастера§ В Chef есть chef-solo, позволяющий работать

без мастера§ Masterless Puppet тоже бывает§ Я же говорил — они друг у друга тырят!

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 29: Salt and Ansible - Python-based CM systems

Выводы:

§ На вкус и цвет все CM системы разные§ Последнее слово на этом рынке еще

не прозвучало§ Python пока выступает очень достойно§ Но ему необходима помощь§ Помогите Python съесть Ruby!

Salt и Ansible — средства управления конфигурацией на языке Python. 2014

Page 30: Salt and Ansible - Python-based CM systems

С вами был Александр Чистяков,главный инженер Git in Sky

[email protected]://gitinsky.com

http://meetup.com/DevOps-40

Пожалуйста, ваши вопросы.

Спасибо за внимание!