gpt4 book ai didi

metadata - 升级到 12.0.0 后,chef-solo 运行时出现元数据错误

转载 作者:行者123 更新时间:2023-12-02 20:16:28 25 4
gpt4 key购买 nike

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

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

我在多台机器上多次使用这些 Recipe ,并在虚拟机中反复测试它们,但我注意到新重建的虚拟机安装了 Chef 12.0.0。运行 Chef 11 的较旧 VM 仍然运行良好。这适用于我的每一本 cooking 书。

我开始使用谷歌调查和研究这个问题,我发现的关于该主题的所有内容都说将“名称”条目放入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 -------

这本 Recipe 中的单一 Recipe 非常简单:

------ Begin default.rb -------

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

package 'ack-grep' do
action :install
end

------ End default.rb -------

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

knife cookbook metadata ack-grep

此命令创建了一个metadata.json文件,其中包含一个类似的“名称”字段,其信息与metadata.rb文件相同,加上许多其他信息,全部采用json格式。但再次运行相同的 Chef-solo 命令会导致完全相同的错误消息。

我猜测,由于它提示元数据中缺少字段(该字段同时存在于metadata.rb 和metadata.json 文件中),因此我缺少其他内容,并且错误消息是错误的。有人有比这更好的信息,或者知道发生了什么吗?也许甚至如何解决/修复它?

最佳答案

一个快速修复方法是使用 --bootstrap-version 选项指定较旧版本的 Chef。

“Knife solo (准备/引导)user@host -P 密码 --bootstrap-version 11.16.4-1”

关于metadata - 升级到 12.0.0 后,chef-solo 运行时出现元数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com