chef-infra - Chef : How to add multiple nodes to a given role

标签 chef-infra chef-recipe

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

对于单个节点,我将从 Chefdk(工作站)执行以下命令。
knife node run_list add <host-name1> "role[httpd-role]" (已经创建并上传了菜谱到厨师服务器,并结合了一些菜谱来创建角色“httpd-role”)。

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

  • 当主机名具有固定模式和递增数字时(fe1、fe2 等...)
  • 当主机名没有任何固定模式时(foo、bar、fooabcd、barabcd 等...)

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

    提前致谢

    最佳答案

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

    关于chef-infra - Chef : How to add multiple nodes to a given role,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556263/

    相关文章:

    linux - Chef-Server安装找不到chef服务

    ruby - Chef : no implicit conversion of String into Integer TypeError

    attributes - Chef 不读取属性和定义

    chef-infra - 如何从 Chef 数据包中访问当前值?

    ruby - 如何查看上传失败的具体 Recipe ?

    chef-infra - 如何让 yum_package 资源在 chef_gem 包之前运行?

    ruby - 如何检查服务是否在 Chef 中运行?

    ssh - 如何在Chef中修复 'knife bootstrap ssh connection to client issue'?

    linux - 测试厨房卡在 "creating virtual machine"

    mysql - Chef Mysql 菜谱失败