我正在使用AWS Opsworks来托管我的Rails应用程序(Ruby 2.0 / Rails 3.2)。 对于资产编译过程,我使用AssetSync在S3上自动上传编译的资产。我曾经将凭证存储为环境变量。
您是否知道如何使用Chef / Opsworks进行此操作?
感谢。
答案 0 :(得分:7)
我知道这是一篇较旧的帖子,但是我发帖说这是为了帮助别人。
我发现最简单的方法是使用Chef的部署挂钩(http://docs.opscode.com/resource_deploy.html#deploy-phases)。
在Rails项目根目录中添加名为“deploy”的目录。
在其中添加一个名为before_restart.rb的文件,代码为:
Chef::Log.info("Running deploy/before_restart.rb")
# map the environment_variables node to ENV
node[:deploy].each do |application, deploy|
deploy[:environment_variables].each do |key, value|
Chef::Log.info("Setting ENV[#{key}] to #{value}")
ENV[key] = value
end
end
当您触发OpsWorks部署时,您应该能够看到在Rails App Server实例日志中设置的ENV变量。
答案 1 :(得分:4)
我最终使用https://github.com/joeyAghion/opsworks_custom_env。 它运作得很好。
答案 2 :(得分:2)
我使用了一种稍微不同的方法,使用OpsWorks钩子将JSON复制到application.yml。你可以在这里阅读更多相关信息:http://zaman.io/how-to-import-aws-opsworks-json-into-rails-app/
答案 3 :(得分:2)
环境变量之外的另一个选择是,您可以在部署时生成包含变量的文件。
例如,对于Rails应用程序,config / secrets.yml是放置这些应用程序的合理位置。我创建了一个deploy / before_restart.rb部署钩子,其中包含以下内容:
def create_secrets(secrets, release_path)
Chef::Log.info("Creating secrets")
file_path = ::File.join(release_path, 'config/secrets.yml')
::File.open(file_path, 'w') do |f|
f.write("production:\n")
secrets.each do |k,v|
f.write(" #{k}: #{v}\n")
end
end
end
node[:deploy].each do |application, deploy|
create_secrets(deploy[:secrets], release_path)
end
然后在你的OpsWorks堆栈Custom JSON中你可以添加你的秘密:
"deploy": {
"super_cool_app": {
"secrets": {
"some_service_id": "foo",
"some_password": "bar"
}
}
答案 4 :(得分:2)
您可以在应用程序的根目录中创建一个deploy
文件夹,在其中创建一个文件before_restart.rb
,然后在您的文件中运行预编译任务
run "cd /srv/www/myapp/current && /usr/local/bin/bundle exec rake assets:precompile"
此文件将在每个部署
上运行来源:
答案 5 :(得分:1)
现在可以根据文档在应用程序配置中直接从AWS控制台完成此操作:http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment
答案 6 :(得分:0)
我已经在这里回答:AWS OpsWorks Environment variables not working
重要的是要理解,从OpsWorks仪表板我们可以将所有声明的环境变量传递给Chef,然后我们需要使用Chef配方处理这些变量,以便将它们提供给Rails环境。
在这里,您可以找到您要找的内容:https://medium.com/@diego_durante/opsworks-rails-and-environment-variables-30c6a143253c#.696grsgg9