Puppet 基础设施

Computers in the future may have as few as 1,000 vacuum tubes and weigh only 1.5 tons.

— Popular Mechanics (1949)

在本章中,我们将学习如下内容:

  • 使用版本控制

  • 使用提交钩子

  • 使用 Rake 部署变更

  • 配置 Puppet 的文件服务器

  • 从 cron 运行 Puppet

  • 使用自动签名

  • 预签名证书

  • 从 Puppet 的 filebucket 检索文件

  • 使用 Passenger 扩展 Puppet 的部署规模

  • 创建去中心化的分布式 Puppet 架构

本书中的一些处方体现了 Puppet 社区约定的最佳实践。 其他的一些处方是一些技巧和窍门,这些技巧使你使用 Puppet 工作变得更容易, 或向你介绍一些先前还不知道的功能。 其中的一些处方仅仅是轻量级的捷径方法,我不建议你将其作为生产环境的标准操作过程, 但在紧急情况下可能还是有用的。 最后,这里还提供了一些实验性的处方,你可能想尝试一下, 但这些处方仅适用于大型基础设施或其他不寻常的场合。

我希望你通过阅读和学习这里提供的处方,能获得有关 Puppet 如何工作以及你该如何使用 Puppet 的更深入、更广泛的理解, 从而帮助你建立更完善的基础设施。 只有你自己才能决定一个特定的处方对你或你的组织是否适用, 但我希望这里提供的处方能激励你进行实验,找出更多更重要的处方?—?从中获得使用 Puppet 的乐趣!

提示

纵观这本书的所有例子,你会看到大多数的命令以 root 用户运行。 如果你更愿意使用一个普通用户账号和 sudo 管理系统, 请使用这种方式替代 root 用户的操作。

因为不同 Linux 发行版(例如:Ubuntu、Red Hat、CentOS)在具体细节上会有不同,比如: 软件包名、配置文件的路径,等等。为了节省篇幅和提高清晰度的原因, 我决定为本书挑选一种发行版(Ubuntu 10.04 Lucid)并坚持使用它。 然而,Puppet 几乎可以在所有 Linux 发行版上运行,所以在你偏爱的操作系统和发行版上应该很少遇到麻烦, 仅需要对处方做适当调整即可。

在这本书写作时,Puppet 2.7 是最新的稳定版本,因此我选择了它作为本书使用的 Puppet 的参考版本。 然而,Puppet 命令的语法每隔一段时间可能就会改变, 所以要注意,旧版本的 Puppet 仍然是非常有用的, 旧版本的 Puppet 可能不支持这本书中所描述的所有功能和语法。