Pesquisa de site

Como gerenciar /etc com controle de versão usando Etckeeper no Linux


Na estrutura de diretórios Unix/Linux, o diretório /etc é onde os arquivos e diretórios de configuração de todo o sistema específicos do host estão localizados; é um local central para todos os arquivos de configuração de todo o sistema. Um arquivo de configuração é um arquivo local usado para controlar o funcionamento de um programa – deve ser estático e não pode ser um binário executável.

Para acompanhar as alterações nos arquivos de configuração do sistema, os administradores do sistema normalmente fazem cópias (ou backups) dos arquivos de configuração antes de modificá-los. Dessa forma, se eles modificarem diretamente o arquivo original e cometerem um erro, poderão reverter para a cópia salva.

Etckeeper é uma coleção de ferramentas simples, fácil de usar, modular e configurável para permitir que /etc seja gerenciado usando controle de versão. Ele permite que você armazene alterações no diretório /etc em um sistema de controle de versão (VCS) como git (que é o VCS preferido), repositório mercurial, bazaar ou darcs . Permitindo assim que você use o git para revisar ou reverter alterações feitas em /etc, em caso de erro.

Seus outros recursos são:

  1. ele suporta integração com gerenciadores de pacotes front-end, incluindo APT, YUM, DNF, Zypper e pacman-g2 para confirmar automaticamente as alterações feitas em /etc durante atualizações de pacotes.
  2. ele rastreia metadados de arquivos (como permissões de arquivo) que o git normalmente não suporta, mas que são importantes para /etc, e
  3. ele inclui um cron job e um timer systemd, onde cada um pode confirmar as alterações existentes em /etc automaticamente uma vez por dia.

Como instalar o Etckeeper no Linux

Etckeeper está disponível em Debian, Ubuntu, Fedora e outras distribuições Linux. Para instalá-lo, use seu gerenciador de pacotes padrão conforme mostrado. Observe que este comando também instalará o git e alguns outros pacotes como dependências.

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

Em distribuições Enterprise Linux como RedHat Enterprise Linux (RHEL), CentOS e outras, você precisa adicionar o repositório EPEL antes de instalá-lo conforme mostrado.

yum install epel-release
yum install etckeeper

Configurando o Etckeeper no Linux

Depois de instalar o etckeeper conforme mostrado acima, você precisa configurar como ele irá operar e seu arquivo de configuração principal é /etc/etckeeper/etckeeper.conf. Para abri-lo para edição, use qualquer um dos seus editores de texto favoritos, conforme mostrado.

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

O arquivo contém diversas opções de configuração (cada uma com uma descrição de uso pequena e clara) que permitem definir o sistema de controle de versão (VCS) a ser usado, passar opções para o VSC; para ativar ou desativar o cronômetro, ativar ou desativar o aviso especial de arquivo, ativar ou desativar o etckeeper de confirmar alterações existentes em /etc antes da instalação.

Além disso, você pode configurar o gerenciador de pacotes front-end ou de nível superior (como apt, yum, dnf etc.) e o gerenciador de pacotes subjacente ou de baixo nível (dpkg, rpm etc.) para trabalhar com etckeeper.

Se você fez alguma alteração no arquivo, salve-o e feche o arquivo.

Inicializando o repositório Git e realizando o commit inicial

Agora que você configurou o etckeeper, você precisa inicializar o repositório Git para começar a rastrear quaisquer alterações em seu diretório /etc como segue. Você só pode executar o etckeeper com permissões de root, caso contrário use o sudo.

cd 
sudo etckeeper init

A seguir, passo para que o etckeeper possa funcionar automaticamente, você precisa executar o primeiro commit para começar a acompanhar as alterações em /etc, como segue.

sudo etckeeper commit "first commit"

Fazendo mudanças e comprometendo-se

Depois de executar seu primeiro commit, o etckeeper via git agora está rastreando quaisquer alterações no diretório /etc. Agora tente fazer alterações em qualquer um dos arquivos de configuração.

Em seguida, execute o seguinte comando para mostrar os arquivos que foram alterados desde o último commit; este comando mostra essencialmente as alterações em /etc não preparadas para commit, onde VCS significa git e “status ” é um subcomando git.

sudo etckeeper vcs status

Em seguida, confirme as alterações recentes da seguinte maneira.

sudo etckeeper commit "changed hosts and phpmyadmin config files"

Ver registros de confirmação

Para visualizar um log de todos os commits (ID e comentário de cada commit), você pode executar o seguinte comando.

sudo etckeeper vcs log

Você também pode mostrar os detalhes de um commit, simplesmente especificando o ID do commit (os primeiros caracteres podem funcionar) conforme mostrado.:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

Além disso, você pode ver a diferença entre dois commits conforme mostrado. Isto é especialmente útil se você deseja revogar alterações conforme mostrado na próxima seção. Você pode usar as teclas de seta para rolar para cima e para baixo ou para a esquerda e para a direita e sair pressionando q.

sudo etckeeper vcs show 704cc56 a153b6847

Como revogar alterações

A essência do etckeeper é ajudá-lo a rastrear alterações em seu diretório /etc e reverter as alterações quando necessário. Supondo que você percebeu que cometeu alguns erros no /etc/nginx/nginx.conf quando o editou pela última vez e o serviço Nginx não pode ser reiniciado devido a erros na estrutura de configuração, você pode reverter para a cópia salva em um commit específico (por exemplo, 704cc56) onde você acha que a configuração estava correta como segue.

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

Alternativamente, você pode cancelar todas as alterações e reverter para versões de todos os arquivos em /etc (e seus subdiretórios) armazenados em um commit específico.

sudo etckeeper vcs checkout 704cc56 

Como permitir que as alterações sejam confirmadas automaticamente

O Etckeeper também vem com unidades de serviço e temporizador para Systemd, incluídas no pacote. Para iniciar o “Autocommit ” de alterações no diretório /etc, simplesmente inicie a unidade etckeeper.timer por enquanto e verifique se ela está instalada e funcionando , do seguinte modo.

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

E habilite-o para iniciar automaticamente na inicialização do sistema, conforme mostrado.

sudo systemctl enable etckeeper.timer

Para obter mais informações, consulte a página do projeto Etckeeper: https://etckeeper.branchable.com/.

Conclusão

Neste guia, mostramos como instalar e usar o etckeeper para armazenar alterações no diretório /etc em um sistema de controle de versão (VCS) como git e revise ou reverta alterações feitas em /etc, quando necessário. Compartilhe suas idéias ou faça perguntas sobre o etckeeper por meio do formulário de feedback abaixo.