如何将环境变量传递给.kitchen.yml中的测试厨房

时间:2016-01-25 22:53:43

标签: flask chef gunicorn cookbook test-kitchen

我正在尝试开发一本食谱,让一个烧瓶应用程序与gunicorn和nginx一起工作。我已经成功到了应用程序运行良好的本地sqlite数据库,请参阅我的食谱https://github.com/harrywang/flasky-cookbook。烧瓶应用程序使用环境变量发送电子邮件,例如:MAIL_USERNAME = os.environ.get('MAIL_USERNAME'),如何在厨房汇聚期间使用测试厨房将这些环境变量传递给ubuntu虚拟机?

2 个答案:

答案 0 :(得分:15)

您可以在.kitchen.yml

中使用Erb格式
provisioner:
  name: chef-solo
  attributes:
    mycookbook:
      mail_username: <%= ENV['MAIL_USERNAME'] %>

然后在配方中使用node['mycookbook']['mail_username']将值传递给应用程序。

答案 1 :(得分:-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