Projektidee: dotfiles++ (oder so.. ;)

unmatrix

Well-Known Member
Ich verspüre schon eine ganze weile den Wunsch nach einer neuen
(BSD/UNIX-)Plattform die bei der Erstellung von Konfigurationsdateien
ein wenig Hilfe bietet - da die Idee zumindest im IRC positiven
Anklang fand, möchte ich diese hier noch einmal vorstellen.
Einwände, Vorschläge und Kritik jeder Art sind ausdrücklich erwünscht.


Ziel des Projektes soll es sein, den hilfesuchende Anwender über eine
Suchfunktion, zentral und einfach, Informationen und Beispiele zu
bestimmten Konfigurationen bereitzustellen.
Als Beispiel die Kernel-Konfiguration:
  • den Anwender wird es ermöglicht anhand der Hardware aus einer Reihe
    von Templates eine Arbeitsvorlage auszuwählen (z.B. ein Alix-Board)
  • im nächsten Schritt wird ggf. zusätzlich vorhanden Hardware
    hinzugefügt (Wlan-Karte XY)
  • anschließend werden weitere Teil-Konfigurationen anhand der
    gewünschten Aufgabengebiete ausgesucht (pf, QoS, VPN)
  • abschließend bekommt der Anwender eine fertige und gut dokumentierte
    Kernel-Konfigurationsdatei (kann diese speichern, erweitern,...)
Gleiches Prinzip (nur mit anderen Kriterien (z.B. ohne Hardware)) für
die pf.conf und andere Sachen, bei den es Sinn macht.


Soviel zum Ablauf - technisch bin ich bei folgenden Überlegungen/Fragen
hängen geblieben:
  • Speicherung der Daten:
    • CouchDB [1][2]:
      Die HTTP-Api und die eingebauten Replikationsmechanismen
      ermöglichen sehr viel Flexibilität was die Benutzung der Plattform
      angeht:
      • einfacher zugriff von Web- GUI oder TUI-Anwendung möglich
      • lokale Kopien ggf. mit internen Erweiterungen möglich
      Dazu kommt noch die Tatsache, dass durch die
      Dokumentenorientierung die Struktur der später unterstützten
      Konfigurationsformate praktisch keine Rolle spielt.
    • ???
  • Web-App oder (Desktop)-App (GUI, TUI) - oder alles beide/drei?
    Ein Webseite bedeutet den geringsten Aufwand, nimmt aber die
    Möglichkeit der automatischen Hardwareerkennung.
    Für ein textbasierendes UI sehe ich keinen wirklichen Nutzen!?
  • Wie kommen die Informationen in die DB?
    Werden ganze Dateien mit entsprechender Kommentierung (welcher
    Syntax?) hochgeladen, oder muss die Konfiguration bereits von den
    Anwender in logische Einheiten zerlegt werden?

Soooo... nun bin ich auf eure Meinung gespannt ;)

PS: Wer helfen will, kann sich gerne hier melden.

[1] http://couchdb.apache.org/
[2] http://chaosradio.ccc.de/cre125.html
 
Die Idee gefällt mir.

Bei der Beurteilung möglicher Lösungsansätze kann ich aber nicht mitreden, da mir schlicht das Wissen dazu fehlt. Trotzdem eine Anregung:

Bei deiner Beschreibung kommt mir spontan m0n0wall und FreeNAS in den Sinn. Dort gibt es eine Web-GUI und man kann verschiedenste Konfigurationsfiles bearbeitet.
Statt die Files auf die direkt am User vorbei auf die Platte zu schreiben, kann man die Files ja auch zum Speichern und manueller Nacharbeit anbieten.

Keine Ahnung ob Teile davon als Ausgangslage dienen können.

mousaka
 
Zuletzt bearbeitet:
Ich verspüre schon eine ganze weile den Wunsch nach einer neuen
(BSD/UNIX-)Plattform die bei der Erstellung von Konfigurationsdateien
ein wenig Hilfe bietet - da die Idee zumindest im IRC positiven
Anklang fand, möchte ich diese hier noch einmal vorstellen.
Einwände, Vorschläge und Kritik jeder Art sind ausdrücklich erwünscht.


Ziel des Projektes soll es sein, den hilfesuchende Anwender über eine
Suchfunktion, zentral und einfach, Informationen und Beispiele zu
bestimmten Konfigurationen bereitzustellen.
Als Beispiel die Kernel-Konfiguration:
  • den Anwender wird es ermöglicht anhand der Hardware aus einer Reihe
    von Templates eine Arbeitsvorlage auszuwählen (z.B. ein Alix-Board)
  • im nächsten Schritt wird ggf. zusätzlich vorhanden Hardware
    hinzugefügt (Wlan-Karte XY)
  • anschließend werden weitere Teil-Konfigurationen anhand der
    gewünschten Aufgabengebiete ausgesucht (pf, QoS, VPN)
  • abschließend bekommt der Anwender eine fertige und gut dokumentierte
    Kernel-Konfigurationsdatei (kann diese speichern, erweitern,...)
Gleiches Prinzip (nur mit anderen Kriterien (z.B. ohne Hardware)) für
die pf.conf und andere Sachen, bei den es Sinn macht.


Soviel zum Ablauf - technisch bin ich bei folgenden Überlegungen/Fragen
hängen geblieben:
  • Speicherung der Daten:
    • CouchDB [1][2]:
      Die HTTP-Api und die eingebauten Replikationsmechanismen
      ermöglichen sehr viel Flexibilität was die Benutzung der Plattform
      angeht:
      • einfacher zugriff von Web- GUI oder TUI-Anwendung möglich
      • lokale Kopien ggf. mit internen Erweiterungen möglich
      Dazu kommt noch die Tatsache, dass durch die
      Dokumentenorientierung die Struktur der später unterstützten
      Konfigurationsformate praktisch keine Rolle spielt.
    • ???
  • Web-App oder (Desktop)-App (GUI, TUI) - oder alles beide/drei?
    Ein Webseite bedeutet den geringsten Aufwand, nimmt aber die
    Möglichkeit der automatischen Hardwareerkennung.
    Für ein textbasierendes UI sehe ich keinen wirklichen Nutzen!?
  • Wie kommen die Informationen in die DB?
    Werden ganze Dateien mit entsprechender Kommentierung (welcher
    Syntax?) hochgeladen, oder muss die Konfiguration bereits von den
    Anwender in logische Einheiten zerlegt werden?

Soooo... nun bin ich auf eure Meinung gespannt ;)

PS: Wer helfen will, kann sich gerne hier melden.

[1] http://couchdb.apache.org/
[2] http://chaosradio.ccc.de/cre125.html

Liest sich interessant. Dazu eine Frage: soll das unter FreeBSD.org zu finden sein, oder soll das lokal installiert werden? Wenn letzteres der Fall sein sollte, dann gehört das in ein Installations-/Konfigurationsprogramm. So ein Programm sollte dann aber vom Terminal (auch seriell) aufgerufen werden können.
Weil Du das Beispiel der Kernelkonfiguration genannt hast: Das gehört meiner Meinung nach in sysinstall hinein.
Meines Erachtens sind Tools wie Apache, *DB usw. viel zu fett. Damit werden die Systeme nur unnötig aufgeblasen, ohne einen bestimmten Nutzen zu haben. Bei Fedora ist ein Großteil dieser Ideen schon in die GUI integriert, wie beispielsweise das Netzwerk-Manager-Applet. Da konfiguriert man fast alle Netzwerkangelegenheiten - auch VPN-Client (Screenshot).
Auch wenn einige die Nase rümpfen oder mich beschimpfen mögen, aber schaut Euch das doch mal bei Fedora an. Schick gemacht.

Meine persönlich Meinung dazu ist, dass die Idee gut ist, ABER: Wie willst Du eine Konfigurationsdatei mit der zugehörigen Datenbank synchronisieren, wenn in der Datei Änderungen vorgenommen wurden? Einen Parser schreiben? Außerdem gibt es denn nicht schon so etwas mit Webmin?

So long

JueDan
 

Anhänge

  • Bildschirmfoto-Netzwerkverbindungen.png
    Bildschirmfoto-Netzwerkverbindungen.png
    29,5 KB · Aufrufe: 418
Soooo... nun bin ich auf eure Meinung gespannt ;)

Hi,
wenn es Dir nur darum geht Meinungen zu hören, kann ich sagen das mir die Idee nicht gefällt.
Ein kurzer Satz zur Begründung: Professionelle Systeme erfordern einen hohen Lern- und Arbeitsauffwand.
Um nicht falsch verstanden zu werden, ich finde es toll wenn jemand sich mit neuem auseinander setzt und helfe gerne jedem weiter wo ich kann, aber aus prinzip erledige ich nicht (mehr) die Aufgaben für Leute die etwas eigentlich "lernen" wollen.
Zum einen wird durch automatisches generieren von Einstellungen mit Sicherheit nicht die beste Konfigurration erstellt die ein Mensch mit Zeit und Arbeitsaufwand erstellen kann und zum anderen möchte ich behaupten das die meisten Menschen den Weg des geringsten Widerstandes nehmen, KISS ist zwar mit Sicherheit ein geniales Konzept bei der Entwicklung, aber wird die Konfiguration und das erlernen zu einfach beschäftigt man sich zu wenig mit der Sache.
Wer sich nicht genug mit etwas auseinandersetzt, nicht dazu gezwungen ist sich Wissen zu _erarbeiten_ wird in der Regel auf einem geringen Wissensstand bleibe.

Darum bin ich halt der Meinung: sowas ist nutzlos und hilft keinem.

(Übrigens ist das neubauen eines Kernels sicherlich nichts was ein Anwender macht, das ist etwas das ein "Fachmann" erledigt und wenn der es nötig hat sich eine Hilfreich dokumentierte Konfigurration erstellen zu lassen, dann hat er halt den falschen Job.)
 
@ mousaka
Naja, 1:1 wird man es bestimmt nicht übernehmen können, da ich das
Projekt gerne auf einer von der Community erstellten Datenbank aufbauen
würde - so dass jeder neue Hardware (oder so) einpflegen kann. Ich
werde es mir aber mal anschauen, vielleicht kann man doch das Eine oder
Andere übernehmen.

@ juedan

Nunja, die Sache ist die, dass wenn es mehr können soll als nur bei der
Erstellung von Config-Dateien zu helfen, es sehr schnell sehr viel
Aufwand wird. Ich bin mir auch nicht sicher in wie weit man eine
"GUI für alles" umsetzen kann - war auch nicht ganz mein Ziel.

Und zu der Synchronisation - in erster Linie sind die Dateien die am
ende raus kommen (für mich) abgeschlossen. Wenn ich diese um ein paar
Sachen erweitern möchte, würde ich diese einfach zur Bearbeitung wieder
hoch laden und dann die weiteren Optionen auswählen - in gewisser Weise
brauchen wir ja eh eine Art Parser für die Configs, dass keine
doppelten Einträge (durch die verschieden gewählten Optionen) entstehen.

Und wegen den zu fett - um Abfragen an die CouchDB zu stellen braucht
man nicht mehr als ein paar HTTP-Requests und einen schlanken Parser
für JSON - also alles andere als fett. Mit den sysinstall dass ist so
eine Sache - wenn man sich für CouchDB entscheiden würde, müsste
entweder eine Inet-Verbindung bestehen oder eine lokale CouchDB laufen.

@ surfer
Nicht nur um die Meinung - auch um Leute die Lust haben zu helfen ;)
Nunja, klar kann man die vom System erzeugten Einstellung einfach blind
übernehmen - es jedoch auch als Nachschlagewerk verwenden.
Ganz ehrlich - ich finde nicht, dass das konfigurieren und bauen eines
Kernels so schwer ist, dass es nur von einen Fachmann erledigt werden
kann. Was mich an der ganzen Sache nur stört - und warum ich gerne so
ein Portal hätte - es ist doch teilweise sehr zeitintensiv.
Setze ich einen neuen Router auf - z.B. wieder das Alix-Board, möchte
ich gerne den kleinst möglichen lauffähigen Kernel verwenden. Die
Standard-Kernel-Datei Zeile für Zeile darauf zu überprüfen, ob die
angegebene Option für diese Hardware notwendig ist, stimmst du mir
sicher zu, ist relativ mühselig. Da geht es doch deutlich schneller die
Vorlage eines anderen Anwenders zu verwenden, der diese Arbeit bereits
einmal erledigt hat - vielleicht hat er was vergessen - dann kann ich
ihm ggf. darauf hinweisen - vielleicht hätte aber auch ich was
übersehen. Und sobald du dies für mehr als nur ein Rechner machen
musst, legst du dir bestimmt eh eine eigene Vorlage an - also warum
nicht mit anderen teilen? Selbiges für die Einrichtung eines
Paketfilters - man "erfindet" nicht jede Regel auf jeden Rechner neu,
sondern denk sie sich einmal aus, testet sie und macht sich einen
Vermerk - spart Zeit die man an andere Stelle investieren kann.
Ich sehe das ganze Projekt eher wie eine Bibliothek, als wie eine
automatische Erzeugung aller meiner Konfigurationsdateien.
(Schließlich greift man z.B. beim Programmieren auch auf bereits
vorhandene Mittel zurück und erweitert diese ggf. nur - genau so
wünsche ich mir auch das vorgehen bei der Einrichtung meiner Rechner.)

@ MuffiXXL
Ich kenne den "Appliance Builder" leider nicht :/
 
Klingt interessant! Vielleicht wäre die Kooperation mit einem Installerprojekt, wie BSD Installer oder den Leuten von PC-BSD eine Möglichkeit das Ganze anzugehen.
 
Nicht nur um die Meinung - auch um Leute die Lust haben zu helfen ;)
*g* schon klar, ich gehöre halt zu den Leuten die dem Kellner vollkommen ehrlich antwortet "Ja, war prima.", "Joa, aber Sauce war für meinen geschmack zu süß."; "Nein es schmeckte mir nicht." Den "Advocatus Diaboli" hätte ich nicht unter meinen Nick gesetzt wenn ich nicht "gerne" auch unbeliebte/unangenehme Meinungen vertreten würde. ;)
Nunja, klar kann man die vom System erzeugten Einstellung einfach blind übernehmen - es jedoch auch als Nachschlagewerk verwenden.
Für mich sind halt Datenblätter, Handbücher, man-pages "Nachschlagewerke" oder auch Beispielkonfigurrationen. So wie ich dich aber verstanden habe geht es darum automatisch Konfigurrationen zu erzeugen.

Ganz ehrlich - ich finde nicht, dass das konfigurieren und bauen eines Kernels so schwer ist, dass es nur von einen Fachmann erledigt werden kann. Was mich an der ganzen Sache nur stört - und warum ich gerne so ein Portal hätte - es ist doch teilweise sehr zeitintensiv. Setze ich einen neuen Router auf - z.B. wieder das Alix-Board, möchte
ich gerne den kleinst möglichen lauffähigen Kernel verwenden. Die Standard-Kernel-Datei Zeile für Zeile darauf zu überprüfen, ob die angegebene Option für diese Hardware notwendig ist, stimmst du mir sicher zu, ist relativ mühselig. Da geht es doch deutlich schneller die Vorlage eines anderen Anwenders zu verwenden, der diese Arbeit bereits
einmal erledigt hat - vielleicht hat er was vergessen - dann kann ich ihm ggf. darauf hinweisen - vielleicht hätte aber auch ich was übersehen.
Nein, stimme ich Dir in nur einem Punkt zu.
1. Kernel bauen ist nicht sooo schwer. [x] sehe ich auch so. :) Denn das Hardwareabhängige Zeug ist doch mehr als eindeutig. Wer ein wenig Erfahrung hat, kann recht schnell sagen ob die von ihm eingesetzte Netzwerkkarte eine Intel, 3com oder Realtek ist. Was daran oder an der Bedienung der üblichen Werkzeuge wie dmesg, lspci, lsusb, ... mühselig sein soll vestehe ich jetzt nicht wirklich. Im gegenteil, ich würde behaupten diese Werkzeuge einsetzen zu können ist wichtig und wenn die Routine fehlt muss es geübt werden. Wenn eine bei mir verbaute Hardware besondere Einstellungen benötigt bin ich mir auch lieber genau im klaren darüber welche und warum als einfach mehr oder weniger funktionierende Einstellungen zu übernehmen.
Hey, du willst den möglichst kleinsten Kernel laufen haben, aber keine Zeit darin investieren dich zu informieren wie das Ding funktioniert und was drin steckt? Ist das nicht so ein wenig wie wenn du sagst "Ich will das allerbeste haben, Händler such mir das teuerste aus der Liste." um dann nen Fiat Panda für 500.000Eus angedreht zu bekommen? ;)
- Du gehst auch davon aus das ein "normaler Anwender" würde, auf die Idee kommen einen Kernel neu zu bauen und dem ist halt nicht so. ;) Wer das macht oder machen will weiss sogar was ein Kernel ist. Schon alleine das ist kein normaler Anwender.
Und wenn Er (oder Sie natürlich) den Kernel neu bauen möchte, übersteigt das sogar bei weitem die IHK-Anforderrungen für die Ausbildung zum Fachinformatiker. (Lass dir das mal in Ruhe durch den Kopf gehen, Fachinformatiker, Fachmann, Ausbildungsberuf, 3 oder 3,5 Jahre oder so meine ich...)
Von "normalem" Anwender kann man da nicht sprechen (und ich wundere mich immer wieder wie viele Leute sowas für normal halten, komischerweise auffallend viele Studenten oder _engagierte_ Hobbyinformatiker, komischerweise mache ich immer die Erfahrung, das die meisten Leute die ich im geschäftlichen Alltag treffe, Menschen die ihr Geld mit IT/ET verdienen solches Wissen weit mehr schätzen.)
OK, blöd sowas zu sagen, aber schau bitte mal auf die Statistik, wie viele Prozent der Deutschen benutzen ein anders Betriebssystem als Windows? Bei einer Hand voll Menschen (von denen die überhaupt übrig bleibt und Systeme benutzt deren Kernel man neubauen kann) kann man einfach nicht von "normal" oder "üblich" sprechen.

Und sobald du dies für mehr als nur ein Rechner machen
musst, legst du dir bestimmt eh eine eigene Vorlage an - also warum
nicht mit anderen teilen?
Als es noch mein Beruf war das oft zu machen, habe ich natürlich nicht für jedes System eine eigene Konfigurration erstellt. Niemals, nicht ein einziges mal, nicht einmal, habe ich dabei aber eine Konfigurration auf einem, geschweige denn mehreren Systemen eingesetzt ohne diese entweder selbst erstellt, oder Zeile für Zeile für gut befunden (sprich jede Option nicht nur verstanden zu haben sondern auch der Meinung zu sein das ich es nicht beser hätte machen können) zu haben. Alles andere wäre mehr als verantwortungslos gewesen und hätte mich, mit Recht, meinen Job kosten können.
Mir fallen wenige Dienste ein deren Dokumentation und/oder Konfigurrationsdateien nicht mehr als ausführlich wären, ganz zu schweigen von den vielen Infos im Netz. (In so manche conf wie z.B. die von smb oder gar squid habe ich mich fast schon verliebt so oft und gerne habe ich die gelesen.)

Womit wir wieder bei meinem üblichen Argument wären: Es verleitet dazu sich nicht mit der Sache auseinander zu setzen und die Doku nicht zu lesen. Denn warum Doku lesen wenn ich eine Fertige .conf aus dem Netz bekomme, und dann noch eine die bei mir auf anhieb läuft nach dem reinkoppieren? ;)

Selbiges für die Einrichtung eines Paketfilters - man "erfindet" nicht jede Regel auf jeden Rechner neu, sondern denk sie sich einmal aus, testet sie und macht sich einen
Vermerk - spart Zeit die man an andere Stelle investieren kann. Ich sehe das ganze Projekt eher wie eine Bibliothek, als wie eine automatische Erzeugung aller meiner Konfigurationsdateien. (Schließlich greift man z.B. beim Programmieren auch auf bereits
vorhandene Mittel zurück und erweitert diese ggf. nur - genau so wünsche ich mir auch das vorgehen bei der Einrichtung meiner Rechner.)
Natürlich greift man beim Programmieren auf bereits vorhandene Lösungen zurück. Gut, ich bin nicht wirklich in der Programmentwicklung sondern in der Hardware(Prototypen)entwicklung tätig. Da ist halt vieles einfacher aber ich habe immer, absichtlich, den harten weg genommen und erstmal meine eigenen Lösungen gesucht bevor ich auf fertiges zurück gegriffen habe. Wenn ich an meine ersten Programme denke waren diese sicherlich mehr als schlecht. Im Vergleich zu dem, was man recht einfach mit vorgefertigten Librarys erstellen kann nicht der rede wert. Aber ich würde behaupten bei weitem nicht so viel gelernt und verstanden zu haben wenn ich nicht erstmal eigene Lösungen gesucht hätte um die Abläufe zu verstehen.

Egal ob es um das Entwickeln von Soft(Firm)ware oder Hardware oder auch das Erstellen von configs geht. Ich bin halt der festen überzeugung, das es notwendig ist sich ausführlich mit etwas zu beschäftigen und notfals auch tagelang die Nächte um die Ohren zu schlagen.
Wenn man hohe Anforderrungen stellt muss man auch hart dafür arbeiten, auch gerne 18Stunden am Tag 7 Tage die Woche. ohne das kommt man vielleicht mit Hilfe einer vorgefertigten .conf oder durch ein nachinstalliertes Interface schnell und vor allem einfach zum Ziel aber es fehlt bei weitem das Verständnis.
Der Mensch ist wirklich faul und wenn Du jemandem die Möglichkeit gibst auf einfachem Weg ans Ziel zu gelangen ist die Chance sehr hoch, das Er niemals lernen wird wie und warum etwas funktioniert.


Viel Saß :)
 
Ist das dann nicht das Problem von demjenigen, der die Konfiguration nicht verstanden hat?
Wenn man aber weiß wie man die Konfiguration fuer das Programm schreibt, weil man es schon x-mal gemacht hat, aber einfach besseres zu tun hat, als es nochmal zu machen, ist es doch nichts schlimmes auf eine fertige zurueckzugreifen. Es ist eher besser, weil es Zeit spart.
 
Zurück
Oben