ПРИМЕЧАНИЕЭто копиязакрытый вопрос из 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
.
Я считаю, что это лучшее решение на данный момент. Конечно, я предвзят. В любом случае,вот мой сценарийи он также связывает скрипт резервного копирования.