GNU/Linux >> Znalost Linux >  >> Linux

Je dobrý nápad používat git pro řízení verze konfiguračního souboru?

Krátká odpověď na vaši otázku je Ano .

Pro sledování konfiguračních souborů bych neváhal doporučit Git (nebo jakýkoli jiný software pro správu verzí). Od té doby jsem produktivnější (zejména při konfiguraci nových instalací) a mám větší důvěru ve své konfigurační soubory. Díky správě verzí mám záznam o tom, co byly provedeny změny a zpráva o odevzdání poskytuje důvod proč změna byla provedena. Pokud má změna nezamýšlené vedlejší účinky, mohu si snadno prohlédnout protokol/historii a zjistit, jaká změna tyto účinky způsobila.

Osobně bych byl opatrný se sledováním všech souborů pod / kořenový adresář. Seznam cest, které je třeba ignorovat, by mohl být rozsáhlý a nepraktický. Upřednostňuji ponechat každou logickou sadu souborů v jejich vlastním úložišti.

Ručně používám Git ke sledování svých osobních konfigurační / spouštěcí soubory, např. konfigurace Vim, funkce Bash, aliasy atd. – podobný přístupu uvedenému v části Jak sledovat $HOME pomocí git. Uchovávám každou sadu souborů v jejich vlastním úložišti a používám symbolické odkazy na domovský adresář.

Pro systém konfigurační soubory, používám Git s Etckeeper ke sledování souborů v mém /etc adresář.

Nevýhody

Jeden problém, na který je třeba si dát pozor, je, pokud sledované soubory obsahují pevné odkazy . Když se Git používá k vyzvednutí souborů nebo jiné úpravě pracovního stromu, odpojí soubory a poté je znovu vytvoří. Podrobnější vysvětlení najdete v Git, Dotfiles a Hardlinks.

Etckeeper

Etckeeper lze použít k uchování úplné historie změn provedených v /etc. Sleduje metadata souborů, která systémy řízení revizí normálně nepodporují, ale to je důležité pro /etc , jako jsou oprávnění /etc/shadow .

Připojuje se ke správcům balíčků, jako jsou apt a yum, a (ve výchozí konfiguraci) spouští před a po instalaci, takže všechny změny jsou /etc jsou sledováni.

Pokud je balíček nainstalován nebo odstraněn, všechny nepotvrzené změny v /etc budou potvrzeny před operací balíčku, takže existují dvě potvrzení:

  1. “uložení nepotvrzených změn do /etc před spuštěním yum“
  2. „potvrzení změn v /etc po spuštění yum“

Použil jsem to s distribucemi založenými na Debianu a Red Hatu a vím, že podporuje správu balíčků Arch. Nemohu říci, kolik automatizace by to přidalo do systému Gentoo, ale je k dispozici balíček.

Podporuje také odesílání konfiguračních souborů do vzdáleného úložiště (který by měl být samozřejmě soukromý).

Konfigurace

Po instalaci balíčku jej možná budete muset nakonfigurovat (/etc/etckeeper/etckeeper.conf ), např. na systémech Ubuntu se výchozí systém správy verzí změní z Git na Bazaar. Můžete také deaktivovat denní automatické potvrzení .

Denní automatické potvrzení

Změny mohou být automaticky provedeny denní úlohou cron . To může být nepříjemné, protože úložiště může být přeplněné více automatickými zprávami o odevzdání.

Odkomentuji příslušný řádek v /etc/etckeeper/etckeeper.conf :

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Ignorujte určité soubory

Upravit /etc/.gitignore specifikovat všechny soubory, které nemají být sledovány.

První spuštění

Po konfiguraci spusťte následující příkazy:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Pokud je váš aktuální adresář etc , můžete spustit běžný git příkazy, např.,

sudo git status
sudo git log

Používám git ke sledování konkrétních oblastí mého domovského adresáře. Osobně bych nešel cestou sledování kořenového adresáře, ale musím říct, že obdivuji vaše ambice. :)

Možná by vám tato sbírka zkušeností mohla poskytnout lepší představu o tom, do čeho se můžete dostat:

účinky inicializace úložiště git na kořenový adresář linuxu 3 :)

Omlouvám se za "odpověď", místo pouhého vhození odkazu do komentáře; nicméně, ne dost rep, ale přál si zazvonit.

Upravit

Páni! Velmi pěkná odpověď od @AnthonyGeoghegan. Věřím, že to není takový boj, jak jsem si to původně představoval.


Linux
  1. Shell skript pro přesun nejstarších souborů?

  2. K čemu jsou Inody dobré?

  3. Čekat na dokončení stahování více souborů?

  1. Jak používat Inotifywait ke sledování adresáře pro vytváření souborů s konkrétní příponou?

  2. Použijte Najít a najít k vyhledání souborů v Linuxu

  3. Proč rsync nepoužívá delta-transfer pro místní soubory?

  1. KRename – výkonný dávkový přejmenovávač souborů pro Linux

  2. Jak používat Netcat k přenosu souborů v systému Linux

  3. Jak používat Logrotate ke správě souborů protokolu