2014-03-07 7 views
9

Wie kann ich eine Umgebungsvariable in einem Supervisord-Befehl verwenden? Ich habe versucht:Verwendung von Umgebungsvariablen in Supervisord-Befehlen

flower --broker=$MYVAR

, aber es funktioniert nicht (Variable nicht erweitert wird), so habe ich versucht, einen Inline-Python-Skript:

command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))" 

Den obigen Befehl funktioniert, aber dann habe ich Ich bin nicht in der Lage, den Prozess mit supervisorctl stop zu beenden ... Ich bekomme "gestoppt" zurück, aber der Prozess läuft tatsächlich noch! Wie kann ich mein Problem lösen? (Ich will nicht, dass die Parameter inline setzen)

+0

Es sei denn, es gibt eine spezielle Unterstützung, die in supervisord eingebaut ist; Du brauchst eine Shell oder einen anderen Prozess, um eine Umgebungsvariable zu erweitern, zB 'command = sh -c 'flower --broker =" $ MYVAR "'' – jfs

+0

mmm ... warum wenn ich "flower --broker = $ MYVAR" starte in der Shell funktioniert es ?! – daveoncode

+0

weil * die Shell * es erweitert – jfs

Antwort

10

Nach dem docs Supervisor Sie können Umgebungsvariablen in dem Kommando von ENV_ prefixing wie: %(ENV_YOUR_VAR)s

http://supervisord.org/configuration.html#environment-variables

String Ausdrücke Wird anhand eines Wörterbuchs ausgewertet, das die Schlüssel group_name, host_node_name, process_num, programm_name, hier (das Verzeichnis der supervisord-Konfigurationsdatei) und alle Umgebungsvariablen von supervisord mit dem Präfix ENV_ enthält.

Allerdings nach diesem commit: https://github.com/Supervisor/supervisor/commit/2d6ca34582a8a07a5dd96ae45ef62cd58a459f4f wurde diese Funktion nach Version 3.2 hinzugefügt.

+0

Denken Sie daran, dass das neueste Paket in 14.04 '3.0b2' ist, aber dies erfordert' 3.2' –

0

konnte ich eine Systemumgebungsvariable in einem Supervisor-Befehl wie folgt verwenden:

command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s

Der obige Befehl zu command=php artisan queue:listen --env=production erweitern, wenn die Umgebungsvariable APP_ENVIRONMENTproduction ist.

Hinweis: In der Supervisor-Konfiguration müssen Sie Ihre Systemumgebungsvariablen mit ENV_ voranstellen, wie in der Dokumentation here angegeben.

Verwandte Themen