Поиск по сайту:

Как управлять /etc с помощью контроля версий с помощью Etckeeper в Linux


В структуре каталогов Unix/Linux каталог /etc — это место, где расположены общесистемные конфигурационные файлы и каталоги для конкретного хоста; это центральное место для всех общесистемных файлов конфигурации. Файл конфигурации — это локальный файл, используемый для управления работой программы. Он должен быть статическим и не может быть исполняемым двоичным файлом.

Чтобы отслеживать изменения в файлах конфигурации системы, системные администраторы обычно делают копии (или резервные копии) файлов конфигурации перед их изменением. Таким образом, если они напрямую изменили исходный файл и допустили ошибку, они смогут вернуться к сохраненной копии.

Etckeeper — это простой, удобный в использовании, модульный и настраиваемый набор инструментов, позволяющий управлять /etc с помощью контроля версий. Он позволяет хранить изменения в каталоге /etc в системе контроля версий (VCS), такой как git (предпочтительный репозиторий VCS), mercurial, bazaar или darcs. . Это позволяет вам использовать git для просмотра или отмены изменений, внесенных в /etc, в случае ошибки.

Другие его особенности:

  1. он поддерживает интеграцию с интерфейсными менеджерами пакетов, включая APT, YUM, DNF, Zypper и pacman-g2, для автоматической фиксации изменений, внесенных в /etc во время обновлений пакетов.
  2. он отслеживает метаданные файла (например, права доступа к файлу), которые обычно не поддерживаются git, но это важно для /etc, и
  3. он включает в себя как задание cron, так и таймер systemd, каждый из которых может автоматически фиксировать выходные изменения в /etc один раз в день.

Как установить Etckeeper в Linux

Etckeeper доступен в Debian, Ubuntu, Fedora и других дистрибутивах Linux. Чтобы установить его, используйте менеджер пакетов по умолчанию, как показано. Обратите внимание, что эта команда также установит git и несколько других пакетов в качестве зависимостей.

sudo apt-get install etckeeper	#Ubuntu and Debian
apt-get install etckeeper		#Debian as root user
dnf install etckeeper			#Fedora 22+
sudo zypper install etckeeper	        #OpenSUSE 15

В дистрибутивах Enterprise Linux, таких как RedHat Enterprise Linux (RHEL), CentOS и других, необходимо добавить Репозиторий EPEL перед его установкой, как показано.

yum install epel-release
yum install etckeeper

Настройка Etckeeper в Linux

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

vim /etc/etckeeper/etckeeper.conf
OR
sudo nano /etc/etckeeper/etckeeper.conf

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

Кроме того, вы можете настроить интерфейсный менеджер пакетов или менеджер пакетов более высокого уровня (например, apt, yum, dnf и т. д.), а также базовый или низкоуровневый менеджер пакетов (dpkg, rpm и т. д.) для работы с etckeeper . .

Если вы внесли какие-либо изменения в файл, сохраните их и закройте файл.

Инициализация репозитория Git и выполнение первоначальной фиксации

Теперь, когда вы настроили etckeeper, вам необходимо инициализировать репозиторий Git, чтобы начать отслеживать любые изменения в вашем каталоге /etc следующим образом. Вы можете запускать etckeeper только с правами root, в противном случае используйте sudo.

cd 
sudo etckeeper init

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

sudo etckeeper commit "first commit"

Внесение изменений и принятие решений

После выполнения вашего первого коммита etckeeper через git теперь отслеживает любые изменения в каталоге /etc. Теперь попробуйте внести какие-либо изменения в любой из файлов конфигурации.

Затем выполните следующую команду, чтобы показать файлы, которые изменились с момента последней фиксации; эта команда по существу показывает изменения в /etc, не подготовленные для фиксации, где VCS означает git, а «status» – это подкоманда git.

sudo etckeeper vcs status

Затем зафиксируйте последние изменения следующим образом.

sudo etckeeper commit "changed hosts and phpmyadmin config files"

Просмотр журналов коммитов

Чтобы просмотреть журнал всех коммитов (идентификатор каждого коммита и комментарий), вы можете запустить следующую команду.

sudo etckeeper vcs log

Вы также можете показать подробную информацию о коммите, просто указав идентификатор коммита (первые несколько символов могут работать), как показано ниже:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

Кроме того, вы можете просмотреть разницу между двумя коммитами, как показано. Это особенно полезно, если вы хотите отменить изменения, как показано в следующем разделе. Вы можете использовать клавиши со стрелками для прокрутки вверх и вниз или влево и вправо и выйти, нажав q.

sudo etckeeper vcs show 704cc56 a153b6847

Как отменить изменения

Суть etckeeper заключается в том, чтобы помочь вам отслеживать изменения в вашем каталоге /etc и при необходимости отменить эти изменения. Предполагая, что вы допустили некоторые ошибки в /etc/nginx/nginx.conf при последнем его редактировании и службу Nginx невозможно перезапустить из-за ошибок в структуре конфигурации, вы можете вернуться к исходному состоянию. в сохраненную копию в конкретном коммите (например, 704cc56), где, по вашему мнению, конфигурация была правильной, как показано ниже.

sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

Альтернативно вы можете отменить все изменения и вернуться к версиям всех файлов в /etc (и его подкаталогах), хранящихся в определенном коммите.

sudo etckeeper vcs checkout 704cc56 

Как включить автоматическую фиксацию изменений

Etckeeper также поставляется с модулями службы и таймера для Systemd, включенными в пакет. Чтобы запустить «Autocommit» изменений в каталоге /etc, просто запустите модуль etckeeper.timer и проверьте, запущен ли он. , следующее.

sudo systemctl start etckeeper.timer
sudo systemctl status etckeeper.timer

И включите его автоматический запуск при загрузке системы, как показано.

sudo systemctl enable etckeeper.timer

Для получения дополнительной информации посетите страницу проекта Etckeeper: https://etckeeper.branchable.com/.

Заключение

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