Chef infra 如何在Chef模板中使用OpsWorks应用程序数据包(aws_OpsWorks_应用程序)环境变量?

Chef infra 如何在Chef模板中使用OpsWorks应用程序数据包(aws_OpsWorks_应用程序)环境变量?,chef-infra,gunicorn,aws-opsworks,databags,Chef Infra,Gunicorn,Aws Opsworks,Databags,鉴于Chef 12,OpsWorks最近发布了支持,我能找到的所有文档都是针对Chef 11的。所以,这是我目前的设置:flask+gunicorn+nginx和Chef 12在OpsWorks上。我使用Upstart使用模板启动Gunicorn: start on runlevel [2345] stop on runlevel [!2345] respawn setuid <%= node['conf-cookbook']['gunicorn_user'] %> setgid

鉴于Chef 12,OpsWorks最近发布了支持,我能找到的所有文档都是针对Chef 11的。所以,这是我目前的设置:flask+gunicorn+nginx和Chef 12在OpsWorks上。我使用Upstart使用模板启动Gunicorn:

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid <%= node['conf-cookbook']['gunicorn_user'] %>
setgid <%= node['conf-cookbook']['gunicorn_group'] %>

env MAIL_SERVER="email-smtp.us-east-1.amazonaws.com"
env MAIL_USERNAME="[redcacted]"
env MAIL_PASSWORD="[redacted]"

chdir <%= node['conf-cookbook']['app_dir'] %>

exec gunicorn --workers 3 --bind unix:<%= node['conf-cookbook']['gunicorn_socket'] %> -m 007 --log-file <%= node['conf-cookbook']['gunicorn_logfile']%> manage:app
我想使用app data bag环境变量来替换我在模板文件中定义的但不知道如何使用的变量。有人能帮忙吗


谢谢

您可以将任意变量数据传递给Chef模板资源:

template '/etc/init/myapp.conf' do
  source 'myapp.conf.erb'
  variables node['conf-cookbook'].merge(app)
end
然后使模板看起来更像这样:

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid <%= @gunicorn_user %>
setgid <%= @gunicorn_group %>

<%- @environment.each do |key, value| -%>
env <%= key %>="<%= value %>"
<%- end -%>

chdir <%= @app_dir %>

exec gunicorn --workers 3 --bind unix:<%= @gunicorn_socket %> -m 007 --log-file <%= @gunicorn_logfile %> manage:app
在运行级别启动[2345]
在运行级别停止[!2345]
重生
塞图德
塞吉德
env=“”
chdir
exec gunicorn--workers 3--bind unix:-m 007--log file manage:app

还可以查看和食谱,它们分别提供了编写Upstart配置文件和Gunicorn服务的帮助。

请确认,这些不是您真正的SES凭据,对吗?谢谢,我已更改了用户名和密码:)复制敏感数据时务必小心。此外,您不需要将我的答案编辑到您的问题中。您可以使用下面的链接将编辑建议提交到答案中。是。我已删除我的更新,并将编辑建议移动到您答案的评论中。谢谢我还有一个问题:如何使Nginx与应用程序_python一起工作-我看到了Gunicorn助手,但没有Nginx助手。我真的是一个初学者:)你就是那个人!!!谢谢。亚马逊应该付钱给你帮助他们制作文档:)当我对Chef有了更多的了解后,我肯定会使用应用程序框架。再次感谢。我遇到了另一个问题-这些环境变量不适用于配方的其他部分,例如,
template'/etc/init/myapp.conf'do。。。结束
我有
执行“设置数据库”的任务。。命令“python manage.py deploy”。.end
希望使用环境变量-我不知道如何使用。谢谢
execute
资源有一个
environment
属性来设置正在执行的命令中的环境变量。明白了,例如,
environment({'HOME'=>'/HOME/myhome'})
thx!!
start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid <%= @gunicorn_user %>
setgid <%= @gunicorn_group %>

<%- @environment.each do |key, value| -%>
env <%= key %>="<%= value %>"
<%- end -%>

chdir <%= @app_dir %>

exec gunicorn --workers 3 --bind unix:<%= @gunicorn_socket %> -m 007 --log-file <%= @gunicorn_logfile %> manage:app