2014-01-13 72 views
3

有沒有人有使用aws opsworks上的每當寶石的經驗/成功?有一個好的食譜?我可以將該配方放在單獨的圖層上並將一個實例與該附加圖層關聯嗎?還是有更好的方法來做到這一點?謝謝!!!每當aws opsworks上的寶石

編輯:

我們最終做不同的有點......

代碼:

真的不能發佈真正的代碼,但它是這樣的:在

deploy/before_migrate.rb:

[:schedule].each do |config_name| 
    Chef::Log.info("Processing config for #{config_name}") 
    begin 
    template "#{release_path}/config/#{config_name}.rb" do |_config_file| 
     variables(
     config_name => node[:deploy][:APP_NAME][:config_files][config_name] 
    ) 
     local true 
     source "#{release_path}/config/#{config_name}.rb.erb" 
    end 
    rescue => e 
    Chef::Log.error e 
    raise "Error processing config for #{config_name}: #{e}" 
    end 
end 

in deploy/after_restart.rb:

execute 'start whenever' do 
    cwd release_path 
    user node[:deploy][:APP_NAME][:user] || 'deploy' 
    command 'bundle exec whenever -i APP_NAME' 
end 

在配置/ schedule.rb.erb:

<% schedule = @schedule || {} %> 

set :job_template, "bash -l -c 'export PATH=/usr/local/bin:${PATH} && :job'" 
job_type :runner, 'cd :path && bundle exec rails runner -e :environment ":task" :output' 
job_type :five_runner, 'cd :path && timeout 300 bundle exec rails runner -e :environment ":task" :output' 
set :output, 'log/five_minute_job.log' 
every 5.minutes, at: <%= schedule[:five_minute_job_minute] || 0 %> do 
    five_runner 'Model.method' 
end 
+1

最後我們處理這個如下: 添加值在堆棧json中指定每當cron運行哪個主機,並且默認爲rails_app1 在只在該主機上運行的rails項目中有一個部署掛鉤。 這將cron放在第一臺主機或我們指定的任何一個上,並且很容易配置和管理。 我們還有一個erb文件,它被計算爲schedule.rb,以便我們可以設置各種參數,例如每天運行的時間或每小時運行一分鐘的時間。這個erb文件也在部署鉤子中進行評估。 – nroose

+0

如果可能,請你分享一下代碼嗎? – jwako

+0

是的請選擇,一些更詳細的建議會很棒。 –

回答

7

我們有一個每當我們回購的食譜,我們使用的是你會非常歡迎在這裏使用更多:https://github.com/freerunningtech/frt-opsworks-cookbooks。我假設您熟悉將自定義食譜添加到opsworks堆棧。

  • 配置:軌道::配置
  • 部署:

    一般我們自己的層還包括應用部署所需的軌道食譜(而不是應用服務器)上運行它部署::軌每當

  • 取消部署:部署::軌道,取消部署

然而,我們通常也部署這種情況下爲應用程序服務器,這意味着我們最終從第i個服務請求無論何時,我們都在使用e盒。

有一個「疑難雜症」,因爲你必須在schedule.rb這樣的頂部設置路徑的ENV:

env :PATH, ENV['PATH'] 
+0

你如何設置一個運行在一個層的情況下,只是一個菜譜?我想你使用'--roles'選項,但它是否正確?在rails應用中,'layers'與實例中的'rails-app'相同。 – jwako