如何解决厨师在客户端运行期间仍在寻找已删除的食谱
我已经删除了厨师食谱,方法是删除食谱.rb
文件的所有引用,然后上传其所属的食谱:
knife cookbook upload crmpicco
和knife 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:
-
使用
chef-client -o
覆盖现有的运行列表:chef-client -o "recipe[crmpicco],recipe[crmpicco-deploy]" -l error
选项2:
您可以尝试“清空”节点的chef-client
后运行run_list
。这应删除该节点的“已保存” Recipes:
。
-
编辑节点:
knife node edit NODENAME
-
从
"run_list":
下记下食谱/角色,将其删除并保存节点,以使run_list
为空。"run_list": [ ]
-
进行一次
chef-client
运行,它应该报告该节点“运行列表为空”。 -
使用以下方法检查节点的
Recipes:
是否为空:knife node show NODENAME -a 'recipes'
-
再次编辑该节点,然后将角色/食谱重新添加到
run_list
中,保存该节点。 -
运行
chef-client -l error
更新:
在进行任何更改时更改/更新食谱版本并在运行中使用较新版本的食谱始终是一个好习惯。它可以确保chef-client
将较新的菜谱拉到该节点-在这种情况下将不会引用丢失的配方文件。
您也必须从运行列表中删除此配方。
如果您使用策略文件管理运行列表,则需要从该策略中删除配方并将其推送(chef push
)到Chef Server。
如果在节点属性中设置run_list(在引入策略之前的旧方法),请运行:
knife node edit <node>
并从run_list中删除配方。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。