Chef infra 在Chef客户端运行期间,Chef仍在查找已删除的配方

Chef infra 在Chef客户端运行期间,Chef仍在查找已删除的配方,chef-infra,ubuntu-16.04,devops,Chef Infra,Ubuntu 16.04,Devops,我删除了一份厨师菜谱,方法是删除菜谱.rb文件中对它的所有引用,然后上传它所属的菜谱: 刀子食谱上传crmpicco和刀子食谱上传crmpicco部署 然后,我烘焙服务器以引入更改(chef client-l error),当我这样做时,我会看到菜谱列表中列出的菜谱 chef-client -l error Starting Chef Client, version 12.19.36 resolving cookbooks for run list: ["ulimit2",

我删除了一份厨师菜谱,方法是删除菜谱
.rb
文件中对它的所有引用,然后上传它所属的菜谱:

刀子食谱上传crmpicco
刀子食谱上传crmpicco部署

然后,我烘焙服务器以引入更改(
chef client-l error
),当我这样做时,我会看到菜谱列表中列出的菜谱

chef-client -l error
Starting Chef Client, version 12.19.36
resolving cookbooks for run list: ["ulimit2", "logrotate::global", "users::sysadmins", "apt", "postfix", "redisio", "redisio::enable", "etcd", "apache2", "newrelic::php_agent", "crmpicco-deploy::maintenance", "crmpicco-deploy::enrich", "crmpicco-deploy"]
Synchronizing Cookbooks:
...
配方
“crmpicco deploy::enrich”
是我删除的配方,但由于某些原因,它仍然列在运行列表中

由此产生的不可避免的错误是:

Installing Cookbook Gems:
Compiling Cookbooks...

================================================================================
Recipe Compile Error
================================================================================

Chef::Exceptions::RecipeNotFound
--------------------------------
could not find recipe enrich for cookbook crmpicco-deploy

Platform:
---------
x86_64-linux

是否需要运行缓存或其他命令来强制删除此配方?

添加此作为答案,因为可能需要一些解释

它可能从
刀节点显示的
菜谱:
部分获取相同的信息

选项1:

  • 使用
    chef client-o
    覆盖现有运行列表:

    chef-client -o "recipe[crmpicco],recipe[crmpicco-deploy]" -l error
    
  • 选项2:

    在“清空”节点的
    run\u列表后,可以尝试运行
    chef-client
    。这将删除节点的“已保存”
    配方:

  • 编辑节点:

    knife node edit NODENAME
    
  • 记下
    “运行列表”下的配方/角色:
    ,删除它们并保存节点,以便
    运行列表
    为空

    “运行列表”:[
    ]
    
  • 执行
    chef-client
    运行,它应该报告节点“有一个空的运行列表”

  • 使用以下命令检查节点的
    配方:
    现在是否为空:

    knife node show NODENAME -a 'recipes'
    
  • 再次编辑节点,并将角色/食谱添加回
    run\u列表
    ,保存节点

  • 运行
    chef客户端-l错误

  • 更新:


    在进行任何更改时,最好更改/更新cookbook版本,并在运行中使用cookbook的更新版本。它可以确保
    chef客户端将把较新的烹饪书拉到节点上,在这种情况下,该节点将不引用丢失的食谱文件。

    您也必须从运行列表中删除此recice

    如果使用policyfile管理运行列表,则需要从该策略中删除配方并将其推送到chef服务器(
    chef push

    如果在节点属性中设置了run_list(旧方法,在引入策略之前),则运行:

    刀节点编辑
    

    并从运行列表中删除该配方。

    刀烹饪书是否也显示了crmpicco配方
    显示了该配方
    enrich.rb
    ?说到版本-在进行此类更改时,最好更新(并使用新的)食谱版本。@Seshadri_C感谢您的评论。不,当我在本地计算机上运行上述命令时,不会显示配方。是否有某种缓存需要刷新?