【问题标题】:Chef Kitchen converge is generating [No space left on device - write] errorChef Kitchen 会聚正在生成 [No space left on device - write] 错误
【发布时间】:2020-01-15 02:36:11
【问题描述】:

在 Windows 10 主机、vagrant 和本地虚拟盒 VM (Windows Server 2012 R2) 上,我在执行厨房融合时突然开始看到以下错误:

-----> Starting Kitchen (v2.2.5)
$$$$$$ Deprecated configuration detected:
chef_omnibus_url
Run 'kitchen doctor' for details.

-----> Converging <default-BOX>...
       Preparing files for transfer
       Preparing dna.json
       Resolving cookbook dependencies with Berkshelf 7.0.8...
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: 1 actions failed.
>>>>>>     Failed to complete #converge action: [No space left on device - write] on default-BOX
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

这不是完整的 kitchen.yml,但这里是显示厨师客户端版本的配置设置:

provisioner:
  name: chef_zero
  # You may wish to disable always updating cookbooks in CI or other testing environments.
  # For example:
  #   always_update_cookbooks: <%= !ENV['CI'] %>
  always_update_cookbooks: true
  require_chef_omnibus: true
  product_name: chef
  product_version: 14.12.9
  install_strategy: once
  platform: windows
  platform_version: 10.0
  architecture: x86_64

日志表明 berkshelf 存在某种复制错误:

[2019-12-30T16:17:11.213316 #6088] ERROR -- Kitchen: Message: Failed to complete #converge action: [No space left on device - write] on default-BPA-DEV
E, [2019-12-30T16:17:11.213350 #6088] ERROR -- Kitchen: ----------------------
E, [2019-12-30T16:17:11.213384 #6088] ERROR -- Kitchen: ------Backtrace-------
E, [2019-12-30T16:17:11.213419 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1387:in `copy_stream'
E, [2019-12-30T16:17:11.213455 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1387:in `block (2 levels) in copy_file'
E, [2019-12-30T16:17:11.213489 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1386:in `open'
E, [2019-12-30T16:17:11.213568 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1386:in `block in copy_file'
E, [2019-12-30T16:17:11.213608 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1385:in `open'
E, [2019-12-30T16:17:11.213644 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1385:in `copy_file'
E, [2019-12-30T16:17:11.213679 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:492:in `copy_file'
E, [2019-12-30T16:17:11.213715 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:419:in `block in cp'
E, [2019-12-30T16:17:11.213751 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1557:in `block in fu_each_src_dest'
E, [2019-12-30T16:17:11.213786 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1573:in `fu_each_src_dest0'
E, [2019-12-30T16:17:11.213820 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:1555:in `fu_each_src_dest'
E, [2019-12-30T16:17:11.213855 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/fileutils.rb:418:in `cp'
E, [2019-12-30T16:17:11.213890 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/berkshelf-7.0.8/lib/berkshelf/file_syncer.rb:95:in `block in sync'
E, [2019-12-30T16:17:11.213924 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/berkshelf-7.0.8/lib/berkshelf/file_syncer.rb:78:in `each'
E, [2019-12-30T16:17:11.213959 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/berkshelf-7.0.8/lib/berkshelf/file_syncer.rb:78:in `sync'
E, [2019-12-30T16:17:11.213994 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/berkshelf-7.0.8/lib/berkshelf/berksfile.rb:688:in `block in vendor'
E, [2019-12-30T16:17:11.214029 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/tmpdir.rb:93:in `mktmpdir'
E, [2019-12-30T16:17:11.214064 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/berkshelf-7.0.8/lib/berkshelf/berksfile.rb:635:in `vendor'
E, [2019-12-30T16:17:11.214214 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/berkshelf.rb:66:in `block in resolve'
E, [2019-12-30T16:17:11.214258 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/thor-0.20.3/lib/thor/shell/basic.rb:22:in `mute'
E, [2019-12-30T16:17:11.214294 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/berkshelf.rb:61:in `resolve'
E, [2019-12-30T16:17:11.214329 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/common_sandbox.rb:318:in `block in resolve_with_berkshelf'
E, [2019-12-30T16:17:11.214364 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/common_sandbox.rb:315:in `synchronize'
E, [2019-12-30T16:17:11.214408 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/common_sandbox.rb:315:in `resolve_with_berkshelf'
E, [2019-12-30T16:17:11.214522 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/common_sandbox.rb:252:in `prepare_cookbooks'
E, [2019-12-30T16:17:11.214657 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef/common_sandbox.rb:48:in `populate'
E, [2019-12-30T16:17:11.214739 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef_base.rb:289:in `create_sandbox'
E, [2019-12-30T16:17:11.214789 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/chef_zero.rb:50:in `create_sandbox'
E, [2019-12-30T16:17:11.214831 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/provisioner/base.rb:71:in `call'
E, [2019-12-30T16:17:11.214869 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:409:in `block in converge_action'
E, [2019-12-30T16:17:11.214906 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:552:in `synchronize_or_call'
E, [2019-12-30T16:17:11.214942 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:514:in `block in action'
E, [2019-12-30T16:17:11.215029 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
E, [2019-12-30T16:17:11.215069 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:513:in `action'
E, [2019-12-30T16:17:11.215105 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:404:in `converge_action'
E, [2019-12-30T16:17:11.215141 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:382:in `block (2 levels) in transition_to'
E, [2019-12-30T16:17:11.215176 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/lifecycle_hooks.rb:45:in `run_with_hooks'
E, [2019-12-30T16:17:11.215211 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:381:in `block in transition_to'
E, [2019-12-30T16:17:11.215248 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:380:in `each'
E, [2019-12-30T16:17:11.215284 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:380:in `transition_to'
E, [2019-12-30T16:17:11.215318 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/instance.rb:140:in `converge'
E, [2019-12-30T16:17:11.215354 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/command.rb:197:in `public_send'
E, [2019-12-30T16:17:11.215390 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/command.rb:197:in `run_action_in_thread'
E, [2019-12-30T16:17:11.215424 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/test-kitchen-2.2.5/lib/kitchen/command.rb:169:in `block (2 levels) in run_action'
E, [2019-12-30T16:17:11.215459 #6088] ERROR -- Kitchen: C:/opscode/chefdk/embedded/lib/ruby/gems/2.6.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'
E, [2019-12-30T16:17:11.215494 #6088] ERROR -- Kitchen: ----End Backtrace-----

在过去,我遇到了一个问题,它会挂在 berkshelf 上(至少看起来如此),然后我会重新启动 VM,然后融合就会起作用。它几乎看起来像一个类似的问题,除了重新启动没有解决问题。

【问题讨论】:

  • 清理目标设备怎么样?
  • 我的回答对你有帮助吗?
  • 没有。我已经尝试重新创建整个目标机器,然后它第一次工作,但后续收敛失败。

标签: ruby windows chef-infra test-kitchen


【解决方案1】:

我认为您遇到的问题与厨房没有直接关系,而是与您的虚拟机映像有关,它没有足够的磁盘空间。

No space left on device - write] on default-BPA-DEV

当有人在创建虚拟机时创建了一个非常小的存储设备,然后从中派生出一个虚拟机映像时,就会发生这种情况。

但是你很幸运,因为你可以使用 vagrant-disksize 来动态增加虚拟机磁盘大小,并结合 vagrantfiles kitchen-vagrant 的驱动程序选项。

这就是我解决相同问题的方法:)

【讨论】:

  • 这不是问题,因为我的所有磁盘驱动器都比 Virtual Box 端和 Windows 所需的大得多。我为解决问题所做的工作证明了这一事实。
  • 只有在使用 Berkshelf 时才会出现此问题。
【解决方案2】:

我最终解决这个问题的方法是完全停止使用 Berkshelf。我切换到使用策略文件而不是 Berkshelf 来管理说明书中的包依赖关系,问题就消失了。

https://docs.chef.io/policyfile.html#chef-generate-policyfile

chef generate policyfile 

这会在您的食谱中创建一个类似“Policyfile.rb”的文件。一旦你有了策略文件,厨房可能会抱怨 Policyfile.lock.json。您可能还需要获取此文件。我相信我是从另一本食谱中复制的,之后,JSON 会使用厨房自动更新为正确的结构。

【讨论】:

  • 奇怪。你能分享一个存储库来重现这个问题吗?
  • 在这种情况下我不能分享我的代码库,因为它不是我的。如果您有具体问题,尽管我可以删除专有信息。
猜你喜欢
  • 2016-11-28
  • 2016-10-05
  • 1970-01-01
  • 2019-01-30
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
相关资源
最近更新 更多