我在Chef管理下的开放堆栈中有许多短暂的节点。虽然chef-client正在运行,但我想根据主机名为它们动态分配角色,但我没有找到文档或如何完成它的示例。这甚至支持吗?这是一种反模式吗?
答案 0 :(得分:2)
没有好办法做到这一点。您可以通过更改代码中的node.run_list
来改变节点的运行列表,但这在下次运行之前不会生效。此外,我(以及其他一些核心开发人员)认为默认情况下这是允许的,因为它使得使用运行列表进行安全性识别是不可能的。更好的方法是制作一个依赖于所有内容的顶级菜谱,并使用一些Ruby代码进行节点分类,并使用include_recipe
运行相应的配方。缺点是这意味着您需要同步每个可以使用的食谱,这在第一次需要一段时间。此外,你必须加载所有属性文件等,这不是有史以来最慢的,但由于其他原因,它可能是不受欢迎的。