如何重命名配方并将其替换为所有节点的运行列表

时间:2016-09-13 19:25:03

标签: chef chef-recipe knife cookbook

假设我有一个名为my_cookbook::recipe_old.rb的食谱。此配方已应用于节点,角色等的运行列表。

但是我要说我需要将食谱重命名为recipe_new.rb。如何更新所有节点和角色的运行列表?

我想我必须做knife search来查找应用了配方的所有节点和角色,将新命名的配方添加到其运行列表中,然后从运行列表中删除旧配方。

这是最好的方式还是Chef有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

像这样的东西

knife exec -E 'nodes.transform("*:*") {|n| n.run_list.each_index {|i| if n.run_list[i] == "recipe[my_cookbook::recipe_old]"; n.run_list[i] = "recipe[my_cookbook::recipe_new"; return true; end } false }'

然后类似roles.transform