2012-12-04 23 views
12

Ich habe eine lokale Entwicklungsumgebung, die stark auf Systemumgebungsvariablen basiert (sie folgt dem Heroku 12-Faktor-App-Modell), und ich setze diese derzeit mit einem Shell-Skript ein. Das Shell-Skript richtet auch Git-Fernbedienungen ein und aktiviert die virtualenv-Umgebung, und ich möchte, wenn möglich, alles auf einen Fabric-Befehl (oder eine Reihe von Befehlen) verschieben, da wir Fabric für eine Menge anderer Dinge verwenden und ich möchte die Shell-Skripte zurückziehen.So legen Sie Umgebungsvariablen mit Fabric fest

Lauf local('export FOO=bar') funktioniert nicht:

$ fab set_default_env_vars 
Using fabfile '/home/hugo/Projects/test/fabfile.py' 
[localhost] local: export FOO=bar 

Done. 

$ echo $FOO 

$ 

Ist das möglich - und wenn ja, wie?

Antwort

19

Sie können fabric.context_managers.shell_env-export eine Variable für die Shell bash und alle Subshells daraus hervorgebracht - aber diese Variablen nicht über die Schale bestehen, die sie für definiert wurden (so können Sie nicht für die Umgebungsvariablen Parent-Shell aus einem Fabric-Skript, so wie es in Ihrem Beispiel steht.)

Sie kann einen Bash-Skript, das Sie für Ihre lokale Umgebung, die identical to what you would add to ~/.profile in your production slug eingerichtet (in seinen Tasten, die nicht unbedingt ihre Werte) und verwenden fabric.context_managers.prefix diese Datei zu beziehen, bevor Sie Ihre lokalen Befehle ausführen.

Verwandte Themen