Etckeeper

Материал из ALT Linux Wiki
Версия от 12:53, 13 февраля 2023; CausaPrincipalis71 (обсуждение | вклад) (Добавлен раздел про работу вместе с incron)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Etckeeper — это коллекция инструментов для хранения /etc в репозитории VCS. Получает доступ к apt/yum/packman/etc для автоматического внесения изменений, выполняемых в /etc в ходе обновления пакета. Имеет модульное исполнение и широкие возможности настройки, а также несложен в использовании при наличии понимания базовых принципов работы с VCS.

Проще говоря, утилита позволяет автоматически сохранять изменения в конфигурационных файлах при помощи таких средств как git, bazaar, mercurial, darcs. Использование систем контроля версий позволяет легко отслеживать критические изменения в настройках, производить откат на предыдущие версии и анализировать работу с директорией /etc.

Установка

Установить пакет etckeeper из репозитория

Настройки

Файл конфигурации - /etc/etckeeper/etckeeper.conf

По умолчанию задаётся система контроля версий git, её можно изменить, убрав комментарии в начале. Так же можно добавить параметры для VCS, изменив переменную *_COMMIT_OPTIONS и задать некоторые другие параметры

Использование

Примечание: Все настройки etckeeper`а нужно проводить от рута

После установки пакета, для инициализации репозитория используется команда

etckeeper init

После чего нужно провести первый коммит, от которого начнётся вестись слежка за изменениями

etckeeper commit "Initial commit"

Теперь после каждой установке пакета при помощи apt-get автоматически будет создаваться коммит с изменениями, которые произошли в /etc

Автоматическая загрузка на удалённый репозиторий

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

su -
cd /etc/
git remote add origin *адрес удалённого репо*

После чего нужно редактировать файл настроек /etc/etckeeper/etckeeper.conf. В нём задать значение переменной PUSH_REMOTE="origin"

Теперь при каждом вызове etckeeper commit автоматически будет происходить загрузка на удалённый репозиторий.

Автоматическое создание коммитов при помощи incron

См. основную статью incron

Вкратце - работа incron похожа на обычный cron, только вместо привязки ко времени, здесь идёт привязка к состоянию файлов.
Для автоматического создания коммитов можно привязать любые изменения в директории /etc/ к вызову etckeeper commit.
После установки и первичной настройки incron запустите команду incrontab -e от имени рута. Внутри нужно ввести правила работы:

/etc    IN_MODIFY       /usr/bin/etckeeper commit "modified $@/$#"

И сохранить файл.

Здесь: IN_MODIFY - вызов программы при модификации файла, $@ - путь до изменённого файла, $# - название файла

Примечание: Вызов etckeeper commit происходит только если происходят изменения в файлах, которые прямо лежат в /etc. Все изменения, происходящие в субдиректориях автоматически коммититься не будут, их нужно прописывать в incrontab отдельно

Ссылки