在 chef-client 执行期间添加到节点的 运行 列表
Add to a node's run list during chef-client execution
我在 Chef 管理下的开放堆栈中有许多临时节点。虽然 chef-client 是 运行,但我想根据他们的主机名动态地为他们分配角色,但我还没有找到如何完成它的文档或示例。这甚至受支持吗?它是反模式吗?
没有好的办法。您可以通过更改代码中的 node.run_list
来改变节点的 运行 列表,但这在下一个 运行 之前不会生效。此外,我(和其他一些核心开发人员)认为默认情况下允许这样做是应该解决的问题,因为它使得使用 运行 列表进行安全识别变得不可能。更好的方法是制作一本依赖于一切的顶级食谱,并使用一些 Ruby 代码进行节点分类,并使用 include_recipe
运行s 适当的食谱。缺点是这意味着您需要同步每本可以使用的食谱,这在第一次需要一段时间。此外,您还必须加载所有属性文件等,这并不是有史以来最慢的事情,但由于其他原因可能不受欢迎。
我在 Chef 管理下的开放堆栈中有许多临时节点。虽然 chef-client 是 运行,但我想根据他们的主机名动态地为他们分配角色,但我还没有找到如何完成它的文档或示例。这甚至受支持吗?它是反模式吗?
没有好的办法。您可以通过更改代码中的 node.run_list
来改变节点的 运行 列表,但这在下一个 运行 之前不会生效。此外,我(和其他一些核心开发人员)认为默认情况下允许这样做是应该解决的问题,因为它使得使用 运行 列表进行安全识别变得不可能。更好的方法是制作一本依赖于一切的顶级食谱,并使用一些 Ruby 代码进行节点分类,并使用 include_recipe
运行s 适当的食谱。缺点是这意味着您需要同步每本可以使用的食谱,这在第一次需要一段时间。此外,您还必须加载所有属性文件等,这并不是有史以来最慢的事情,但由于其他原因可能不受欢迎。