Как установить переменные среды, используя 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 источник этого файла, прежде чем запускать свои локальные команды.

Другие вопросы по тегам