使用Vagrant,为什么Puppet配置管理比自定义打包的镜像更好?

12
我正在创建一个虚拟机,以模仿我们的生产 Web 服务器,以便我可以与新开发人员共享它,让他们尽快适应。我已经阅读了 Vagrant 文档,但是我不明白使用通用基础镜像并使用 Puppet 配置所有内容的优势,与打包安装和配置好一切的自定义镜像相比。我能想到的只有以下几点: 使用 Puppet 和自定义打包镜像的优劣势:
  • 易于保持每个人的更新 - 能够将清单放在版本控制下,并共享 repo,以使其他开发人员能够简单地拉取新的更新并重新运行 puppet,即 “vagrant provision”。
  • 在清单中记录环境信息。
  • 能够使用在生产环境中定义的 Puppet 模块确保相同的环境。
使用 Puppet 和自定义打包镜像的缺点:
  • 编写清单所需的时间比仅安装和配置自定义打包镜像多。
  • 使用 Puppet 构建虚拟机的第一次需要更长的时间,而直接下载自定义打包镜像则更快。
我感觉可能会漏掉一些重要的细节,您还能想到其他的吗?
2个回答

12

优点:

由于依赖关系可能随时间改变,因此从头开始构建一个新的环境需要手动删除软件包或者将环境丢弃并重新安装。当然,您可以使用Bash或其他类型的脚本自动完成安装,但这意味着您需要调用本机操作系统包管理器,这意味着它只能在您选择的操作系统上运行。换句话说,您被限制了 ;)

据我所知,Puppet(像Chef一样)包含一种通用的、与操作系统无关的方式来安装软件包,这意味着清单可以在不进行修改的情况下在不同的操作系统上运行。

此外,这些脚本也可以用于生产机器的配置,这意味着开发和生产机器将几乎相同。

缺点:

当您可能永远不会切换操作系统或生产环境时,需要学习另一种DSL。您必须决定优点是否值得您花费的设置时间。个人而言,我认为具有抽象和可重复的包管理/配置策略将在未来为我节省大量时间,但您可能有不同的看法。


6

除了上述未明确提到的一个巨大优点是,您将会记录下您的设置(正确地),而且您的文档将是实际设置 - 而不是对事物如何被/可能已经被打算的(单次)描述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接