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

Chef : How to add multiple nodes to a given role

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

对于单个节点,我将从 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' 后,我希望获取所有最新策略并将它们安装在节点中。

提前致谢

afaik 没有内置 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