【问题标题】:chef-solo run getting metadata error after upgrading to 12.0.0升级到 12.0.0 后 chef-solo 运行出现元数据错误
【发布时间】:2015-02-06 12:05:01
【问题描述】:

我有几台 ubuntu 机器需要进行相同的配置,因此我在共享目录中使用 chef-solo 对厨师食谱进行了只读安装来完成此操作。我已经使用 chef-solo 一年多了,从 chef 版本 10 开始。今天,在使用 packer 重建 VM 之后(我使用 VM 来测试我的食谱,然后在“真实”机器上使用它们,并定期重建它们所以是“新鲜的”)我的食谱开始因错误而失败:

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

我在几台机器上多次使用这些食谱,在虚拟机中反复测试,但我注意到新重建的虚拟机安装了 chef 12.0.0。运行 chef 11 的旧 VM 仍然可以正常工作。这适用于我的每一本食谱。

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

----  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 文件,其中包含一个类似的“名称”字段,该字段具有与 metadata.rb 文件相同的信息以及许多其他信息,均采用 json 格式。但是再次运行相同的 chef-solo 命令会导致完全相同的错误消息。

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

【问题讨论】:

  • 嗨,你能在 Vim 中打开 metadata.rb 文件并检查任何非打印字符吗? stupidunixlinuxtricks.blogspot.com/2008/03/…
  • 还要检查文件同步是否正常。通常,您不希望在工作时将 metadata.json 放在文件夹中,因此我建议您将其删除。
  • 欧文,我按照你的建议做了,但遗憾的是,除了换行符外,没有显示不可打印的字符。所有的空间实际上都是空间。
  • coderanger,我删除了 metadata.json 文件。文件同步甚至在 chef-solo 中发挥作用吗?感谢您的帮助。

标签: metadata chef-infra chef-solo


【解决方案1】:

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

"单刀(prepare/bootstrap) user@host -P 密码--bootstrap-version 11.16.4-1"

【讨论】:

  • 到目前为止,我已经把它作为一个 bug 放到了 github main chef repo 上。我还发现使用 chef-client -z 不会出现此问题,因此我将其用作解决方法,即使它要慢得多。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2019-10-17
  • 2023-03-31
  • 2013-09-07
  • 2020-01-19
  • 2014-10-06
  • 1970-01-01
相关资源
最近更新 更多