etckeeper

etckeeper позволяет легко сохранять содержимое каталога /etc в хранилище системы контроля версий (VCS). Он отслеживает когда apt автоматически сохраняет изменения в /etc при установке или обновлении пакетов. Помещение /etc под контроль версий сейчас рассматривается как лучшая практика в индустрии, и преимуществом etckeeper является то, что он делает этот процесс безболезненным насколько это возможно.

Установите etckeeper, ведя следующее в терминале:

sudo apt-get install etckeeper

Основной файл конфигурации, /etc/etckeeper/etckeeper.conf, достаточно простой. Основной опцией является выбор какую VSC использовать. По умолчанию etckeeper настроен на использование в качестве системы контроля версий bzr. Хранилище автоматически инициализируется (и сохраняет начальное состояние) в процессе установки. Есть возможность отменить это, выполнив следующую команду:

sudo etckeeper uninit

По умолчанию etckeeper будет сохранять незафиксированные изменения в /etc ежедневно. Это может быть отменено использованием опции настройки AVOID_DAILY_AUTOCOMMITS. Он также будет автоматически сохранять изменения до и после установки пакетов. Для более точного отслеживания изменений рекомендуется фиксировать изменения вручную, добавляя описание фиксации следующим образом:

sudo etckeeper commit "..Reason for configuration change.."

Используя команды VCS, вы можете просматривать информацию в журнале по поводу файлов в /etc:

sudo bzr log /etc/passwd

Для демонстрации интеграции с системой управления пакетами, установим postfix:

sudo apt-get install postfix

Когда установка завершится, все конфигурационные файлы postfix будут переданы в хранилище:

Committing to: /etc/
added aliases.db
modified group
modified group-
modified gshadow
modified gshadow-
modified passwd
modified passwd-
added postfix
added resolvconf
added rsyslog.d
modified shadow
modified shadow-
added init.d/postfix
added network/if-down.d/postfix
added network/if-up.d/postfix
added postfix/dynamicmaps.cf
added postfix/main.cf
added postfix/master.cf
added postfix/post-install
added postfix/postfix-files
added postfix/postfix-script
added postfix/sasl
added ppp/ip-down.d
added ppp/ip-down.d/postfix
added ppp/ip-up.d/postfix
added rc0.d/K20postfix
added rc1.d/K20postfix
added rc2.d/S20postfix
added rc3.d/S20postfix
added rc4.d/S20postfix
added rc5.d/S20postfix
added rc6.d/K20postfix
added resolvconf/update-libc.d
added resolvconf/update-libc.d/postfix
added rsyslog.d/postfix.conf
added ufw/applications.d/postfix
Committed revision 2.

В качестве примера, как etckeeper отслеживает изменения вручную, добавьте новую систему в /etc/hosts. Используя bzr вы сможете увидеть какие файлы были изменены:

sudo bzr status /etc/
modified:
  hosts

Теперь зафиксируем изменения:

sudo etckeeper commit "new host"

Дополнительную информацию по bzr смотрите в разделе Bazaar.

Исключения

Чтобы пароли и сертификаты не копировались, если используется VSC git то надо в файл /etc/.gitignore добавить строки:

shadow*
gshadow*
ssh/ssh_host_*
ssl/private/*

letsencrypt/accounts
letsencrypt/archive
letsencrypt/csr
letsencrypt/keys
letsencrypt/live

opendkim/keys