Variablen aus YAML Config-File in Startskript verwenden?

SolarCatcher

Well-Known Member
KURZE FRAGE:
In einem Port wird ein YAML formatierter Config-File verwendet. Welche Möglichkeit hätte ich, in einem Startskript auf dessen Variablen zuzugreifen?

LÄNGERER HINTERGRUND:
Ich habe heute einige Stunden mit dem wiederholten Bauen von databases/mongodb32 verbracht - der Server wollte am Ende immer nicht starten. Erst nach dem 3. Bauen entdeckte ich, dass es gar nicht am Binary liegt sondern an einem fehlenden /var/run/mongodb, in der der Server daher keinen PID-File schreiben kann.

Dieses Problem wäre schnell händisch gelöst. Aber bei der Fehlersuche fand ich heraus, dass das Startskript (/usr/local/etc/mongod) einiges hart kodiert, was eigentlich im Config-File definiert wird (/usr/local/etc/mongodb.conf). Der Conig-File ist also in weiten Teilen unwirksam.

Ich wollte daher das Startskript etwas umschreiben, scheitere aber daran, dass ich nicht weiß, wie ich auf die Variablen zugreifen kann, die im Config-File in YAML definiert sind.

Weiß jemand eine möglichst "offizielle" Lösung (also kein Hack, der irgendwie geht, sondern etwas, das man als Patch zum Port einreichen könnte).

Ach ja: Ein Bug-Report zum fehlenden Ordner gibt es seit Juli. Aber bereits seit Mai sind Updates zu diesem Port ohnehin nur noch durch "maintainer timeout" freigegeben worden. Insofern ist da keine Lösung von Seiten des Maintainers zu erwarten.
 
Ich würde das anders lösen: das Startskript soweit wie möglich abspecken, sodass dann das Meiste in der Konfigurationsdatei definiert wird.

Rob
 
Grundsätzliche stimme ich Dir zu. Das Problem sind jedoch die Schreibrechte in einigen Verzeichnissen: mongod läuft als User:Group mongodb:mongodb und kann daher nicht so einfach in z.B. /var/run schreiben. Daher definiert das Startskript (das ja als root läuft) verschiedene Pfade und stellt zumindest im Falle der Datenbank selbst sicher, dass dieser existiert (in diesem Falle /var/db/mongodb). Im Falle der PID-Datei wird es jedoch versäumt, den Ordner /var/run/mongodb zu erstellen. Wie gesagt, das könnte man recht einfach ändern.

Allerdings werden damit die Einstellungen aus der Konfigurationsdatei überschrieben. Ich kann dort nicht mehr definieren, wo der PID-File liegt, wie die Log-Datei heißt, wo die Datenbank selbst abgelegt wird. Daher wäre es eigentlich schön, wenn das Startskript die in der Konfigurationsdatei eingestellten Pfade prüfte und diese ggf. anlegte. Aber dazu müsste das Startskript die YAML-Konfigurationsdatei parsen.
 
Leider nein. Der Port Maintainer hat hier den lock file als Pidfile verwendet. Das soll man aber angeblich lieber lassen. Es gibt noch einen "echten" Pidfile unter /var/run/mongodb/pid. Und eben diesen Verzeichnis existiert nicht unbedingt! Daher kommt das ursprüngliche Problem.
 
Zurück
Oben