Zoeken op website

Hoe /etc te beheren met versiebeheer met Etckeeper op Linux


In de Unix/Linux-mapstructuur is de map /etc de plek waar hostspecifieke systeembrede configuratiebestanden en mappen zich bevinden; het is een centrale locatie voor alle systeembrede configuratiebestanden. Een configuratiebestand is een lokaal bestand dat wordt gebruikt om te bepalen hoe een programma werkt. Het moet statisch zijn en mag geen uitvoerbaar binair bestand zijn.

Om wijzigingen in systeemconfiguratiebestanden bij te houden, maken systeembeheerders normaal gesproken kopieën (of back-ups) van configuratiebestanden voordat ze deze wijzigen. Op die manier kunnen ze, als ze het originele bestand rechtstreeks hebben gewijzigd en een fout hebben gemaakt, terugkeren naar de opgeslagen kopie.

Etckeeper is een eenvoudige, gemakkelijk te gebruiken, modulaire en configureerbare verzameling tools waarmee /etc kan worden beheerd met behulp van versiebeheer. Hiermee kunt u wijzigingen opslaan in de map /etc in een versiebeheersysteem (VCS) zoals git (wat de voorkeur heeft voor VCS), mercurial, bazaar of darcs repository . Hierdoor kun je git gebruiken om wijzigingen die zijn aangebracht in /etc te bekijken of terug te draaien, in het geval van een fout.

De andere kenmerken zijn:

  1. het ondersteunt integratie met front-end pakketbeheerders, waaronder APT, YUM, DNF, Zypper en pacman-g2 om automatisch wijzigingen door te voeren die zijn aangebracht in /etc tijdens pakketupgrades.
  2. het houdt metadata van bestanden bij (zoals de bestandsrechten) die git normaal gesproken niet ondersteunt, maar die belangrijk is voor /etc, en
  3. het bevat zowel een cronjob als een systemd timer, die elk één keer per dag automatisch bestaande wijzigingen in /etc kunnen doorvoeren.

Hoe Etckeeper onder Linux te installeren

Etckeeper is beschikbaar in Debian, Ubuntu, Fedora en andere Linux-distributies. Om het te installeren, gebruikt u uw standaard pakketbeheerder, zoals weergegeven. Merk op dat dit commando ook git en een paar andere pakketten als afhankelijkheden zal installeren.

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

Op Enterprise Linux distributies zoals RedHat Enterprise Linux (RHEL), CentOS en andere moet u de EPEL-repository voordat u deze installeert, zoals weergegeven.

yum install epel-release
yum install etckeeper

Etckeeper configureren onder Linux

Zodra u etckeeper heeft geïnstalleerd zoals hierboven weergegeven, moet u configureren hoe het zal werken. Het hoofdconfiguratiebestand is /etc/etckeeper/etckeeper.conf. Om het te openen voor bewerking, gebruikt u een van uw favoriete op tekst gebaseerde editors, zoals weergegeven.

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

Het bestand bevat verschillende configuratie-opties (elk met een kleine, duidelijke gebruiksbeschrijving) waarmee u het te gebruiken versiebeheersysteem (VCS) kunt instellen en opties kunt doorgeven aan VSC; om de timer in of uit te schakelen, speciale bestandswaarschuwingen in of uit te schakelen, etckeeper in of uit te schakelen voor het doorvoeren van bestaande wijzigingen in /etc vóór de installatie.

Ook kunt u de front-end of pakketbeheerder op een hoger niveau (zoals apt, yum, dnf enz.) en de onderliggende pakketbeheerder of pakketbeheerder op laag niveau (dpkg, rpm enz.) instellen om met etckeeper te werken. sterk>.

Als u wijzigingen in het bestand heeft aangebracht, slaat u deze op en sluit u het bestand.

Initialiseer de Git-repository en voer een initiële commit uit

Nu je etckeeper hebt geconfigureerd, moet je de Git repository initialiseren om eventuele wijzigingen in je /etc map als volgt bij te houden. Je kunt etckeeper alleen uitvoeren met rootrechten, anders gebruik je sudo.

cd 
sudo etckeeper init

Vervolgens moet u ervoor zorgen dat etckeeper automatisch kan werken. U moet de eerste commit uitvoeren om de wijzigingen in /etc bij te houden, als volgt.

sudo etckeeper commit "first commit"

Veranderingen doorvoeren en committeren

Na het uitvoeren van je eerste commit houdt etckeeper via git nu alle wijzigingen in de map /etc bij. Probeer nu eventuele wijzigingen aan te brengen in een van de configuratiebestanden.

Voer vervolgens de volgende opdracht uit om bestanden weer te geven die zijn gewijzigd sinds de laatste commit; dit commando toont in wezen de veranderingen in /etc die niet zijn geënsceneerd voor commit, waarbij VCS git betekent en “status ” een git-subcommando is.

sudo etckeeper vcs status

Voer vervolgens de recente wijzigingen als volgt door.

sudo etckeeper commit "changed hosts and phpmyadmin config files"

Bekijk commitlogboeken

Om een log van alle commits te bekijken (de id en het commentaar van elke commit), kun je de volgende opdracht uitvoeren.

sudo etckeeper vcs log

Je kunt ook de details van een commit tonen, specificeer simpelweg de commit ID (de eerste paar tekens kunnen werken) zoals getoond.:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

Bovendien kun je het verschil tussen twee commits bekijken, zoals weergegeven. Dit is vooral handig als u wijzigingen wilt intrekken, zoals weergegeven in de volgende sectie. Je kunt de pijltjestoetsen gebruiken om omhoog en omlaag of naar links en rechts te scrollen, en afsluiten door op q te drukken.

sudo etckeeper vcs show 704cc56 a153b6847

Wijzigingen intrekken

De essentie van etckeeper is om u te helpen wijzigingen in uw map /etc bij te houden en de wijzigingen waar nodig ongedaan te maken. Ervan uitgaande dat u zich realiseert dat u enkele fouten heeft gemaakt in /etc/nginx/nginx.conf toen u het voor het laatst bewerkte en dat de Nginx-service niet opnieuw kan worden gestart vanwege fouten in de configuratiestructuur, kunt u dit terugdraaien naar de opgeslagen kopie in een specifieke commit (bijvoorbeeld 704cc56) waarvan u denkt dat de configuratie als volgt correct was.

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

Als alternatief kun je alle wijzigingen annuleren en terugkeren naar de versies van alle bestanden onder /etc (en de submappen ervan) die in een specifieke commit zijn opgeslagen.

sudo etckeeper vcs checkout 704cc56 

Hoe u ervoor kunt zorgen dat wijzigingen automatisch worden doorgevoerd

Etckeeper wordt ook geleverd met een service en timereenheden voor Systemd, inbegrepen in het pakket. Om “Autocommit” van wijzigingen in de map /etc te starten, start u eenvoudigweg de etckeeper.timer-eenheid en controleert u of deze actief is , als volgt.

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

En schakel het in om automatisch te starten bij het opstarten van het systeem, zoals weergegeven.

sudo systemctl enable etckeeper.timer

Zie voor meer informatie de Etckeeper-projectpagina: https://etckeeper.branchable.com/.

Conclusie

In deze handleiding hebben we laten zien hoe u etckeeper installeert en gebruikt om wijzigingen op te slaan in de map /etc in een versiebeheersysteem (VCS) zoals git en bekijk of herstel de wijzigingen die zijn aangebracht in /etc, waar nodig. Deel uw mening of stel vragen over etckeeper via het onderstaande feedbackformulier.