Weekend Prosjekt: Styr din konfigurasjon med Etckeeper

Når vi diskutert sikre en problemfri oppgradering nylig, jeg nevnte casually en av fordelene med å bruke versjonskontroll for å holde rede på endringer i /etc /
konfigurasjon katalogen – det faktum at det gjør det enkelt å overføre innstillingene til en ny maskin. Men det er andre fordeler også, som for eksempel å rulle tilbake etter ulykker, og spore opp utilsiktede endringer gjort av overaktiv pakker. La oss ta en titt på hvordan etckeeper kan hjelpe.

Bakgrunn

Debian-utvikler Joey Hess med start skriver etckeeper etter utilfredsstillende eksperimenter med andres forsøk på å skohorn /etc /
inn i en git repository. Noen folk hadde gjort det med hell, men kjørte inn i to store problemer: Hva gjør du når en pakke installasjon gjort endringer i katalog eller en fil (dvs, og brukeren kan ikke gå inn i vanlig loggen), og hva de skal gjøre om metadata endringer som filrettigheter. Filrettigheter er ganske viktig for filer som /etc /shadow
, men de fleste versjonskontrollsystemer (VCS) er ikke satt opp til å legge merke til dem, fordi VCS er utviklet primært for programvareutvikling.

Hess søkt ut å kombinere hjemmebrygget løsninger demonstrert av andre til en lett installerbare pakken. Resultatet er etckeeper, et meget fleksibelt revisjonskontroll tjeneste for /etc /
. Den kan bruke ikke bare Git (den opprinnelige alternativet), men noen av en lang liste med populære VCSes, inkludert Mercurial, darc, og Bazaar. Den sporer endringer i metadata på egen hånd, og selv om du kan manuelt angi Endrings når du redigerer en fil, gjør det også automatiske nattlige kontroller for å registrere eventuelle oppdateringer du har oversett.

Etckeeper kroker også i alle de store pakkeledere: Apt, nam, og Pacman-G2. Som et resultat, er eventuelle endringer som utløses av pre-installasjonsskript, nye pakker, eller post-installasjonsskript automatisk tagget i loggen

Installasjon &.; Konfigurasjon

Etckeeper er allerede pakket for de fleste av de store distribusjoner, inkludert Debian, Ubuntu, Fedora og Opensuse. Hvis du bruker en annen fordeling – eller rett og slett foretrekker å kompilere fra kildekode – du kan hente den nyeste utgivelsen fra etckeeper nettstedet. Den nyeste versjonen er 0,57, fra november 2011. Det er ingen store avhengigheter for kjerne pakken selv, men du trenger ikke å ha minst en av de støttede VCSes installerte – etckeeper gjør bruk av dine VCS av valg, i stedet for å gjennomføre sin egen.

Hovedkonfigurasjonsfilen ligger i /etc/etckeeper/etckeeper.conf, og det første alternativet du må sjekke er VCS linje. Bare uncomment-ut VCS som du har tenkt å bruke; de fleste distribusjoner vil allerede ha valgt en fornuftig standard som fungerer godt med sin andre utviklingsverktøy (for eksempel Ubuntu mislighold til Bazaar). Under denne linjen er et sett av COMMIT_OPTIONS linjer, der du kan angi kommandolinjealternativer som etckeeper trenger å passere til VCS på hver logget endring.

Neste er to alternativer for å finslipe ned etckeeper sin logging atferd. Du kan uncomment AVOID_DAILYAUTOCOMMITS = 1
kø for å fortelle etckeeper ikke å kjøre en nattlig sjekk leter etter unlogged endringer. Du kan også uncomment AVOID_COMMIT_BEFORE_INSTALL = 1
linje å holde etckeeper fra å kjøre en ekstra autocommit før du starter en pakke installasjon. Dette er trygt å gjøre, fordi hvis autocommit er slått av, vil etckeeper stoppe installasjonsprosessen, advare deg om at det er en un-logget endring i /etc
at du trenger å bekymre seg, og lar deg å utføre commit (eller rulle den tilbake) før du fortsetter

De to siste linjene be deg om å spesifisere høyt nivå og lavt nivå pakke ledere brukes på ditt system &ndash.; for eksempel, Apt og dpkg på en Debian-basert system, eller nam og rpm på en RPM-basert system. Også her distro vil trolig ha standard valgt riktig for deg. Du kan
må initial etckeeper etter installasjon – men bare hvis din distro pakken ikke gjøre det automatisk. Les dokumentasjonen for å være sikker, men hvis du trenger å initialisere systemet, bare kjøre sudo etckeeper init.

Klar, /etc, Run

I praksis etckeeper vil kjøre i bakgrunnen, og din viktigste samspill med det vil være gjennom changelog meldinger du sender inn etter hver redigering økt der du endrer en konfigurasjonsfil. Etckeeper trenger root privilegier for å kjøre, men vil du også trenger dem til å redigere filer i /etc /
.

For eksempel, hvis du endrer innholdet i /etc /hosts
, kan du logge årsaken til endringen med etckeeper. Type: sudo etckeeper begå " Lagt ny NAS boksen til hosts-filen ".. Etckeeper vil begå den endrede filen til VCS, merket med innleggingsmeldingen.

Du kan sjekke historien om endringene ved hjelp av rå VCS verktøy. For eksempel på en Debian-basert system, skriver sudo bzr log --line /etc. Bazaar vil spille tilbake dato og loggmeldinger for hver av endringene. Du er mer sannsynlig å huske detaljene i endringen hvis du har gjort det selv, men ikke glem at etckeeper logger endringer utløst av pakkeanlegg i tillegg. For å se detaljer om siste endringen linje-for-linje, er alt du trenger å gjøre typen sudo bzr diff /etc.

Etckeeper skriver detaljerte loggmeldinger til VCS når spore pakken-utløst endringer. Du vil se " begå endringer i /etc etter apt kjøre " eller en lignende melding, fulgte en liste over de endrede pakker, med en + indikerer en installasjon, og en - som indikerer en fjerning

begår gjort under etckeeper daglige sweep logges med ". daglig autocommit " som meldingen. Naturligvis er dette den minst informative av endringsloggen meldinger, men etckeeper har ingen informasjon å gå på i disse forholdene. I dette tilfellet, er det viktig å huske at de VCS begå logger selve filen endring for rollback formål også. En uidentifisert endring fanget av nattlig feie kanskje ikke har et klart budskap, men minst du vet det er logget, og du kan gå tilbake den i tilfelle problemer.

Metadata endringer er logget inn sin egen spesiell fil /etc/.etckeeper
. Ved å skrive tillatelser og andre metadataverdier til en flat fil, får etckeeper rundt det faktum at de fleste VCSes ikke spore filen metadata i det hele tatt. Tillatelses endringer dermed registreres i etckeeper loggene som endringer i .etckeeper filen. Du kan lese innholdet i filen på egen hånd, eller vise sin logg med de vanlige VCS diff kommandoer.

Keep it real

Selvfølgelig, er at det bare prinsippet begrensning etckeeper overvåker /etc /katalog, mens det er andre viktige steder kan det være lurt å holde styr på, også. Men etckeeper er ikke bare en mekanisme for å bruke versjonskontroll på en enkelt katalog; det kroker i pakken ledelse og utfører nattlig skanner for en grunn. /etc /katalog er der endringer er ment
å gå regelmessig; Hvis du ønsker å sette opp dine VCS å se andre spesifikke steder (for eksempel $ HOME
eller /var /www /
), er du sannsynligvis til å trenge mye av tilpasning uansett.

Det kan likevel være en verdig øvelse; hvis du er så interessert, anbefaler jeg å sjekke ut linkene at Hess gir på sin første etckeeper kunngjøring. De er Git-sentrisk, men gjelder like godt til andre VCS valg; du kan lære mye ved å følge prosessen som andre har vært nede før. Anmeldelser