厨师:Opsworks:运行Rake任务

麦康林

我的目标是对在Opsworks中运行的应用执行rake任务。
在我看来,我的opsworks食谱没有从正确的目录运行rake。

如何告诉菜谱在应用主目录中运行(以便它可以提取Gemfile)?
我需要指定RAILS_ENV吗?

我的菜谱default.rb:

Chef::Log.info("****** Audit Photo URLS : Running Rake Task ******")
execute "rake audit:audi_image_urls" do
    command "bundle exec rake audit:audi_image_urls"
end

Opsworks日志中的错误:

[2014-11-28T18:36:33+00:00] INFO: Running queued delayed notifications before re-raising exception
[2014-11-28T18:36:33+00:00] ERROR: Running exception handlers
[2014-11-28T18:36:33+00:00] ERROR: Exception handlers complete
[2014-11-28T18:36:33+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache.stage2/chef-stacktrace.out
[2014-11-28T18:36:33+00:00] ERROR: execute[rake audit:audi_image_urls] (auditphoto::default line 3) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '10'
---- Begin output of bundle exec rake audit:audi_image_urls ----
STDOUT: Could not locate Gemfile
STDERR: 
---- End output of bundle exec rake audit:audi_image_urls ----
Ran bundle exec rake audit:audi_image_urls returned 10
[2014-11-28T18:36:33+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
马特

execute资源可以具有从其运行命令的工作目录cwd属性

execute "rake audit:audi_image_urls" do
  command       "bundle exec rake audit:audi_image_urls"
  cwd           '/over/there'
  environment   'RAILS_ENV' => 'production'
end

OpsWorks部署事件和执行配方命令

厨师11

OpsWorks填充node[:deploy]['appshortname']用于部署事件和执行食谱堆栈命令容纳每个应用程序的配置。有了这些数据,您可以使用:

execute "rake audit:audi_image_urls" do
  command       "bundle exec rake audit:audi_image_urls"
  cwd           node[:deploy]['appshortname'][:deploy_to]
  user          node[:deploy]['appshortname'][:user]
  group         node[:deploy]['appshortname'][:group]
  environment(  { 'RAILS_ENV' => node[:deploy]['appshortname'][:rails_env] } )
end

如果您在此处配置了任何相关内容:environment_variablesenvironment可能需要采购

厨师12

从AWS Stack设置docco

在Chef 12 Linux中,堆栈设置可作为Chef数据包使用,并且只能通过Chef搜索来访问。数据袋存储在目录中的一组JSON文件中的AWS OpsWorks Stacks实例上/var/chef/runs/run-ID/data_bags,其中run-ID是AWS OpsWorks Stacks分配给在实例上运行的每个Chef的唯一ID。堆栈设置不再可用作Chef属性,因此无法再通过Chef节点对象访问堆栈设置。有关更多信息,请参阅AWS OpsWorks Stacks数据袋参考。

app = search("aws_opsworks_app").first

execute "rake audit:audi_image_urls" do
  command       "bundle exec rake audit:audi_image_urls"
  cwd           app['app_source']['deploy_to']
  user          app['app_source']['user']
  group         app['app_source']['group']
  environment(  { 'RAILS_ENV' => app['app_source']['rails_env'] } )
end

其他事件和命令

看起来OpsWorks的运行与普通Chef服务器略有不同,并且每次运行都将其自己的JSON blob提供给本地Chef实例,这意味着(如您所提到的):deployAmazon选择不提供JSON的其他事件/命令属性将丢失为了。

这是可能的,但非常哈克,容易发生破损,填充:deploy从包含部署状态的最后一个JSON文件属性:{"deploy": { "app_name": { "application": "app_name" }/var/lib/aws/opsworks/chef

您还需要deploy::default在JSON加载后获取属性以填充任何默认值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行所有 rake 任务?

来自分类Dev

运行超时时如何退出rake任务?

来自分类Dev

Rails-使用Capistrano运行Rake任务

来自分类Dev

如何根据环境运行rake任务?

来自分类Dev

使用bundle运行导入的rake任务

来自分类Dev

获取先前运行的rake任务的输出

来自分类Dev

rake任务在本地运行,但不在Heroku上运行

来自分类Dev

我可以运行 rake 任务来模拟 sidekiq 运行吗?

来自分类Dev

Chef : Opsworks : run rake task

来自分类Dev

在Elastic Beanstalk环境中运行Rails rake任务

来自分类Dev

在Rails的共享名称空间中运行所有rake任务?

来自分类Dev

为什么此rake任务运行两次?

来自分类Dev

如何从Mina部署脚本运行自定义rake任务

来自分类Dev

在Heroku上运行rake任务时禁用NewRelic日志

来自分类Dev

在heroku上运行自定义rake任务

来自分类Dev

如何获得自定义的Rake任务以在Sinatra中运行?

来自分类Dev

您如何在每个时区的午夜运行rake任务?

来自分类Dev

为什么rake任务无法通过cron运行?

来自分类Dev

Ruby Crontab Rake任务失败,但仅在crontab运行命令时

来自分类Dev

在Rails的共享名称空间中运行所有rake任务?

来自分类Dev

为什么此rake任务运行两次?

来自分类Dev

从rake任务运行两个ruby脚本

来自分类Dev

在另一个目录中运行 rake 任务

来自分类Dev

仅在 rake 任务完成后运行邮件程序

来自分类Dev

厨师运行错误的食谱

来自分类Dev

在rake任务上运行bash命令之前运行服务器

来自分类Dev

如何运行openstack厨师食谱?

来自分类Dev

如何在Rails中通过命令行运行rake任务

来自分类Dev

为什么默认的rake任务在Rails应用程序中运行规范?

Related 相关文章

热门标签

归档