在处理简单的基础设施组件时,这完全没有问题,我们可以做大量的自动化来管理数百台服务器。但像大多数事情一样,让你痛苦不堪的往往是一些极端情况。由于 Puppet 语言是一种 DSL,简单的问题开始变成大问题。比如,无法做到基本的 for 循环,甚至连字符串操作也做不到。大多数配置语言都存在这些问题。最后,你可能还会遇到这样的情况:你需要扩展它们以涵盖特定的用例,通常,要做到这一点,就需要编写真正的代码。如果不使用“真正的”语言,你能做的事情也就会十分有限,所以我们可能从一开始就应该选择合适的做法。现在回想起来,也许 Chef 会是一个更好的选择。至少使用它的时候,我学到的很多东西可以迁移到我职业生涯的其他地方(Chef 使用 ruby 而不是他们自己的 DSL)。我对 Ansible 和 Salt 没有太多的经验,但我觉得它们都有同样的缺点和相似的优点。