[sage] Konfigurations-Datei-Management

Andreas Jellinghaus andreas at ionisiert.de
Wed Jan 15 11:32:19 CET 2014


cfengine, slack, puppet und weitere tools sind ähnliche Lösungen.

slack und cfengine sind alt, ich würde eher puppet verwenden, die anderen
Alternativen kenne ich nicht.

Die grund idee ist: du hast ein zentrales source code repository und
checkout, und alle änderungen da drinn verwaltest du mit git, svn oder
sowas. Damit hast du dort immer eine sicht, welche dateien wann und von wem
und warum geändert wurden.

Weiter hast du puppet oder ein ähnliches client/server system: auf jedem
deiner server läuft ein client, zum beispiel manuell oder als cron job, der
sich zum server verbindet und dort seine konfiguration samt daten abholt.
Die konfiguration ist teilweise shell ähnliche (welche befehle ausgeführt
werden sollen), teilweise sagt sie auch welche daten/dateien an welchen ort
geschrieben werden sollen und mit welchen rechten (user, group, mode,...).

Du wullst also zum beispiel den server foo konfigurieren als
ntpd+debian+postfix-relay
und hast dann diese drei module. "ntpd" hat ien konfig file was plain oder
als template vorliegt, und anweisungen das es nach /etc/ntpd.conf
geschrieben werden soll, root:root 640 sein soll, und bei jeder änderung
"/etc/init.d/ntpd restart" ausgeführt werden soll - oder ähnliches.

Ein wenig nervige komplexität ist in diesen systemen immer: das sind ja
client/server systeme. Wenn du sichere daten auf dem server hast, z.B.
datenbank passwörter die am ende in config files landen, oder gar ssh und
ssl schlüssel etc. - dann willst du das sicher konfigurieren das jeder
server mit dem client befehl nur auf die daten zugreifen kann, die er
braucht. bei cfengine hatte ich mir vor jahren dafür ein script
geschrieben, was meine config scannt (ich hatte ein feste struktur main
config -> pro host config -> module -> dateien), und daraus die ACL
generiert, welcher host auf welche datei zugreifen darf. Weis nicht wie das
heute ist, da sollte man aber aufpassen - nicht das ein angreifer auf einem
system die config aller system auslesen kann.

bei slack kann man das zum beispiel vergessen - slack ist ein sehr simples
perl dingens bei dem im prinzip per rsync daten übertragen werden. vorteil:
simpler rsync server als zentrale stelle. nachteil: kann man da überhaupt
konfigurieren, das nur manche hosts manche daten bekommen? selbst wenn,
vielleicht doch lieber gleich was anderes verwenden.

über puppet und die anderen alternativen können andere besser berichten
ob/wie kompliziert das da geht - oder ob sie empfehlen einen anderen
mechanismus (welchen?) für das umherkopieren von secrets jeder art zu
verwenden.

Andreas





Am 15. Januar 2014 08:54 schrieb Manuel Schneider <
manuel.schneider at wikimedia.ch>:

> Hallo zusammen,
>
> ich danke Euch für Eure Rückmeldungen! cfengine ist ein paar Mal genannt
> worden, das hatte ich auch schon einmal kurz gesehen, das schaue ich mir
> mal genauer an.
>
> Was in meiner Anfrage wohl nicht richtig rüberkam:
> Ich suche keine Lösung um Software zu installieren oder irgendetwas zu
> skripten. Daher scheint mir Putty nach wie vor nicht das zu sein, was
> ich brauche.
>
> Ich suche eine Lösung, um Textdateien und deren Abweichungen zu
> verwalten. Jemand bestätigte mir, dass Git das richtige Tool sei, mir
> ist aber immer noch nicht klar, wie ich das mit Git machen kann.
>
> Beispiel ntpd:
>
> /etc/ntpd.conf -> Standardeinstellungen -> bekommt jeder Rechner
> generell installiert
> * Rechner der Gruppe "Server XYZ" bekommen eine ntpd.conf + ein "Server
> XYZ"-Diff
> * Rechner der Gruppe "Clients ABC" bekommen eine ntpd.conf + ein "Cients
> ABC"-Diff
>
> Änderungsmanagement:
> * eine generelle Änderung die alle Clients betrifft. Also ändere ich
> /etc/ntpd.conf und lasse mir die neuen Dateiversionen erstellen und
> ausrollen
>
> * Änderungen für einzelne Gruppen werden an den jeweiligen Diff-Files
> vorgenommen (oder an einer "gepatchten" Datei, aus der das Tool
> hinterher anhand der ntpd.conf ein neues Diff errechnet)
>
> * Änderungen durch Systemupdate - die lokale ntpd.conf hat sich
> geändert. Sie wird importiert und ich sehe mir das Diff an und entscheide:
> ** welche Änderungen werden mit der allgemeinen ntpd.conf gemerged?
> ** welche Änderungen sind Teil eines neuen Diffs?
> Anschliessend wird wir im ersten Fall vorgegangen, es werden neue
> Dateiversionen hergestellt und ausgerollt.
>
> Wie man mit Git Revisionen verwalten kann ist mir bekannt, das ist
> bekanntlich der Kern des Produkts. Ob / wie ich allerdings ältere
> Revisionen mit neueren Diffs mergen kann, so dass auf diese älteren
> Revisionen aufbauende Änderungen ebenfalls diese Änderungen "erben", das
> ist mir nicht bekannt.
>
> Mein Problem kann doch nicht so exotisch sein, oder? Ich will doch nur,
> dass meine Textfiles in Struktur und Ordnung bleiben und ich nicht
> überall alles von Hand pflegen und nachziehen muss.
>
> Grüsse,
>
>
> Manuel
> --
> Wikimedia CH - Verein zur Förderung Freien Wissens
> Lausanne, +41 (21) 34066-22 - www.wikimedia.ch
>
> _______________________________________________
> SAGE mailing list
> SAGE at guug.de
> http://lists.guug.de/mailman/listinfo/sage
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.guug.de/pipermail/sage/attachments/20140115/42d1faa7/attachment-0001.htm 


More information about the SAGE mailing list