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

Pra*_*tal 5 chef-infra 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等...)

在本练习结束时,我想将角色'httpd-role'添加到所有节点,并在所有节点上执行'sudo chef-client'时,我希望获取所有最新策略并将其安装在节点.

提前致谢

Ste*_*ing 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 }'
Run Code Online (Sandbox Code Playgroud)

该示例按环境过滤dev并添加base角色.您还可以筛选某个节点名称(使用name:*)

(例子来自dougireton.com)