簡體   English   中英

如何在AWS Opsworks上增加部署超時限制?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM