chef-client run fails to sync cookbooks with EOFError: end of file reached
chef-client run fails to sync cookbooks with EOFError: end of file reached
当 运行使用 chef-client 编写食谱时,运行 失败并出现此错误:
EOFError:到达文件末尾
我对此很陌生,我不知道这意味着什么。该食谱是社区食谱的一个非常简单的包装,应该不错。
https://supermarket.chef.io/cookbooks/powershell
又是这个错误:
Synchronizing Cookbooks:
- windows (1.37.0)
- ms_dotnet2 (0.0.0)
- ms_dotnet45 (0.0.0)
- powershell (3.1.0)
- chef_handler (1.1.8)
- ewe-powershell (0.1.0)
================================================================================
Error Syncing Cookbooks:
================================================================================
Unexpected Error:
-----------------
EOFError: end of file reached
Running handlers:
[2015-11-18T08:30:15-08:00] ERROR: Running exception handlers
Running handlers complete
[2015-11-18T08:30:15-08:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 24 seconds
[2015-11-18T08:30:15-08:00] FATAL: Stacktrace dumped to c:/chef/cache/chef-stacktrace.out
[2015-11-18T08:30:15-08:00] FATAL: EOFError: end of file reached
C:\WINDOWS\system32>
这是堆栈跟踪:
Generated at 2015-11-18 08:30:15 -0800
EOFError: end of file reached
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1412:in `block in transport_request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1409:in `catch'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1409:in `transport_request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1382:in `request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1375:in `block in request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:852:in `start'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1373:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http/basic_client.rb:65:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:264:in `block in send_http_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:298:in `block in retrying_http_errors'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:296:in `loop'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:296:in `retrying_http_errors'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:260:in `send_http_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:170:in `streaming_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/rest.rb:180:in `streaming_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/rest.rb:118:in `get'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:277:in `download_file'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:254:in `sync_file'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:152:in `block (2 levels) in sync_cookbooks'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:52:in `call'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:52:in `block (3 levels) in process'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:50:in `loop'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:50:in `block (2 levels) in process'
这是否意味着 protocol.rb 中存在一些 EOFError?
但那是社区食谱的一部分,我认为它看起来很可靠。
当 chef-client 启动时,它必须做的一件事就是下载它要用于 运行 的食谱代码。这在本地缓存以加速未来 运行s,但第一次或当文件更改时等。此异常表示它在尝试从服务器下载 ewe-powershell 说明书时失败。这可能意味着它在上传过程中已损坏。首先快速检查 knife cookbook delete
并重新上传。如果失败,我将开始尝试找出无法下载的文件。如果您打开 Chef 的日志级别 (-l debug
),您应该会看到它试图获取哪个 URL,这将告诉您哪个文件失败。有了它,尝试直接从 Bookshelf(处理文件上传和下载的 Chef Server 服务)对其进行卷曲。
这些是由于网络错误。它们不是客户端错误,无法通过删除和重新上传食谱来修复。
我写的要点中有一些信息:
https://gist.github.com/lamont-granquist/e25af8f50cb4ae4f8050
还有更多信息:
https://discourse.chef.io/t/eoferror-when-decrypting-data-bags/5716/2
https://github.com/chef/chef/issues/1881
EOFErrors 已被追踪到损坏的代理、PMTU 问题(VPN 或过滤 ICMP 目标无法访问)、巨型帧、网络中有问题的 TCP 卸载 drivers/hardware、Xen 错误等
如果您使用足够大的数据包,您应该能够在命令行上重现该问题。如果您的 Chef 服务器是 chef.example.com,那么您可以在 windows 上发送一个大的 ping 数据包:
ping chef.example.com -f -l 9999
您还可以在 unix 上发送大型 ping 包或大型 GET 请求:
ping -s 9999 chef.example.com
curl http://chef.example.com/`printf '%*s' 9999 '' | tr ' ' 'a'`
这样的方法可以帮助在任何与厨师相关的软件之外完全复制问题,并表明它是网络。最终的解决方法必须是花时间调试底层网络问题。在这种情况下,这听起来像是网络神奇地自我修复了。
(请记住 "the network" 我在两端包括主机 TCP 堆栈和网络驱动程序,包括网络通信必须通过的任何虚拟化技术——"the network" 在最广泛的意义上可能...)
当 运行使用 chef-client 编写食谱时,运行 失败并出现此错误: EOFError:到达文件末尾
我对此很陌生,我不知道这意味着什么。该食谱是社区食谱的一个非常简单的包装,应该不错。 https://supermarket.chef.io/cookbooks/powershell
又是这个错误:
Synchronizing Cookbooks:
- windows (1.37.0)
- ms_dotnet2 (0.0.0)
- ms_dotnet45 (0.0.0)
- powershell (3.1.0)
- chef_handler (1.1.8)
- ewe-powershell (0.1.0)
================================================================================
Error Syncing Cookbooks:
================================================================================
Unexpected Error:
-----------------
EOFError: end of file reached
Running handlers:
[2015-11-18T08:30:15-08:00] ERROR: Running exception handlers
Running handlers complete
[2015-11-18T08:30:15-08:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 24 seconds
[2015-11-18T08:30:15-08:00] FATAL: Stacktrace dumped to c:/chef/cache/chef-stacktrace.out
[2015-11-18T08:30:15-08:00] FATAL: EOFError: end of file reached
C:\WINDOWS\system32>
这是堆栈跟踪:
Generated at 2015-11-18 08:30:15 -0800
EOFError: end of file reached
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1412:in `block in transport_request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1409:in `catch'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1409:in `transport_request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1382:in `request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1375:in `block in request'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:852:in `start'
C:/opscode/chef/embedded/lib/ruby/2.0.0/net/http.rb:1373:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http/basic_client.rb:65:in `request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:264:in `block in send_http_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:298:in `block in retrying_http_errors'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:296:in `loop'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:296:in `retrying_http_errors'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:260:in `send_http_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/http.rb:170:in `streaming_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/rest.rb:180:in `streaming_request'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/rest.rb:118:in `get'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:277:in `download_file'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:254:in `sync_file'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/cookbook/synchronizer.rb:152:in `block (2 levels) in sync_cookbooks'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:52:in `call'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:52:in `block (3 levels) in process'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:50:in `loop'
C:/opscode/chef/embedded/lib/ruby/gems/2.0.0/gems/chef-12.5.1-universal-mingw32/lib/chef/util/threaded_job_queue.rb:50:in `block (2 levels) in process'
这是否意味着 protocol.rb 中存在一些 EOFError? 但那是社区食谱的一部分,我认为它看起来很可靠。
当 chef-client 启动时,它必须做的一件事就是下载它要用于 运行 的食谱代码。这在本地缓存以加速未来 运行s,但第一次或当文件更改时等。此异常表示它在尝试从服务器下载 ewe-powershell 说明书时失败。这可能意味着它在上传过程中已损坏。首先快速检查 knife cookbook delete
并重新上传。如果失败,我将开始尝试找出无法下载的文件。如果您打开 Chef 的日志级别 (-l debug
),您应该会看到它试图获取哪个 URL,这将告诉您哪个文件失败。有了它,尝试直接从 Bookshelf(处理文件上传和下载的 Chef Server 服务)对其进行卷曲。
这些是由于网络错误。它们不是客户端错误,无法通过删除和重新上传食谱来修复。
我写的要点中有一些信息:
https://gist.github.com/lamont-granquist/e25af8f50cb4ae4f8050
还有更多信息:
https://discourse.chef.io/t/eoferror-when-decrypting-data-bags/5716/2 https://github.com/chef/chef/issues/1881
EOFErrors 已被追踪到损坏的代理、PMTU 问题(VPN 或过滤 ICMP 目标无法访问)、巨型帧、网络中有问题的 TCP 卸载 drivers/hardware、Xen 错误等
如果您使用足够大的数据包,您应该能够在命令行上重现该问题。如果您的 Chef 服务器是 chef.example.com,那么您可以在 windows 上发送一个大的 ping 数据包:
ping chef.example.com -f -l 9999
您还可以在 unix 上发送大型 ping 包或大型 GET 请求:
ping -s 9999 chef.example.com
curl http://chef.example.com/`printf '%*s' 9999 '' | tr ' ' 'a'`
这样的方法可以帮助在任何与厨师相关的软件之外完全复制问题,并表明它是网络。最终的解决方法必须是花时间调试底层网络问题。在这种情况下,这听起来像是网络神奇地自我修复了。
(请记住 "the network" 我在两端包括主机 TCP 堆栈和网络驱动程序,包括网络通信必须通过的任何虚拟化技术——"the network" 在最广泛的意义上可能...)