Sådan styres / etc med versionskontrol ved hjælp af Etckeeper på Linux


I Unix/Linux-katalogstrukturen er /etc -mappen, hvor værtsspecifikke systemdækkende konfigurationsfiler og kataloger findes; det er en central placering for alle konfigurationsfiler, der dækker hele systemet. En konfigurationsfil er en lokal fil, der bruges til at kontrollere, hvordan et program fungerer - det skal være statisk og kan ikke være en eksekverbar binær.

For at holde styr på ændringer i systemkonfigurationsfiler laver systemadministratorer normalt kopier (eller sikkerhedskopier) af konfigurationsfiler, før de ændres. På den måde, hvis de direkte ændrede den originale fil og lavede en fejl, kan de vende tilbage til den gemte kopi.

Etckeeper er en enkel, brugervenlig, modulær og konfigurerbar samling af værktøjer, der lader /etc styres ved hjælp af versionskontrol. Det giver dig mulighed for at gemme ændringer i /etc -mappen i et versionskontrolsystem (VCS), såsom git (som er det foretrukne VCS), mercurial, basar eller darcs repository. Således giver du dig mulighed for at bruge git til at gennemgå eller tilbagekalde ændringer, der blev foretaget i /etc , i tilfælde af en fejl.

Dens andre funktioner er:

  1. det understøtter integration med front-end pakkehåndtering, herunder APT, YUM, DNF, Zypper og pacman-g2 for automatisk at foretage ændringer foretaget til /etc under pakkeopgraderinger.
  2. det sporer filmetadata (såsom filtilladelser), som git normalt ikke understøtter, men det er vigtigt for /etc , og
  3. det inkluderer både et cron-job og en systemd-timer, som hver kan foretage spændende ændringer til /etc automatisk en gang om dagen.

Sådan installeres Etckeeper i Linux

Etckeeper er tilgængelig i Debian, Ubuntu, Fedora og andre Linux-distributioner. For at installere det skal du bruge din standard pakkehåndtering som vist. Bemærk, at denne kommando også installerer git og et par andre pakker som afhængigheder.

$ 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

På Enterprise Linux-distributioner som RedHat Enterprise Linux (RHEL), CentOS og andre skal du tilføje EPEL-lageret, før du installerer det som vist.

# yum install epel-release
# yum install etckeeper

Konfiguration af Etckeeper i Linux

Når du har installeret etckeeper som vist ovenfor, skal du konfigurere, hvordan den fungerer, og dens hovedkonfigurationsfil er /etc/etckeeper/etckeeper.conf. For at åbne den til redigering skal du bruge en af dine foretrukne tekstbaserede redaktører som vist.

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

Filen indeholder flere konfigurationsindstillinger (hver med en lille, klar brugsbeskrivelse), der giver dig mulighed for at indstille versionskontrolsystemet (VCS) til brug, videregive indstillinger til VSC; for at aktivere eller deaktivere timer, aktivere eller deaktivere speciel filadvarsel, aktivere eller deaktivere etckeeper fra at begå eksisterende ændringer til /etc før installationen.

Du kan også indstille pakkehåndtering på front- eller højere niveau (såsom apt, yum, dnf osv.) Og underliggende eller lavt niveau pakkehåndtering (dpkg, rpm osv.) Til at arbejde med etckeeper.

Hvis du har foretaget ændringer i filen, skal du gemme den og lukke filen.

Initialisering af Git Repository og udfør Initial Commit

Nu hvor du har konfigureret etckeeper, skal du initialisere Git-arkivet for at begynde at spore eventuelle ændringer i din /etc -mappe som følger. Du kan kun køre etckeeper med rodtilladelser, ellers brug sudo.

$ cd 
$ sudo etckeeper init

Gå derefter for at etckeeper skal kunne arbejde automatisk, du skal køre den første forpligtelse for at begynde at holde styr på ændringerne i /etc som følger.

$ sudo etckeeper commit "first commit"

Efter at have kørt din første forpligtelse sporer etckeeper via git nu eventuelle ændringer i /etc -mappen. Prøv nu at foretage ændringer i nogen af konfigurationsfilerne.

Kør derefter følgende kommando for at vise filer, der er ændret siden sidste forpligtelse; denne kommando viser i det væsentlige ændringer i /etc , der ikke er iscenesat til commit, hvor VCS betyder git og "status" er en git-underkommando.

$ sudo etckeeper vcs status

Foretag derefter de seneste ændringer som følger.

$ sudo etckeeper commit "changed hosts and phpmyadmin config files"

For at få vist en log over alle forpligtelser (hver forpligtelses id og kommentar) kan du køre følgende kommando.

$ sudo etckeeper vcs log

Du kan også vise detaljerne i en forpligtelse, blot angive kommitterings-id'et (de første få tegn kan fungere) som vist:

$ sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
$ sudo etckeeper vcs show a153b6847

Desuden kan du se forskellen mellem to forpligtelser som vist. Dette er især nyttigt, hvis du vil tilbagekalde ændringer som vist i næste afsnit. Du kan bruge piletasterne til at rulle op og ned eller til venstre og højre og afslutte ved at trykke på q .

$ sudo etckeeper vcs show 704cc56 a153b6847

Essensen af etckeeper er at hjælpe dig med at spore ændringer i din /etc -mappe og vende ændringerne om nødvendigt. Forudsat at du er klar over, at du lavede nogle fejl i /etc/nginx/nginx.conf, da du sidst redigerede det, og Nginx-tjenesten ikke kan genstartes på grund af fejl i konfigurationsstrukturen, kan du vende tilbage til den gemte kopi i en bestemt begå (f.eks. 704cc56), hvor du mener, at konfigurationen var korrekt som følger.

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

Alternativt kan du annullere alle ændringer og vende tilbage til versioner af alle filer under /etc (og dets underkataloger), der er gemt i en bestemt forpligtelse.

$ sudo etckeeper vcs checkout 704cc56 

Sådan aktiveres ændringer automatisk

Etckeeper leveres også med en service- og timerenhed til Systemd, der er inkluderet i pakken. For at starte “Autocommit” af ændringer i /etc -mappen skal du blot starte etckeeper.timer -enheden indtil videre og kontrollere, om den er i gang, som følger.

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

Og gør det muligt for den automatisk at starte ved systemstart som vist.

$ sudo systemctl enable etckeeper.timer

For mere information, se Etckeeper-projektsiden: https://etckeeper.branchable.com/.

I denne vejledning har vi vist, hvordan man installerer og bruger etckeeper til butiksændringer i /etc -mappen i et versionskontrolsystem (VCS) såsom git og gennemgår eller gendanner ændringer, der blev foretaget til /etc , hvor det er nødvendigt. Del dine tanker eller still spørgsmål om etckeeper via feedbackformularen nedenfor.