【问题标题】:plain shell script vs a deployment tool纯 shell 脚本与部署工具
【发布时间】:2013-04-01 06:33:26
【问题描述】:
我正在努力尝试在我们的项目中替换(改进)我们的部署过程,尽可能地使其自动化。目前我们使用的是纯 shell 脚本。我对 Fabric 和 Capistrano 进行了一些研究,看看它们是否可以帮助我们实现部署自动化。
部署工具(即 Capistrano、Fabric)的作用与使用 shell 脚本几乎相同。
除了拥有一门高级编程语言之外,与普通 shell 脚本相比,使用部署还有哪些优势?
【问题讨论】:
标签:
shell
deployment
capistrano
fabric
【解决方案1】:
我认为正确的“适合”部署与部署的规模、复杂性和操作配置文件有很大关系。如果您的应用程序在单台机器上运行,并且您只偶尔启动一次新实例,并且您实际上可以完全在 shell 中成功地自动化它,那么请算上您的祝福并尽可能使用该 shell 脚本。简单是有价值的。
随着您的部署架构、集群规模、团队规模、登台/测试环境的数量、部署频率等的增长,使用 Fabric 或类似的东西升级到下一个复杂级别是有意义的。既有成本,也有优势。主要优点,或者我认为的方式,在 shell 脚本中很难满足的要求,例如同时远程部署到多个目标,将脚本幂等地重新应用到已经部署的实例。不要沉迷于高级语言(python、ruby 等)、您可以使用的第三方模块等。坚持基础。只需为您真正需要满足要求的部署复杂性付费,当简单的脚本工作时,坚持使用它们。案例研究:许多 Solaris 作为 Korn shell 脚本存在,并且已经正常工作了 10 多年。少量 Fabric/Capistrano/Puppet/Chef/Etc 编排一组可靠的 shell 脚本可以处理大部分中等范围的部署范围。
【解决方案2】:
使用预先存在的工具的最大优势在于,您不必为要部署的每个软件都重新发明轮子。 Puppet Forge 等存储库可能包含适合您的解决方案。如果他们不这样做,您可以随时与社区分享您的解决方案。 Quid pro quo 等等。