厨师食谱在第一次收敛时不执行

Chef recipe not executing on first convergence

我有基本的厨师食谱,其中一个食谱在第一个 运行 中没有收敛。

厨师食谱:https://github.com/linaksa/linaksa_infra

当我 运行 kitchen test 配方 linaksa_infra::hosts 根本没有收敛。此外,当我 运行 kitchen setup 它不会收敛,但如果我 运行 kitchen converge 之后它会收敛。我不确定我做错了什么?

这是 kitchen test kitchen setupkitchen converge 的输出:https://gist.github.com/linaksa/76607bbfd15e471dfa67

我正在使用 Chef DK 0.10.0。任何帮助将不胜感激。

别担心,两种情况下都会执行配方。

问题是食谱仅在屏幕上打印 如果其中至少包含一个资源

查看食谱代码:

nodes = search(:node, 'ipaddress:*')
nodes.each do |n|
  hostsfile_entry n['ipaddress'] do
    # [...]
  end
end

原因是第一次搜索return没有节点(我们用的是kitchen)。所以在第一个 运行 这个食谱中不会创建任何资源。因此,配方不会在执行时显示在屏幕上。

第二次,如果您正在使用 chef_zero provisioner,搜索将 return localhost 机器,因为它是在上一个 chef 运行.[=13] 末尾保存的=]

您可以尝试 运行ning kitchen with -l debug 以确认发生了什么。