Назад | Перейти на главную страницу

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

НОТА Это копия закрытый вопрос из Stack Overflow, и конструктивная версия, как мне кажется, аналогичный вопрос в Server Fault.

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

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

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

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

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

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

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

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

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

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

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