git-history

С самого появления систем управления версиями, многие администраторы присматриваются к ним. Крайне удобным кажется слежение за конфигурационными файлами серверов с возможностью сравнения версий, отката в любой момент. В свое время я использовал Mercurial, который натравливал на важные мне конфиги с помощью директории с симлинками. Но познакомившись с etckeeper, не променяю его на старые приемы. Etckeeper позволяет держать под наблюдением всю директорию etc, при этом не ограничиваясь какой-то конкретной VCS, так как поддерживает Git, Mercurial, Bazaar, Darks. Главным аргументом при использовании etckeeper перед простым добавлением директории /etc в VCS является возможность контроля метаданных файлов. Помимо этого, Git и Mercurial не отслеживают пустые директории, хотя в рамках etc они могут иметь значение.

Etckeeper в рамках DEB систем встраивается в pre-intall и post-install менеджера пакетов apt, что позволяет эффективно контролировать изменения содержимого etc при установке или обновлении софта. При попытке установки софта будет проводиться проверка на существование неподтвержденных изменений, после установки софта новые конфиги добавятся в список наблюдения VCS и будет произведен коммит уже с ними.

В статье приведены примеры с использованием Git, как наиболее часто применяемого. Пушить изменения мы будем на этот же сервер, хотя никто не мешает нам использовать сторонний. Главное не забывать, что пушатся в том числе и файлы, к которым необходимо ограничить доступ для посторонних (passwd, shadow), так что не забывайте защищать репозиторий от несанкционированного доступа.

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

При установке из пакета первичная инициализация etckeeper произойдет автоматически. Если вы поставите его другими способами, инициализацию можно провести командой:

В директории /etc появится .git

Настройки etckeeper лежат в файле /etc/etckeeper/etckeeper.conf. В нашем случае мы оставим их по умолчанию.

Самое время совершить первый коммит:

Теперь мы можем использовать всю мощь Git для управления нашим etc.

Проверим это на примере установки mc.

Проверим, что появилось в Git.

Теперь попробуем изменить конфигурационный файл и сравнить его версии.

Теперь сравним текущую версию файла с определенным коммитом:

Из списка коммитов (git log) выберем нужный и выполним:

В процессе эксплуатации полезно исключить из контроля файлы, редактируемые демонами.
Предположим файл testfile — как раз такой:

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