【问题标题】:Chef-client throws 403 forbidden intermittentlyChef-client 间歇性抛出 403 禁止
【发布时间】:2014-05-29 21:12:02
【问题描述】:

我正在使用全新的 chef-server(不是企业),并且运行 chef-client 大约每 5 次运行就会引发 403 禁止错误。有谁知道为什么会发生这种情况?

  • chef-server 11.0.12 通过 getchef.com/chef/install
  • chef-client 11.12.4 通过 ruby​​gem
  • ruby 2.1.2
  • Debian Wheezy 7.5

错误:

198.xx.xxx.xxx ================================================================================
198.xx.xxx.xxx Error executing action `create` on resource 'template[/var/www/mysite.com/shared/config/database.yml]'
198.xx.xxx.xxx ================================================================================
198.xx.xxx.xxx
198.xx.xxx.xxx Net::HTTPServerException
198.xx.xxx.xxx ------------------------
198.xx.xxx.xxx
198.xx.xxx.xxx 403 "Forbidden"
198.xx.xxx.xxx
198.xx.xxx.xxx
198.xx.xxx.xxx Resource Declaration:
198.xx.xxx.xxx
198.xx.xxx.xxx ---------------------
198.xx.xxx.xxx # In /var/chef/cache/cookbooks/rails/recipes/production.rb
198.xx.xxx.xxx
198.xx.xxx.xxx  40: template node[:rails][:app_root]+"/shared/config/database.yml" do
198.xx.xxx.xxx  41:     owner "root"
198.xx.xxx.xxx  42:     group "xx-dev"
198.xx.xxx.xxx  43:     mode 0775
198.xx.xxx.xxx  44: end
198.xx.xxx.xxx  45:
198.xx.xxx.xxx
198.xx.xxx.xxx Compiled Resource:
198.xx.xxx.xxx
198.xx.xxx.xxx ------------------
198.xx.xxx.xxx
198.xx.xxx.xxx # Declared in /var/chef/cache/cookbooks/rails/recipes/production.rb:40:in `from_file'
198.xx.xxx.xxx
198.xx.xxx.xxx template("/var/www/mysite.com/shared/config/database.yml") do
198.xx.xxx.xxx   provider Chef::Provider::Template
198.xx.xxx.xxx   action "create"
198.xx.xxx.xxx   retries 0
198.xx.xxx.xxx   retry_delay 2
198.xx.xxx.xxx   path "/var/www/mysite.com/shared/config/database.yml"
198.xx.xxx.xxx   backup 5
198.xx.xxx.xxx   source "database.yml.erb"
198.xx.xxx.xxx   cookbook_name "rails"
198.xx.xxx.xxx   recipe_name "production"
198.xx.xxx.xxx   mode 509
198.xx.xxx.xxx   owner "root"
198.xx.xxx.xxx   group "xx-dev"
198.xx.xxx.xxx end
198.xx.xxx.xxx
198.xx.xxx.xxx [2014-05-29T20:16:34+00:00] ERROR: Running exception handlers
198.xx.xxx.xxx [2014-05-29T20:16:34+00:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json
198.xx.xxx.xxx [2014-05-29T20:16:34+00:00] ERROR: Exception handlers complete
198.xx.xxx.xxx [2014-05-29T20:16:34+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
198.xx.xxx.xxx [2014-05-29T20:16:34+00:00] FATAL: Net::HTTPServerException: template[/var/www/mysite.com/shared/config/database.yml] (rails::production line 40) had an error: Net::HTTPServerException: 403 "Forbidden"

【问题讨论】:

  • 你使用了多少个节点?
  • 我有大约 50 个,Vargo 先生。
  • 这是一个长期运行的食谱吗?
  • 长期运行?这肯定是我最广泛的食谱。

标签: chef-infra http-status-code-403


【解决方案1】:

默认情况下,食谱中的对象(templates、cookbook_files)是延迟加载的。

如果运行时间很长,而且听起来确实如此,那么运行时间可能会超过服务器从原始身份验证强制执行的最大时间窗口。

可以通过添加关闭客户端的延迟加载

no_lazy_load true

到您的 client.rb。见http://docs.opscode.com/config_rb_client.html

【讨论】:

  • 如何在引导过程中进行设置?
  • 这对我不起作用。尽管我的 client.rb 文件中的 no_lazy_load 为 true,但我仍然收到 403 错误
  • 您在运行自己的 Chef 服务器吗?
  • 朱利安,是的,我是。我找到了一个解决方案,我必须将服务器上的 url 超时值从 900 增加到 1800 并且有效。
【解决方案2】:

除了 Julian 的回答之外,当我们运行超过 15 分钟的食谱时,这对我有用。 15 分钟是 Chef 服务器的默认 TTL 值:

根据您安装的 Chef 版本,编辑 /var/opt/chef-server/erchef/etc/opt/opscode/embedded/service/opscode-erchef/etc 下的 app.config 文件。

s3_url_ttl 值设置为超过 900 秒。我们使用 3600 解决了这个问题,然后重新启动了 Chef 服务器主机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2015-03-15
    • 2015-01-14
    • 1970-01-01
    相关资源
    最近更新 更多