Saltstack. Опыт стандартного и нестандартного использованияУправление конфигурацией
Системный администратор в проекте Поиск@mail.ru (go.mail.ru).
Стандарное использование saltstack. Про это можно найти мануалы и документацию.
1) Что было. И как пришли к salt:
- чем стала не устраивать уже использующаяся связка puppet+mcollective;
- почему salt, а не что-то ещё.
2) Краткий обзор возможностей salt и как всё устроено:
- master, minion;
- система сообщений;
- оркестрация;
- система управления конфигурациями, стейты;
- что это такое grains и как это использовать;
- jinja2-темплейты.
3) Как мы стали использовать стейты:
- формулы + pillar, и как предлагает делать saltstack. В каких случаях это очень хорошо, в каких излишне сложно;
- наше, появившееся методом проб и ошибок, видение того, как следует писать стейты.
4) Что использовали, но не понравилось:
- gitfs. В целом, работает удовлетворительно, но:
-- медленно,
-- очень неприятно стали "теряться" файлы.
- Environments:
-- Environments в puppet смотрелись намного вкуснее,
-- проблемы с top.sls в разных environment'ах.
- Решение:
-- вместо env отдельные on-demand мастеры! (обзор salt multi master)
5) Попробовали, есть даже в dev, но пока не начали использовать в production. Очень краткий обзор.
- salt mine
- events
- salt-cloud
Как мы стали использовать salt нестандартно.
Сервис с большим количеством разработчиков, разработчикам в production нельзя. Но для оперативных разбирательств, часто требуется посмотреть, что происходит на production.
1) Испробованные пути:
- non-root юзеры
Плюсы: нативно, привычно.
Минусы: неподконтрольно, эксплоиты, "я тут открыл 10G лог vim'ом на продакшне и всё зависло".
- ssh forced_commands
Плюсы: работает из коробки.
Минусы: костыль, нужно писать, сложно ограничивать доступы к конкретным ресурсам на конкретных серверах, неудобно пользоваться.
- salt
Плюсы: вообще не шелл, ограничение доступов, система сообщений, органичение ресурсов.
Минусы: нужно ставить, нужно разбираться, пришлось написать некоторое количество кода.
2) Подробнее про salt. Техническая часть.
- Топология. Что такое syndic, как это использовать.
- Пишем свой salt-модуль.
- Salt Client ACL.
- Salt External Authentication System.
- Как запустить minion из-под непривилегированного пользователя.
- Что делать, если minion'ов тысячи.