升级到12.0.0后,chef-solo运行获取元数据错误

时间:2014-12-08 18:41:29

标签: metadata chef chef-solo

我有一些我需要配置相同的ubuntu机器,所以我在一个以只读方式挂载的共享目录中使用chef-solo对厨师烹饪书来实现这一点。从厨师版本10开始,我一直使用厨师独奏超过一年。今天,在使用打包机重建虚拟机之后(我使用虚拟机测试我的食谱,然后在“真实”机器上使用它们,并定期重建它们所以这些都是“新鲜的”)我的食谱开始因错误而失败:

ERROR: Cookbook loaded at path(s) [/chef/cookbooks/ack-grep] has invalid metadata: The `name' attribute is required in cookbook metadata

我在多台机器上多次使用这些烹饪书,在VM中反复测试,但我注意到新重建的VM安装了厨师12.0.0。运行厨师11的老VM仍然很好用。这适用于我的每一本食谱。

我开始使用谷歌调查和研究这个问题,我在该主题上找到的所有内容都说将“name”条目放在metadata.rb文件中。但我的metadata.rb文件已包含“名称”条目。例如,这是我的元数据文件(编辑后不会在google-able论坛中发布我的个人信息):

----  Begin metadata.rb ---------

name             'ack-grep'
maintainer       'me'
maintainer_email 'me@example.com'
license          'All Rights Reserved'
description      'Installs/Configures ack-grep'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          '0.1.0'

------    End metadata.rb -------

本食谱中的单一食谱非常简单:

  

------开始default.rb -------

#
# Cookbook Name:: ack-grep
# Recipe:: default

package 'ack-grep' do
  action :install
end
     

------结束default.rb -------

我研究过的一篇文章说创建metadata.json文件会有所帮助,所以我运行了命令:

  

刀库菜单元数据ack-grep

此命令创建了一个metadata.json文件,该文件包含一个类似的“name”字段,其中包含与metadata.rb文件相同的信息以及许多其他信息,均为json格式。但是再次运行相同的chef-solo命令会导致完全相同的错误消息。

我猜测,因为它抱怨元数据中缺少字段,meta.rb和metadata.json文件中都存在,我错过了其他内容并且错误消息是错误的。任何人都有比这更好的信息,或知道发生了什么?甚至可能如何解决/修复它?

1 个答案:

答案 0 :(得分:0)

快速解决方法是使用--bootstrap-version选项指定旧版本的Chef。

“knife solo(prepare / bootstrap)user @ host -P password --bootstrap-version 11.16.4-1”