微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

厨师在客户端运行期间仍在寻找已删除的食谱

如何解决厨师在客户端运行期间仍在寻找已删除的食谱

我已经删除了厨师食谱,方法删除食谱.rb文件的所有引用,然后上传其所属的食谱:

knife cookbook upload crmpiccoknife cookbook upload crmpicco-deploy

然后我烘烤服务器以获取更改(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

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

解决方法

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

可能是从Recipes:中显示的knife node show <nodename>部分中提取的。

选项1:

  1. 使用chef-client -o覆盖现有的运行列表:

    chef-client -o "recipe[crmpicco],recipe[crmpicco-deploy]" -l error
    

选项2:

您可以尝试“清空”节点的chef-client后运行run_list。这应删除该节点的“已保存” Recipes:

  1. 编辑节点:

    knife node edit NODENAME
    
  2. "run_list":下记下食谱/角色,将其删除并保存节点,以使run_list为空。

      "run_list": [
    
      ]
    
  3. 进行一次chef-client运行,它应该报告该节点“运行列表为空”。

  4. 使用以下方法检查节点的Recipes:是否为空:

    knife node show NODENAME -a 'recipes'
    
  5. 再次编辑该节点,然后将角色/食谱重新添加到run_list中,保存该节点。

  6. 运行chef-client -l error

更新:

在进行任何更改时更改/更新食谱版本并在运行中使用较新版本的食谱始终是一个好习惯。它可以确保chef-client将较新的菜谱拉到该节点-在这种情况下将不会引用丢失的配方文件。

,

您也必须从运行列表中删除此配方。

如果您使用策略文件管理运行列表,则需要从该策略中删除配方并将其推送(chef push)到Chef Server。

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

knife node edit <node>

并从run_list中删除配方。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。