Startbare configfiles

boesemar

Well-Known Member
Stellt euch vor ihr koenntet jedes programm das eine configdatei benutzt beliebig in eure umgebung integrieren ohne irgendwelche vorrausetzungen von diesem erwarten zu muessen.

...wie zum beispiel:

* Apache, virtual hosts aus einer SQL datenbank auslesen ohne SQL unterstutzung von apache zu haben oder
* Samba (smbpasswd file) aus einer anderen user-flat-file einbinden ohne diese staendig zu kovertieren oder
* Nagios (network monitoring), wo ich schon alle hosts in PostgreSQL habe will ich sie doch nicht in ne flatfile config umschreiben damit sie Nagios versteht....

Wie gehts? Wir muessten nur unsere programme ein wirklich kleines bisschen umschreiben und zwar:
a) Wenn configfile nicht ausfuehrbar ist (-x) dann wie gewohnt einlesen und fertig
b) Wenn configfile ausfuehrbar ist (+x) dann starten und stdout als inhalt annehmen.

Wenn zB Apache dies machen wuerde, dann koennte ich so einfach meine VirtualHosts aus einer datenbank einlesen:

Code:
#!/usr/local/bin/php

# alles bleibt beim alten, aber jetzt:

<?php 
 virtual_hosts = fetch_all_virtual_hosts_from_database()
 foreach(virtual_hosts as v) {    ?>
   <VirtualHost *:80>
      ServerAdmin me@somewhere.de
      DocumentRoot <?php echo v['documentroot']; ?>
      ServerName <?php echo v['servername']; ?>
   </VirtualHost>
<?php
  } ?>


Das schoene an der sache ist dass ich es machen kann wie es MIR beliebt (NICHT wie es dem entwickler der anwendung beliebt). Ob shellscript, perl, php, ruby oder gar C oder alles zusammengemixt - alles moeglich. Das program selbst braucht sich nicht drum zu kuemmern - warum auch?

Ich denke das wir so auch die meisten krankhafen datenbankunterstuetzungen (wie zb bei Samba oder FreeRADIUS mit vordefiniereten table layout) eliminieren koennten. Einen SIGHUP muessen wir natuerlich manuell schicken falls wir was wichtiges aendern, aber das geht ja notfalls auch per cron.

Ich hab das bei einem etwas unbekannten programm gefunden "Argus http://argus.tcp4me.com" aber auch Rail's fixtures erlauben embedded ruby code. Von daher glaube ich das es sich schon um eine wenig verbreitete technik handelt. Aber mal ehrlich, waere es nicht schoen wenn saemtliche anwendungen dem beitreten koennten?

Klar kann ich mir mein system zerschiessen wenn ich nen daemon per root auf mein 'rm -rf /' - config-script loslasse, aber das waere immerhin mein eigenes problem. Und die default config koennte ja immer eine nicht-startbare datei sein da man schliesslich wissen muss was man tut.

Also.. was spricht noch dafuer?
Und was spricht dagegen?
 
Garnicht so schlecht die idee. Mit eruby macht das sicherlich spass. Vor allem da ruby eh sehr gut geeignet ist um eine DSL zu bauen imo.
 
Zurück
Oben