如何将厨师食谱/食谱应用于多个节点?

以下是使用Chef将cookbook应用于节点的示例。 但没有人告诉过多个节点。 例如,我有一个akka应用程序,它传递了akka.cluster.seed-nodes参数。 所以算法应该是:

  1. 使用IP地址定义数组“IP”,如[192.168.1.1],[192.168.1.2],[192.168.1.3]
  2. 使用bootrapped ip地址定义空数组“bootsrapped”
  3. 开始迭代“IP”
  4. 使用当前ip调用knife bootstrap并使用“bootsrapped”值调用“pass” -Dakka.cluster.seed-nodes
  5. 在第二个数组中存储boostrapped ip
  6. 去3

因此,目标是编写一个可以应用于服务器的多个节点的脚本。 厨师怎么做?

你不会在服务器端这样做。 实际上,服务器甚至不会将配方应用于单个节点。 如果您希望在其上运行具有相同配方的多个Chef节点,您只需创建多个Chef节点并为它们提供所有相同的run_list。 您可以将这些配方打包成一个角色,但这不会改变单独定义每个配方的需要。

如果你想编写这个,你可以在工作站(你运行的节点)上这样做。 您可以使用一个小脚本来迭代IP数组和每个引导程序,或者您可以使用像Vagrant这样的工具在单个DSL文件中定义整个节点集群。