Как удобнее синхронизировать настройки и пакеты между Linux машинами?
Публичный постСитуация такая. Есть десктоп и ноут, на обоих стоит Arch Linux скопированный один с другого. То есть системные настройки почти все одинаковые.
Неудобство в том, что часто когда ставишь новую программу или меняешь какие-нибудь настройки, их потом нужно переносить на второй комп руками, и не забыть. Хочется как-нибудь это подавтоматизировать.
Знаю, что некоторые ребята шарят ~/.config
через гит. По-моему это неидеальное решение. Во первых гит сам себя не перекинет. А во вторых не все настройки хранятся в этой директории.
В теории, если готовых решений еще нет, можно написать скрипт который будет перекидывать нужные файлы через Yandex Disk и дергать установку пакетов. Для этого мне нужно понять, какие еще бывают полезные директории с конфигами, которые нужно отслеживать.
Но, надеюсь, эту проблему уже как-то решали.
Ответ:
Как выяснилось, на гитхабе есть категория для нужных тулз, так что можно просто из них выбрать.
Вот коммент разьясняющий это: https://vas3k.club/question/6096/#comment-463fd508-22cc-432e-bb53-bcc79c4ea832
Переустанавливал недавно систему, нашел очень классный вариант. Для установки всех пакетов изначально я использую ansible(для X сервера, гита и прочей базовой штуки), а для любых конфигов это github и dotbot.
C ansible все более-менее понятно, а вот dotbot позволяет в yaml файлике прописать параметры под машину и устанавливать только нужное. Такой, микроansible для конфигурационных файлов.
Я нужные конфиги положил в папку которая синхронизируется с облаком (mega, есть клиент под linux). Поскольку разные софтины могут хранить конфиги в разных местах, то решаю это просто символическими ссылками на мою облачную папку. Также есть скрипт который запускаю один раз после установки ОС, он и создает нужные символические ссылки.
Таким образом конфиги автоматически синхронизируются с облаком и со всеми машинами где это настороено. Нет истории версий, но мне оно ни разу не понадобилось. Это ж личные машины, а не прод.
У меня гит репо хранит избранные части
~/.config
. Есть свои недостатки, конечно, но меня устраивает.Когда меня перестанет устраивать, я пойду читать arch-wiki https://wiki.archlinux.org/index.php/Dotfiles
и инструкции с гитхаба
https://dotfiles.github.io/,
в частности, список утилит для синхронизации конфигов
https://dotfiles.github.io/utilities/
Для поддержки фермы CI часто используется https://puppet.com/use-cases/configuration-management/ . Можно и для личного использования повертеть.
Один знакомый решил эту задачу просто используя RO систему на флешке. Там было 3-4 лэптопа и хотелось консистентной среды.
В итоге это вылилось в отдельный дистр с какими-то даже юзерами
rsync + exclude?