Наличие конфигурации системы, представленной ее текущим состоянием, рискованно, неэффективно и непрозрачно. В какой-то момент вы можете остаться с неподдерживаемой системой и без пути обновления. Затем настройка новой системы, совместимой со старой, является процессом или методом проб и ошибок. Кроме того, если в какой-то момент система повреждена, единственный вариант - вернуться к самой последней полной резервной копии и попытаться вспомнить, какие изменения произошли с этого момента. Кроме того, единственный способ создать систему, совместимую с оригиналом, - выполнить полный дамп / восстановление. Наконец, в такой установке нет способа узнать, как вы решили конкретную проблему; единственное, что вы можете сделать, это посмотреть на соответствующие файлы конфигурации и попытаться угадать, что вы изменили для достижения желаемого эффекта.
В настоящее время для каждой системы, которую я поддерживаю, я веду файл журнала, в котором записываю всю деятельность по администрированию системы, начиная с установки: параметры установки, добавленные пакеты, изменения в файлах конфигурации, обновления, исправления проблем и т.д. Теоретически это позволяет мне (вручную) воспроизвести все изменения, чтобы достичь текущего состояния, или развернуть ошибочное изменение, выполнив обратные команды. Однако этот процесс также неэффективен, подвержен ошибкам и основан на человеческом суждении.
Еще одна вещь, которую я попробовал, это поместить файлы конфигурации /etc в систему контроля версий с помощью git. Это помогает мне автоматически документировать изменения, а также применять их при чистой настройке. Но это не без проблем: git должен работать под sudo, пароли и закрытые ключи могут храниться в хранилище, установленные пакеты не могут быть осмысленно отслежены, и git подойдет, если я попытаюсь распространить этот подход на все системы. каталоги.
Я также думал о внесении всех изменений с помощью сценариев оболочки или make-файлов, но я думаю, что этот процесс потребует много усилий и будет хрупким.
Есть ли какие-то лучшие методы или инструменты, которые мне не хватает?