Существует ли стандартный способ хранить измененные файлы конфигурации Linux отдельно и с возможностью их идентификации?

Существует ли стандартный способ хранить измененные файлы конфигурации Linux отдельно и с возможностью их идентификации?

ПРИМЕЧАНИЕЭто копиязакрытый вопрос из Stack Overflow, и конструктивная версия, как мне кажется,аналогичный вопрос в Server Fault.

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

Сейчас я разместил все файлы конфигурации, а также некоторые из моих сценариев обслуживания в /opt/admin, и создал /etcтам символические ссылки на цели, но это кажется неправильным.согласно стандартам, которые я видел. Другой вариант, который я придумал, — это разместить их в /usr/local. В вышеупомянутом документе говорится, что он предназначен для использования системным администратором при локальной установке программного обеспечения. Это самое близкое, что у меня есть. Однако он также /usr/localзатирается при установке нового неупакованного программного обеспечения.

Есть ли стандарт/широко применяемая передовая практика, как их поддерживать? Поскольку это не страница для обсуждения, ответы должны быть определенными и подкреплены одной-двумя статьями в поддержку.

ПРИМЕЧАНИЕЯ включил свой собственный ответ, который я нашел наиболее полезным на данный момент. Я снова открыл это здесь, чтобы его можно было обсудить и получить больше ответов.

решение1

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

решение2

Для этого можно использовать инструмент управления конфигурацией. Он хорошо масштабируется при добавлении серверов с той же ролью.

Похоже, вы уже создали то, что соответствует вашим потребностям, но, возможно, вам стоит обратить внимание на Chef, Puppet, Ansible, Opsware или другие инструменты управления/автоматизации/оркестровки конфигураций в зависимости от ваших потребностей и бюджета.

решение3

Из ответов на вопросы, которые я упомянул, похоже, есть два общих решения — либо использовать символические ссылки, либо вести список файлов (см. ответы ptman и Jim в связанных вопросах). Я не смог найти статью с рекомендациями.

Я предлагаю гибридное решение: вы поддерживаете только простой файл (я называю его FILES) со списком файлов конфигурации. Скрипт считывает FILESи создает символические ссылки на реальные файлы конфигурации в дублирующей иерархии файловой системы в выбранном каталоге (я называю скрипт link-config-files.shи каталог system-config).

Таким образом, вы сохраняете файлы только в одном файле, который легко редактировать и не требует магии оболочки. Конфигурационные файлы, которые вам интересны, доступны благодаря system-configсимволической ссылке. Задание cron было настроено на резервное копирование system-config, поэтому все файлы конфигурации автоматически копируются. И еще одно задание cron периодически запускается, link-config-files.shпоэтому все, что остается для файла, чтобы появиться (или исчезнуть) system-configи быть скопированным, — это редактировать FILES.

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

Связанный контент