Chef:如何将多个节点添加到给定角色

时间:2015-02-17 06:52:18

标签: chef chef-recipe

是厨师的新手并尝试各种选择。如果用例是将多个节点添加到特定角色,那么最简单的方法是什么?

对于单个节点,我将从chefdk(工作站)执行以下命令。

knife node run_list add <host-name1> "role[httpd-role]"(已经为chef-server创建并上传了食谱,并结合了一些食谱来创建角色'httpd-role')。

假设我有许多主机名,在以下场景中将上述角色添加到所有节点的最简单方法是什么。

  1. 当主机名具有带增量数字的固定模式(fe1,fe2等......)
  2. 当主机名没有任何固定模式时(foo,bar,fooabcd,barabcd等......)
  3. 在本练习结束时,我想将角色'httpd-role'添加到所有节点,并在所有节点上执行'sudo chef-client'时,我希望获取所有最新的策略和将它们安装在节点中。

    提前致谢

1 个答案:

答案 0 :(得分:10)

没有内置的API端点或knife子命令来向多个节点添加角色。

但是,您可以使用knife exec

添加此操作
knife exec -E 'nodes.find("chef_environment:dev") {|n| puts n.run_list << "role[base]" unless n.run_list.include?("role[base]"); n.save }'

该示例按环境dev进行过滤,并添加base角色。您还可以过滤某个节点名称(使用name:*

(取自dougireton.com

的例子