Давайте поговорим про provisioning
Первое, что хотелось бы обсудить — это дистрибуция дотфайлов и конфигов. Тема довольно избитая и заезженная, много было копий сломано и вариантов перепробовано, пока не подошёл вплотную к идеальному варианту: ansible. Он делает это удобно, просто и достаточно прозрачно, есть возможность собирать конфиги из темплейтов, что для меня есть большой плюс, так как использую я разные платформы(десктоп — macOS, виртуалки для личных проектов — Debian, виртуалки для рабочих проектов — CentOS). Однако, использование ansible вызывает ряд проблем, жить с которыми довольно неприятно, а именно:
- Его нужно устанавливать. Для каждой из операционных систем приходится писать свой магический костыль, поскольку pip не всегда есть из коробки, а то, что в системном репозитории, скорее всего уже протухло и завоняло. Плюс ко всему, возможный переход на python3 тоже не прибавляет радости. В итоге имеем необходимость держать в репозитории bootstrap-скрипт и поддерживать его в актуальном состоянии.
- Фатальных несовместимостей между 2.0 и 2.2 больше, чем между 2.0 и 1.8. И это не какие-нибудь deprecated или experimental модули, которые чаще всего можно переписать на той же логике ansible, благо есть возможность дёргать шелл, а ошибки парсинга плейбуков. К примеру, with_dict в 2.2 и 2.0 имеет совершенно разный синтаксис и это никак не исправить.
Идеальным вариантом для меня было бы что-то похожее на ansible, но только написанное на Go. Чтобы получился отдельный готовый статически слинкованный бинарник, который без лишних телодвижений можно скачать, натравить на конфиг и получить результат. Совместимость с ansible вовсе не обязательна, важна лишь похожая логика. Я когда-то писал свой стрёмный велосипед для таких дел, но мне стало стыдно, возможно зря. Не появилось ли на горизонте чего-нибудь подобного?
Второй момент: provisioning на мобильных устройствах, а конкретно на Android. Насколько я знаю, с MDM у него всё очень плохо, а точнее никак. Полностью и безоговорочно доверяться гуглу тоже как-то не хочется, он однажды утащил к себе без спроса все мои телефонные номера и после этого пользоваться его услугами больше не захотелось, всё-таки хочется больше контроля и предсказуемости(на абсолютные значения не претендую, если что). Не то что бы я часто менял или перепрошивал телефоны, но иметь возможность быстро и не очень затратно развернуться в привычное окружение(а при желании и мультиплицировать его на другие семейные устройства) было бы неплохо. Знаю про titanium backup, но не знаю имеет ли он возможность развернуть один и тот же бэкап на разные устройства, а также предоставлять возможность централизованно обновлять парк устройств(по аналогии с плейбуками ansible: применил роль «установить такое-то приложение с таким-то набором данных», и оно раскатилось на все девайсы). Что-нибудь посоветуете?