Amazon web services 如何增加AWS Opsworks的部署超时限制?

Amazon web services 如何增加AWS Opsworks的部署超时限制?,amazon-web-services,chef-infra,aws-opsworks,Amazon Web Services,Chef Infra,Aws Opsworks,我想增加部署时间,在承载许多应用程序的堆栈层(AWS Opsworks)。 当前,我得到以下错误: 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/o

我想增加部署时间,在承载许多应用程序的堆栈层(AWS Opsworks)。 当前,我得到以下错误:

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的人建议先尝试加快通话速度(总有优化的余地)

如果这不起作用,我们可以进入兔子洞:,它反过来调用,正好有一个,你可以传入初始值设定项

现在,您可以使用Opsworks自定义食谱覆盖初始方法,并传递相应的超时选项。Opsworks将its的内容与自定义食谱的内容合并,因此您只需向自定义食谱添加和编辑一个文件:
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\u选项
,并在
Mixlib::ShellOut.new
调用中合并这些选项


此方法的一个改进是通过chef属性更改此超时选项,您可以通过Opsworks接口中的自定义JSON更新该属性。这意味着在初始的
Opsworks::ShellOut.ShellOut
调用中传递
timeout
属性-不在方法定义中。但这取决于
shellout
方法实际上是如何被调用的…

不同类型的错误、不同类型的解决方案、但类似的主题可能重复(参见我的答案)。有人真的尝试过吗?我尝试过许多变体——将代码放在我的食谱opsworks_commons/libraries/shellout.rb中,放在我实际食谱的顶部等等,但都没有增加超时限制。实际上,我在shellout方法中放了一条日志消息,它似乎根本没有被调用。想法?它确实对我们有用。您是否在每次更新自定义cookbooks存储库后调用“更新自定义cookbooks”命令?它位于
Stack->Run命令->“更新自定义食谱”
下,您的自定义食谱代码显然需要推送到远程存储库。您遇到了什么错误?我正在使用cloudformation,并再次运行了整个模板,设置了一个新的堆栈。我肯定运行了更新的chef代码(因为我在其中放置了log语句),但它总是在设置Java时超时。我发现我可以通过使用一个更大的实例来解决这个问题,但是最好知道如何手动配置它。如果你有一个公开的例子,请分享!p、 我使用的是Chef 11.10,但看起来这段代码对该版本仍然有效。