首次运行时运行一个Chef recipe动作,但每次部署时运行另一个

时间:2017-06-27 13:06:22

标签: chef aws-opsworks

我正在使用AWS OpsWorks(主厨12.18.31,在ubuntu 14.04上),我的一个厨师食谱配置了runit_service日志。

要设置我需要使用操作:enable的服务,但在我的代码的每次部署中,我都需要使用操作:usr2,因此action行是:

action [:enable, :usr2]

这会在配置新机器时出现一个奇怪的问题,我在其中收到以下错误:

================================================================================
Error executing action `run` on resource 'ruby_block[restart_log_service]'
================================================================================

Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of /usr/bin/sv -w '40' restart /etc/service/my_app/log ----
STDOUT: timeout: run: /etc/service/my_app/log: (pid 28431) 42s, got TERM
STDERR: 
---- End output of /usr/bin/sv -w '40' restart /etc/service/my_app/log ----
Ran /usr/bin/sv -w '40' restart /etc/service/my_app/log returned 1

我理解的方式是,在第一次设置服务时,日志的重启会超时。

  1. 如何在计算机首次部署时仅运行:enable操作,但对所有其他部署执行:usr2操作?
  2. 我应该以不同的方式设置服务吗?
  3. 这是我的runit_service部分:

    runit_service app['shortname'] do
      run_template_name 'rails-application'
      env app['environment']
      default_logger true
      log_dir "/log/#{app['shortname']}"
      log_num 10
      log_min 3
      sv_timeout 40
      options(
        :application_name => app['shortname'],
        :path => app_deploy_path,
        :bundle_command => 'bundle',
        :rails_env => app['environment']['RAILS_ENV']
      )
    
      action [:enable, :usr2]
    end
    

1 个答案:

答案 0 :(得分:0)

在普通厨师中,您希望资源中的Article:enable作为来自:usr2资源的通知或实际部署中的任何内容发送。这是一个OpsWorks基于事件的性质与普通厨师有所不同的地方,但它可能已经足够好了。