全面披露:我是 Puppet Labs 的员工。但在加入他们之前,我选择了 Puppet 作为产品超过 2 年。
我建议您使用 Puppet 或 Chef 而不是 shell,如果您的配置将 a) 具有任何程度的复杂性并且 b) 会随着时间的推移而改变 - 或者您希望您的安装环境本身以可能改变方式的方式发生变化您的部署执行。您的脚本可能非常好,但最终,除非您围绕它们遵循极好的编程实践、测试和 QA 等,否则它们将在某些时候失败。
围绕 DevOps 讨论这个概念的有一大群知识分子,但这归结为“技术债务”的原则——我们现在倾向于以简单的方式做事,因此认为它们更简单,但代价是增加了复杂性和难度之后。
Puppet 的优势之一是它的确定性 - 您编写的清单必须能够由 Puppet 以编程方式转换为您正在构建的服务器的模型。人们认为这更“困难”,但我认为如果你沿着技术生命周期的曲线平均它,难度就会降低。换句话说,Puppet 迫使您现在就进行思考,然后轻松地进行部署以扩展,而不是稍后思考并在进行时重新设计。现在用现金支付,而不是用信用卡支付,以后有利息。
如果你纯粹是拉下其他人的清单,你会在某个时候遇到麻烦——尽管我们不希望这样,但今天与 Puppet 合作肯定是这样,因为他们正在写它们来解决一般情况,而不是您的特定系统。许多通用清单只有在您对 Puppet 有了更好的理解时才会变得有用。
因此,我不会从那里开始,而是通过出色的Learning Puppet指南开始掌握基础知识。Puppet 的学习曲线很陡峭,但很快就会趋于平稳。
使用其他配置程序或工具还有其他原因,但我肯定会争辩说,你最好使用 Puppet 或 Chef,而不是试图确保你的 shell 脚本完全按照你认为的那样做,只要你需要产生新的环境。