因此,我有一组配置为与 vagrant 一起使用的 cookbook/角色。我现在正在部署应用程序,并且我想在我的服务器上使用 chef-solo 运行这些相同的 cookbook。因此,我只需安装 chef-solo(与 vagrant 使用的版本相同),然后尝试调用以下命令:
sudo chef-solo -c solo.rb -j roles/clusterflunk_dev.json
不幸的是,产生了以下错误:
[Fri, 27 Jul 2012 08:20:28 +0100] INFO: *** Chef 0.10.8 ***
[Fri, 27 Jul 2012 08:20:29 +0100] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[Fri, 27 Jul 2012 08:20:29 +0100] FATAL: NoMethodError: undefined method `delete' for # <Chef::Role:0x7f6848a05638>
我不确定同一版本的 chef 会产生什么不同的结果,显然我在某个地方犯了错误。我使用的是 Ubuntu Server 10.10。
答案1
如果您无法通过查看错误确定问题的原因,我建议使用 omni-installer 将 chef 升级到当前发布版本(将 10.8 升级到 10.24.4,或者最好跳转到 11.x)。
http://www.opscode.com/chef/install/
curl -L https://www.opscode.com/chef/install.sh | sudo bash
其他用户也报告了类似的错误,请参见这里例如,自 Chef 0.10.8 以来,有许多与 JSON 相关的修复票已关闭