我如何自动将节点分配给环境?

How do i automate assigning nodes to environments?

您可以在引导时将节点分配给环境,但我已经有一堆生产节点位于 _default 中。

我可以使用 knife 将它们分配给其他环境,或者我正在考虑为每个具有运行 chef-client::config 并设置环境属性的配方的环境分配一个角色,然后我可以分配节点到正确的环境角色。我认为使用角色的问题是我必须跳过额外的箍才能在测试厨房中连接东西。

厨师们一般是怎么解决这个问题的?

正确的起点是knife exec转换脚本。

这应该可以帮助您入门:

knife exec -E 'nodes.transform("roles:foo") {|n| n.chef_environment = "foo" }'

参数是一个搜索查询(你也可以使用"*:*"来抓取所有节点)然后对块中的每个节点对象做一些事情。如果方块的 return 值为 true-y 则它会被保存,如果为 false-y 则不会。