强制使用 Chef 的食谱顺序
Force the order of recipes with Chef
情况是标准说明书 chef-provisioning
的安装将失败,因为 Nokogiri gem 将无法使用本机扩展进行编译。 Ubuntu 和 CentOS 就是这种情况。肯定是一个错误 - 现在我正在尝试找到解决方法。
编译失败是因为缺少包。在 Ubuntu 包 liblzma-dev
和 zlib1g-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)
情况是标准说明书 chef-provisioning
的安装将失败,因为 Nokogiri gem 将无法使用本机扩展进行编译。 Ubuntu 和 CentOS 就是这种情况。肯定是一个错误 - 现在我正在尝试找到解决方法。
编译失败是因为缺少包。在 Ubuntu 包 liblzma-dev
和 zlib1g-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)