强制使用 Chef 的食谱顺序

Force the order of recipes with Chef

情况是标准说明书 chef-provisioning 的安装将失败,因为 Nokogiri gem 将无法使用本机扩展进行编译。 Ubuntu 和 CentOS 就是这种情况。肯定是一个错误 - 现在我正在尝试找到解决方法。

编译失败是因为缺少包。在 Ubuntu 包 liblzma-devzlib1g-dev.

为了安装缺少的包,我创建了一个单独的说明书 fix-missing。我的 运行 列表是 fix-missing,然后是 chef-provisioning

Chef 似乎忽略了 运行 列表顺序。出乎意料,我还没有完全理解这一点,但无论如何,如果不使用运行列表,这应该怎么做?

我的解决方法是首先创建仅包含 fix-missing、运行 的 运行 列表,然后更新 运行 列表以包含 chef-provisioning

运行 包含两者的列表总是会失败。

您遇到的问题是由于 chef-gem 在编译时安装了 gem(以允许在之后的配方中使用 gem)。

如果你之前需要安装包,那么你在 运行 列表中使用之前的食谱是正确的(厨师尊重你给出的命令),但你必须强制安装这个包也在 compile time

package "libzma-dev" do
 action :nothing
end.run_action(:install)