Как удобнее синхронизировать настройки и пакеты между Linux машинами?  Публичный пост

Ситуация такая. Есть десктоп и ноут, на обоих стоит Arch Linux скопированный один с другого. То есть системные настройки почти все одинаковые.

Неудобство в том, что часто когда ставишь новую программу или меняешь какие-нибудь настройки, их потом нужно переносить на второй комп руками, и не забыть. Хочется как-нибудь это подавтоматизировать.

Знаю, что некоторые ребята шарят ~/.config через гит. По-моему это неидеальное решение. Во первых гит сам себя не перекинет. А во вторых не все настройки хранятся в этой директории.

В теории, если готовых решений еще нет, можно написать скрипт который будет перекидывать нужные файлы через Yandex Disk и дергать установку пакетов. Для этого мне нужно понять, какие еще бывают полезные директории с конфигами, которые нужно отслеживать.

Но, надеюсь, эту проблему уже как-то решали.

Ответ:

Как выяснилось, на гитхабе есть категория для нужных тулз, так что можно просто из них выбрать.

Вот коммент разьясняющий это: https://vas3k.club/question/6096/#comment-463fd508-22cc-432e-bb53-bcc79c4ea832

11 комментариев 👇

Переустанавливал недавно систему, нашел очень классный вариант. Для установки всех пакетов изначально я использую ansible(для X сервера, гита и прочей базовой штуки), а для любых конфигов это github и dotbot.

C ansible все более-менее понятно, а вот dotbot позволяет в yaml файлике прописать параметры под машину и устанавливать только нужное. Такой, микроansible для конфигурационных файлов.

  Развернуть 1 комментарий
Миша Гусаров, Инженегр-погромист 13 ноября 2020

О, братюня. Понимаю твою боль.

Что я уже испробовал:

  • Дотфайлы в гите (vcsh). Для дотфайлов норм, но на разных машинах накапливаются изменения, которые потом с болью мерджатся.
  • Скрипт настройки линукса. Не работает: при разлитии новой машины оказывается, что софт уже разъехался, приходится чинить.

Что я не попробовал осознанно:

  • Паппет/солт/цфэнжин. Это дикая боль.

Что пробую сейчас:

NixOS. Это сначала дикая боль, а потом оказывается, что в ней софт ставится через добавление в конфигурацию, а не через ручное управление, и поэтому конфигурация постоянно свежая.

Конфиги загоняются туда же в конфигурацию.

  Развернуть 1 комментарий

Я нужные конфиги положил в папку которая синхронизируется с облаком (mega, есть клиент под linux). Поскольку разные софтины могут хранить конфиги в разных местах, то решаю это просто символическими ссылками на мою облачную папку. Также есть скрипт который запускаю один раз после установки ОС, он и создает нужные символические ссылки.

Таким образом конфиги автоматически синхронизируются с облаком и со всеми машинами где это настороено. Нет истории версий, но мне оно ни разу не понадобилось. Это ж личные машины, а не прод.

  Развернуть 1 комментарий
Andrey Rakhubovsky, quantum information postdoc 13 ноября 2020

У меня гит репо хранит избранные части ~/.config. Есть свои недостатки, конечно, но меня устраивает.

Когда меня перестанет устраивать, я пойду читать arch-wiki https://wiki.archlinux.org/index.php/Dotfiles
и инструкции с гитхаба
https://dotfiles.github.io/,
в частности, список утилит для синхронизации конфигов
https://dotfiles.github.io/utilities/

  Развернуть 1 комментарий

@omnster, Спасибо, ваш ответ идеален, так и поступлю (:

Я почему-то был уверен, что готовые решения на тему слабо известны, поэтому не пытался изучить github, а сразу пошел спрашивать чужой опыт. В общем, судя по остальным комментариям, я не один такой.

  Развернуть 1 комментарий

Для поддержки фермы CI часто используется https://puppet.com/use-cases/configuration-management/ . Можно и для личного использования повертеть.

  Развернуть 1 комментарий

@SergeiPetrachkov, нужно, наверное, добавить что в случае с Puppet придется поддерживать Puppet сервер со всеми вытекающими. Также, править конфигурации и устанавливать пакеты придется уже через Puppet используя его собственный DSL.

  Развернуть 1 комментарий

@SergeiPetrachkov, Это оверкил, который не решает мою задачу.

В подобных инструментах ты знаешь какой конкретный конфиг деплоишь, а у меня наоборот - должны обновляться все что есть у пользователя.

  Развернуть 1 комментарий

Один знакомый решил эту задачу просто используя RO систему на флешке. Там было 3-4 лэптопа и хотелось консистентной среды.

В итоге это вылилось в отдельный дистр с какими-то даже юзерами

  Развернуть 1 комментарий

Не подходит для меня, но история интересная, спасибо

  Развернуть 1 комментарий
Andrey Rogovsky, Ответственная 14 ноября 2020

rsync + exclude?

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб