Chef infra 如何运行厨师食谱

Chef infra 如何运行厨师食谱,chef-infra,chef-recipe,Chef Infra,Chef Recipe,在我的一个节点上,我的跑步列表中有三本食谱。当Chef客户端运行时,我可以看到其中两个食谱被执行,但第三个没有。可能的原因是什么 当我执行chef客户端时,我看到: resolving cookbooks for run list: ["vim", "vim::vimrc", "ssh-keys"] 然后: 但是没有执行ssh密钥配方 可能的原因是什么?我正在尝试使用配方。如果您查看ssh-keys::default配方,您将注意到前面有一个If配方: if node[:ssh_keys]

在我的一个节点上,我的跑步列表中有三本食谱。当Chef客户端运行时,我可以看到其中两个食谱被执行,但第三个没有。可能的原因是什么

当我执行chef客户端时,我看到:

resolving cookbooks for run list: ["vim", "vim::vimrc", "ssh-keys"]
然后:

但是没有执行
ssh密钥
配方


可能的原因是什么?我正在尝试使用配方。

如果您查看
ssh-keys::default
配方,您将注意到前面有一个
If
配方:

if node[:ssh_keys]
同时,属性文件不提供此属性,因此它是
nil
,执行不会进入块内。

根据食谱,它需要操作系统用户名和数据包“用户”的ID。这意味着您必须具备:

  • 名为users的数据包
  • 该数据包中的条目包含
    ssh\u密钥
    密钥

或者,如果没有找到
ssh\u密钥,它将根本不解析任何资源。

我在角色的
default\u属性中提供了该属性,该属性还指定了该节点的运行列表中的配方。这不应该起作用吗?同样,即使使用
if
语句,我也不会在chef客户端的输出中看到配方,就像我在问题中展示的两个vim配方一样?它显示的是
聚合2个资源,而不是2个配方。您在那里只看到了2个配方,因为没有其他需要更新的资源。@shawnzhu这是否意味着,如果没有更新资源,我将看不到该配方的任何输出,即使我在
if
?@NieldeWet之前放置了日志语句,在编译阶段之后,配方并不重要。所以在聚合资源运行队列中不会看到任何资源更新。配方中的日志语句应该在编译阶段执行(我没有尝试过)。这里有一篇很好的博客文章,标题是供您参考。谢谢,问题是在我的数据包条目中,我错误地调用了密钥ssh key,而不是ssh_key。
if node[:ssh_keys]