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