Я пытаюсь разработать поваренную книгу, чтобы приложение фляги работало с пушками и nginx. Я добился успеха до такой степени, что приложение работает очень хорошо с локальной базой данных sqlite, см. мою кулинарную книгу по адресу https://github.com/harrywang/flasky-cookbook. Приложение flask использует переменные среды для отправки электронных писем, таких как: MAIL_USERNAME = os.environ.get('MAIL_USERNAME'), как я могу передать эти переменные среды на виртуальные машины Ubuntu, используя тестовую кухню во время сходимости кухни?
Как передать переменные среды для проверки кухни в .kitchen.yml
Ответы (2)
Невозможно передать переменные среды с помощью файла конфигурации .kitchen.yml (см. выпуск test-kitchen/test-kitchen#662).
Я рекомендую вам установить переменные среды в gunicorn.conf.erb с использованием --env
:
exec gunicorn --env SECRET_KEY=<%= @secret_key %> --env [...] --workers 3 --bind unix:<%= node['flasky-cookbook']['gunicorn_socket'] %> -m 007 --log-file <%= node['flasky-cookbook']['gunicorn_logfile']%> manage:app
person
zuazo
schedule
26.01.2016
Я пробовал
exec gunicorn --env MAIL_SERVER='email-smtp.us-east-1.amazonaws.com',MAIL_USERNAME='',MAIL_PASSWORD='-redacted-',FLASK_ADMIN='-redacted-' --workers 3 --bind unix:<%= node['flasky-cookbook']['gunicorn_socket'] %> -m 007 --log-file <%= node['flasky-cookbook']['gunicorn_logfile']%> manage:app
, но не работал - я kitchen login
и printenv
, но не вижу эти переменные env. Любая мысль?
- person dami.max; 26.01.2016
@coderanger Я не думаю, что это совсем неправильно. Я знаю, что вы можете читать переменные ENV из файла .kitchen.yml, но я говорил о другой части проблемы: передаче переменной в приложение. Я предположил, возможно, ошибочно, что он знает, как делать первую часть. Если вы все еще думаете, что этот ответ неверен, я удалю его.
- person zuazo; 26.01.2016
@harryw похоже, что вы также можете использовать
env
для установки переменных среды. Эти переменные будут определены только внутри приложения, запущенного с помощью gunicorn. Не в вашей кухонной раковине.
- person zuazo; 26.01.2016
Я в основном имел в виду первую часть, вы можете абсолютно точно передавать переменные окружения.
- person coderanger; 26.01.2016
Хорошо, @coderanger. Спасибо. Я удалил первую часть. Я этого не знал, извини. Я знаю, твой ответ лучше :-P
- person zuazo; 26.01.2016
@zuazo большое спасибо за вашу помощь. как я могу проверить, что эти переменные env были успешно переданы, если я не могу использовать printenv? Является ли мой способ передачи нескольких переменных env, соединив их запятой, правильным? Я спрашиваю, потому что я не мог заставить работать функцию электронной почты flasky :(.
- person dami.max; 26.01.2016
@harryw Добро пожаловать ;-) Вы можете получить pid процесса gunicorn и посмотреть файл его окружения в
/proc
. Например: cat /proc/$(pidof gunicorn)/environ
. Для переменных попробуйте передать несколько параметров --env
или использовать несколько строк env SECRET_KEY="..."
перед вызовом gunicorn.
- person zuazo; 26.01.2016
Вы можете использовать форматирование Erb в своем .kitchen.yml
:
provisioner:
name: chef-solo
attributes:
mycookbook:
mail_username: <%= ENV['MAIL_USERNAME'] %>
А затем используйте node['mycookbook']['mail_username']
в своем рецепте, чтобы передать значение приложению.
person
coderanger
schedule
26.01.2016
Я в замешательстве: как я могу использовать node['mycookbook']['mail_username'] в вашем рецепте, чтобы передать значение приложению? Ваше решение передает переменные env моего хоста (macbook pro) в гостевую (экземпляр виртуального ящика ubuntu)? Я очень новичок в Chef - извините, если задаю глупые вопросы :)
- person dami.max; 26.01.2016
Вам нужно разветвить
flasky
поваренную книгу и добавить что-нибудь в этот файл шаблона: github.com/harrywang/flasky-cookbook/blob/master/templates/, чтобы установить переменную среды.
- person coderanger; 26.01.2016
Также проверьте github.com/poise/application_python /blob/master/test/cookbooks/ для более простого примера развертывания Flask.
- person coderanger; 26.01.2016
большое спасибо за твою помощь. добавление чего-либо в шаблон похоже на решение, данное zuazo. Кулинарная книга приложения кажется отличной, но знаете ли вы какие-нибудь подробные руководства по этому поводу? README слишком краток для таких новичков, как я.
- person dami.max; 26.01.2016
env MAIL_USERNAME="AKIAJ6NFIS3"
двойные кавычки - одинарные кавычки не работают, а при использовании --env работают одинарные кавычки - для безопасности: всегда используйте двойные кавычки. - person dami.max   schedule 28.01.2016