我正在使用厨师的包裹套餐开发自定义食谱。
我在recipes文件夹下创建了一个名为apache.rb的文件。
然后我通过berks上传了这本食谱,并在一个节点上用食谱[“packages :: apache”]编辑了食谱列表。
当我运行chef-client时,我收到以下错误:
could not find recipe apache for cookbook packages
这是位于recipes /文件夹下的apache.rb:
package 'Install Apache' do
case node[:platform]
when 'redhat', 'centos'
package_name 'httpd'
version '2.2.0'
when 'ubuntu', 'debian'
package_name 'apache2'
end
action :install
end
答案 0 :(得分:1)
您可以尝试knife upload . --force
,以确保烹饪书在厨师服务器上是最新的吗?
可能已经上传了一个较旧版本的食谱(即在您创建apache配方之前),并且因为您将版本号保持在metadata.rb
相同,刀(或berks,取决于什么您用于上传)可能正在跳过上传,认为没有任何改变。
更新:
应该注意的是,如果您确实确定要更新Chef服务器上的现有版本,则应该真正使用上述内容(例如,如果您是还在开发中)。
正如@Tensibai在下面的评论中指出的那样,将版本号压缩到cookbook的元数据上将是一种更好的方法来解决生产环境中的这个问题。