[英]How to increase deploy timeout limit at AWS Opsworks?
我想在托管許多應用程序的堆棧層(AWS Opsworks)中增加部署時間。 Currenlty我收到以下錯誤:
Eror
[2014-05-05T22:27:51+00:00] ERROR: Running exception handlers
[2014-05-05T22:27:51+00:00] ERROR: Exception handlers complete
[2014-05-05T22:27:51+00:00] FATAL: Stacktrace dumped to /var/lib/aws/opsworks/cache/chef-stacktrace.out
[2014-05-05T22:27:51+00:00] ERROR: deploy[/srv/www/lakers_test] (opsworks_delayed_job::deploy line 65) had an error: Mixlib::ShellOut::CommandTimeout: Command timed out after 600s:
提前致謝。
首先,正如此票據中提到的類似問題所述,Opsworks人員建議首先嘗試加速通話(總是有優化空間)。
如果這不起作用,我們就可以進入兔子洞: 這會被調用 ,然后調用Mixlib::ShellOut.new
,它恰好有一個可以在初始化程序中傳遞的超時選項 !
現在,您可以使用Opsworks自定義cookbook覆蓋初始方法,並傳遞相應的超時選項 。 Opsworks將其基本菜譜的內容與您的自定義菜譜的內容合並 - 因此您只需要將一個文件添加和編輯到自定義菜譜: opsworks_commons/libraries/shellout.rb
:
module OpsWorks
module ShellOut
extend self
# This would be your new default timeout.
DEFAULT_OPTIONS = { timeout: 900 }
def shellout(command, options = {})
cmd = Mixlib::ShellOut.new(command, DEFAULT_OPTIONS.merge(options))
cmd.run_command
cmd.error!
[cmd.stderr, cmd.stdout].join("\n")
end
end
end
注意唯一的添加只是DEFAULT_OPTIONS
並在Mixlib::ShellOut.new
調用中合並這些選項。
對此方法的改進是通過chef屬性更改此超時選項,您可以通過Opsworks界面中的自定義JSON進行更新。 這意味着在初始Opsworks::ShellOut.shellout
調用中傳遞timeout
屬性 - 而不是在方法定義中。 但這取決於實際調用shellout
方法的方式......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.