Как установить переменные среды, используя Fabric
У меня есть локальная среда разработки, которая сильно зависит от системных переменных среды (она соответствует 12-факторной модели приложения Heroku), и в настоящее время я устанавливаю их с помощью сценария оболочки. Сценарий оболочки также настраивает git remotes и активирует среду virtualenv, и я хотел бы, если возможно, перенести все это в команду Fabric (или серию команд), так как мы используем Fabric для множества других вещей., и я хотел бы удалить сценарии оболочки.
Бег local('export FOO=bar')
не работает:
$ fab set_default_env_vars
Using fabfile '/home/hugo/Projects/test/fabfile.py'
[localhost] local: export FOO=bar
Done.
$ echo $FOO
$
Возможно ли это - и если да, то как?
1 ответ
Ты можешь использовать fabric.context_managers.shell_env
в export
переменная для создания оболочки для вашей оболочки и всех ее дочерних оболочек, порожденных из нее - но эти переменные не сохранятся за пределами оболочки, для которой они были определены (поэтому вы не можете установить переменные окружения для родительской оболочки из сценария фабрики, как в вашем примере есть это).
Вы можете настроить скрипт bash, который вы используете для своей локальной среды, который идентичен тому, к которому вы добавляете ~/.profile
в вашем производственном слаге (в его ключах, не обязательно его значениях) и используйте fabric.context_managers.prefix
источник этого файла, прежде чем запускать свои локальные команды.