Hi, ich verwalte einige Linux-VMs (hier CentOS 7). Die werden nach einem standardisierten Verfahren erstellt (hier libvirt, PXE und kickstart). Sie haben dann eine Grundkonfiguration. Dann gehe ich her passe sie für die geplante Aufgabe an. Ich installiere z.B. ein paar neue Pakete, ändere ein paar Configdateien etc. Nicht immer weiß ich vorher wie die korrekten Einstellungen sind, ich muss also eine Configdatei ein paar mal ändern, ausprobieren, wieder ändern bevor es sitzt. Wenn alles läuft würde ich gerne diese von mir gemachten Konfigurationsänderungen in ein Versionskontrollsystem (hier git) einchecken, damit sie 1. dokumentiert sind 2. auf einer weiteren VM möglichst einfach reproduziert werden können 3. beim Umzug auf eine neues OS (z.B. CentOS 8 wenn es irgendwann mal rauskommt) möglichst einfach auf die neue VM migriert werden können. Ich suche nun ein Tool, welches mir die nach der automatischen Grundkonfiguration gemachten Änderungen möglichst einfach und komplett aus der fertigen VM "herauszieht" und als Dateien in meinen git-Tree legt. Also so etwas wie ein besseres Diff. "besser", denn es sollte mit Dingen wie z.B. neu installierten Paketen (hier RPM), Prelink, automatischem Indizieren der man-Datenbanken etc. umgehen können. Gut wäre auch ein System, welches Änderungen an den Selinux-Parametern (z.B. umgestellte Booleans) aus den entsprechenden Binärdateien rauszieht. Ich habe verschiedene Tools wie z.B. Ansible, Chef, etc. gefunden. Die gehen aber einen anderen Ansatz. Dort kann man seine Änderungen nicht an der lebenden Maschine direkt vornehmen, sondern muss alle Änderungen in einer Domain Specific Language schreiben und dann über das Tool deployen. Wenn ich damit hunderte identische Maschinen erstellen will ist das sicher ein guter Ansatz. Ich hab hier aber erst mal nur eine und da hab ich doch einen nicht zu unterschätzenden Overhead wenn ich statt direkt in ner Configdatei zu editieren und auf Speichern zu klicken ich jede neu zu ändernde Configdatei erst mal auf meine Workstation in den richtigen Pfad kopieren muss, sie in ein "recipe" aufnehmen muss und sie dann erst editieren kann. Dann merke ich daß es die falsche war und darf sie wieder rauswerfen und statt dessen eine andere kopieren etc. Kennt jemand so ein Tool oder etwas, was in diese Richtung geht?
Gerd E. schrieb: > Wenn alles läuft würde ich gerne diese von mir gemachten > Konfigurationsänderungen in ein Versionskontrollsystem (hier git) > einchecken > Ich suche nun ein Tool, welches mir die nach der automatischen > Grundkonfiguration gemachten Änderungen möglichst einfach und komplett > aus der fertigen VM "herauszieht" und als Dateien in meinen git-Tree > legt. Klingt so als würdest du "etckeeper" suchen. Weiß nicht, wie gut sich das in CentOS integriert, aber hier auf Debian nutzt es apt-Hooks, um nach Paket-Update/Installation/Entfernen automatisch zu committen.
Axel S. schrieb: > Klingt so als würdest du "etckeeper" suchen. Danke, das kannte ich noch nicht. Es verfolgt einen etwas anderen Ansatz als ich ihn oben skizziert hatte. Denn das komplette /etc wird dann im git gepflegt, nicht nur die Änderungen die ich darin nach der Grundkonfiguration gemacht habe. Die Änderungen bekommt man natürlich dennoch über die git history. Wenn ich so darüber nachdenke, fallen mir 2 Punkte ein die mir daran nicht gefallen: 1. es scheint nur /etc zu betreffen. Oft muss ich aber auch Dateien unter z.B. /var/www/html, /var/lib/irgendwas etc. anlegen und konfigurieren um einen bestimmten Dienst zum Laufen zu bekommen. 2. Ich befürchte, daß ich bei späteren Änderungen in /etc nicht leicht die Änderungen, die ich manuell gemacht habe von den Änderungen, die durch ein Update eines RPM-Pakets gemacht wurden, unterscheiden kann. > Weiß nicht, wie gut sich > das in CentOS integriert, aber hier auf Debian nutzt es apt-Hooks, um > nach Paket-Update/Installation/Entfernen automatisch zu committen. Es scheint auch hooks für yum und dnf zu haben, im Centos-EPEL ist etckeeper auch gepackaged. Von daher also unter Centos und Fedora wohl ähnlich einfach zu nutzen wie unter Debian. Hast Du persönlich Erfahrung mit dem etckeeper gemacht? Funktioniert das in der Praxis oder was hast Du für Probleme beobachtet?
Ich kann dir nur empfehlen mal ansible zu testen. Du kannst deine Bestandskonfiguration ja Schritt fuer Schritt migrieren. Ich setze damit gerade einen LXC-Host mit > 10 Containern auf die jeweils einzelne Dienste hosten. Das ganze ist sehr bequem da man bei einem Fehler innerhalb von ein paar Minuten die den kompletten LXC Container mit der gesamten Konfiguration wieder hergestellt hat. Desweiteren dokumentierst du automatisch die Systemkonfiguration und musst dich bei einer erneuten Einarbeitung nicht mit Dingen befassen die du nie angefasst hast. Wenn man mal ein paar Dienste damit konfiguriert hat geht das ziemlich schnell weil man meist immer wieder die gleichen Dinge benoetigt und bei mehreren Servern Basiskonfigurationen in Rollen speichern kann.
dupdup schrieb: > Ich kann dir nur empfehlen mal ansible zu testen. Ich hab mir das durchaus schon angeschaut. Es löst mir das Problem, wie ich eine Config von meiner Workstation auf eine oder mehrere VMs bringe. Aber ohne das von mir oben gewünschte "bessere" diff-Tool hat das dann zur Folge, daß ich die Config nicht mehr auf der Maschine selber anpassen kann, sondern immer erst die anzupassenden Teile auf meine Workstation kopieren und dort irgendwie registrieren, in ein Recipe aufnehmen etc. muss bevor ich eine Änderung vornehmen kann. Gerade heute hab ich wieder eine VM auf ein neue Version migriert. Der Zugriff mit Samba auf ein Dir ging nicht. Ich hab 4 verschiedene Configdateien angepasst, bis ich wusste daß es eigentlich an den SELinux-Contexts lag. So konnte ich jede direkt auf der Maschine selbst bearbeiten und hatte das recht fix. Hätte ich jede der Dateien erst rüberkopieren und registrieren und hinterher wieder Löschen müssen wäre das deutlich langsamer gewesen. > Ich setze damit > gerade einen LXC-Host mit > 10 Containern auf die jeweils einzelne > Dienste hosten. Wie gesagt, ich habe es fast immer nur mit einer VM zu tun. Alles, was an Config bei mehreren Maschinen identisch ist, decke ich über spezielle RPM-Pakete ab. Ich kann mir also die VM mit "yum install config-web-base" oder so ähnlich schon recht weit konfigurieren lassen. Nur der Rest ist das worum es mir geht. Das, was Du mit Ansible machst, hab ich also zu einem großen Teil über spezielle RPMs abgedeckt. Mir geht es jetzt darum, das Erstellen dieser RPMs zu vereinfachen, in dem ich die veränderten Dateien "auf dem Silbertablett" geliefert bekommen möchte.
Gerd E. schrieb: > Hast Du persönlich Erfahrung mit dem etckeeper gemacht? Funktioniert das > in der Praxis oder was hast Du für Probleme beobachtet? Ich habe es ehrlich gesagt noch nicht gebraucht. Also ich committe schon meine Änderungen in /etc. Aber ich mußte noch nie zurückrollen oder Änderungen auf ein anderes System übertragen. Andererseits ist das die übliche git-Magie. Ob du einen diff jetzt aus dem /etc repo oder einem anderen extrahierst, ist am Ende kein Unterschied. Was deine anderen Punkte angeht: /var/www/ ist deine private Spielwiese, mir wäre nicht bekannt, daß da irgendwas automatisch angelegt oder verändert würde. Also einfach irgendwo spiegeln und gut. In /var/lib/ mußte ich noch nie irgendwas ändern. Packages legen da Verzeichnisse an (und dann zur Laufzeit temporäre Files oder Sockets). Auf meinen Systemen finden sich schützenswerte Konfigurationsfiles tatsächlich nur unter /etc und /home.
Dürfte sowieso kein Tool geben, das genau die selben Dateien als "Konfiguration" betrachtet. Warum nicht einfach die Liste der Dateien mit find -newer ausgeben und in einem Editor alle Zeilen löschen, die keine Konfiguration sind? Und dann ein Editor-Makro oder ein Script, das ein git add vor jede Zeile stellt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.