В прошлом году я сначала выбирал, потом изучал Salt в качестве системы Configuration Management and Remote Execution.
На данный момент могу сказать, что успешно её освоил и начал использовать в продакшине. Штука прекрасная. Хочу поделиться списком литературы, без которой успешное начало работы было бы невозможным, пока не потерялось. А также немного описать впечатления.
Итак.
С самого начала я вообще совершил ошибку: пытался усвоить туториалы из официальной документации солта и прочитать её от корки до корки. Из-за этого буксовал несколько месяцев, уж очень она перегружена. Кстати, часто натыкался на мнения коллег в интернетах, что Salt у них тяжело пошел именно из-за несовершенства оригинальной документации. В результате я записал ссылки на то, что мне помогло быстро освоиться:
- С Salt невозможно начать работать не понимая YAML. Complete idiot’s introduction to YAML: https://github.com/Animosity/CraftIRC/wiki/Complete-idiot’s-introduction-to-yaml.
- Почему то не нашел с первого раза, но в доке по солту тоже есть про YAML: https://docs.saltstack.com/en/latest/topics/yaml/index.html
- Хороший туториал для начала: https://www.digitalocean.com/community/tutorials/how-to-create-your-first-salt-formula
- Далее я бы рекомендовал открыть доку по солту и потыкать в каждый основной раздел для ознакомления с описанием подсистемы. Без углубления в страницы. Чтобы приблизительно понять, что такое Mine, Reactor, Acl. Таких подсистем много и необходимо хотя бы приблизительно про них помнить. Это помимо базовых вещей типа Grains, Pillars, States. Вообще, авторы сильно курнули перед тем, как подойти к неймингу.
- Очень важно усвоить https://docs.saltstack.com/en/latest/topics/best_practices.html, чтобы сразу же не писать такое, что потом переписывать придется.
- Про автоприменение стейтов, просто для теории.
- Про автоматизацию мониторинга.
- Отлично про фрустрации и непонимания, в именах, yaml и тд: http://stevebennett.me/2014/02/17/one-week-of-salt-frustrations-and-reflections/.
- Короткий референс.
- Еще один хороший туториал.
- И вот теперь, после того, как что-то стало проясняться, можно попробовать усвоить официальные туториалы: 1, 2, 3, 4 + подстраницы, общее.
В действительности, когда припекло, у меня заняло пару дней на чтение этих статей с практическими тестами. Еще неделю, чтобы написать необходимую функциональность для продакшина в первый раз используя всякие разные описания в grains&pillars и шаблонизацию на jinja в стейтах. Mine тоже за день освоил, однако пришлось еще за день переписать всё в пользу использования динамических pillar из-за безопасности.
Немного о впечатлениях:
- За счет поддержания постоянных соединений через ZeroMQ работает нереально быстро. Десятки миньонов дергаются за доли секунд.
- Вполне реально администрировать Windows. Есть, конечно, особенности. Например, вылезло, что юникод символы (кириллица) в именах файлов или описаниях YAML использовать не получится – бага питона на винде, чинится уже несколько лет. Получилось обойти костылём Reparse Points (иначе говоря английскими симлинками на кириллические папки).
- Система идеально подходит для распределенного описания инфраструктуры:
- Grains, которые миньон собирает при старте, содержат подробную информацию о железе и софте.
- Grains, созданные вручную администратором сервера в файле /etc/salt/grains, позволяют задать ноде локальное описание: какие есть на ней данные и сервисы, например.
- Pillars на мастер сервере, позволяют описывать для этих серверов sensitive данные, которые нельзя доверить описанию на самих серверах.
- Без использования того же питона, awk, sed, bash не обошлось – все это смешивается вместе с jinja и yaml в нечто, что позволяет динамически генерировать описания и стейты.
- После понимания, как оно в принципе работает и начала использования становится понятно, что 70-80% подходов в дальнейшем администрировании будут переработаны на использование Salt – возможности для творчества безграничны.
В общем: прозрение.
Pingback: Puppet, Chef, Ansible, Salt – что попробовать для начала? | Журнал Жетмэна