chef-运行 windows 意外的输入结束,期待 keyword_end

chef-run windows unexpected end-of-input, expecting keyword_end

我正在尝试使用 chef-运行 将 java jdk 8 安装到 ubuntu 16.04 实例上。虽然当它尝试安装时我得到 Failed to converge target,但当我打开日志时我有以下内容:

[2018-06-21T20:24:34+01:00] ERROR: Remote chef-client error follows:
[2018-06-21T20:24:34+01:00] ERROR: SyntaxError: /var/chef-workstation/cache/cookbooks/windows/resources/share.rb:275: syntax error, unexpected end-of-input, expecting keyword_end

我的 chef-repo 中有以下结构:

cookbooks
 -- jdk
  -- attributes
   -- default.rb
  -- recipes
   -- default.rb
  metadata.rb

attributes/default.rb内:

default['java']['install_flavor'] = 'openjdk'
default['java']['jdk'] = '8'

recipes/default.rb内:

include_recipe 'java'

metadata.rb内:

name 'name'
maintainer 'maintainer'
maintainer_email 'maintainer_email@email.com'
license 'MIT'
description 'Installs/Configures java'
long_description 'Installs/Configures java'
version '0.1.0'
chef_version '>= 12.14' if respond_to?(:chef_version)

depends 'java', '~> 2.1.0'

我看不出错误是由什么引起的。如有任何帮助,我们将不胜感激。

编辑:

如果它有助于我使用参数的命令如下: chef-run -i ~/.ssh/key jack@host jdk

这是 ChefDK 3.0 中使用策略 tarball 导出时的错误。它将在下周的 ChefDK 3.1 中修复。同时,将此添加到您的 knife.rb 配置文件中:

require "mixlib/archive/lib_archive"
Mixlib::Archive::LibArchive.define_singleton_method(:new) { raise LoadError }

请确保在升级到 3.1 时将其删除。

这个问题应该在最新的稳定版本0.1.139中得到解决。