Подтвердить что ты не робот

Как установить переменные среды с помощью Fabric

У меня есть локальная среда разработки, которая в значительной степени опирается на переменные системной среды (она следует за моделью приложений с 12-факторным коэффициентом Heroku), и в настоящее время я устанавливаю их с помощью оболочки script. Оболочка script также устанавливает удаленные объекты git и активирует среду 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

$

Возможно ли это, и если да, то как?

4b9b3361

Ответ 1

Вы можете использовать fabric.context_managers.shell_env для export переменную до bash для вашей оболочки и всех подоболочек, порожденных из нее, но эти переменные не будут сохраняться за пределами оболочки, для которой они были определены (поэтому вы не можете устанавливать переменные окружения для родительской оболочки из ткани script, как это имеет в вашем примере).

Вы можете настроить bash script источник, который вы используете для вашей локальной среды идентичный тому, что вы добавили бы в ~/.profile в своем производстве slug (в его ключах, не обязательно его значения) и используйте fabric.context_managers.prefix для источника этого файла, прежде чем запускать локальные команды.