1

我有一个自定义构建和部署脚本,它通过 SSH 工作并部署到服务器(在运行 MacOS 上)。bash 脚本做了很多简单的事情,比如复制文件、备份旧文件以及为向前移动的数据库应用正确的 SQL 脚本。但是有一些高级的东西,比如启动远程 SQL 升级过程,可以断开连接,一旦再次启动部署脚本,它只有在完全应用 SQL 脚本的情况下才会继续(简而言之,发生了一些流控制和 bash对于这些东西来说不是很理想)

该脚本已经很大而且很乱,因为 bash 不适合这种详细的逻辑。你能推荐一些工具,图书馆,这会让事情变得更容易。

4

3 回答 3

3

对于您告诉我们的内容,我认为您需要一个部署工具,而不是配置管理工具。为简化起见,我将像这样区分两者:

  • 部署工具是一种“推送”工具:当您按下按钮时,将运行所需的操作以进行部署。这是一个一步的过程(它可以有多个动作,但它只启动一次)。
  • 配置管理工具通常是一个“拉”工具,您的服务器会定期检查其配置是否与 CM 服务器告诉它们的完全一致 - 并在需要时应用更改。您配置服务器一次,然后系统确保一切正常。它也是轻松克隆系统的好工具。

对于部署工具,我个人了解Fabric,一个很棒的 Python 工具。但在 Ruby 世界中也有 Capistrano。我不知道其他人。

对于 CM 工具,Puppet 和 Chef 似乎是当今人们的首选。Cfengine 是一个较旧的工具,它有一些问题(我不知道这是否已经改变)。

于 2011-12-13T14:24:09.940 回答
1

以下是我的建议:

  • 木偶
  • 厨师
  • cfengine

这些都是免费的(就像啤酒一样),可以让你做你想做的事。他们将要求您将当前的 bash 脚本改编成模块以适应他们的设计/框架。这是一些工作,但从长远来看,它往往会更好,因为框架负责错误检查、聚合配置和许多其他事情,如果你自己这样做,你必须手动插入到自己的代码中。

我以前也将 Opsware 用于此类事情,但这需要花费相当多的现金,而且对于您正在尝试做的事情,并没有提供更多的好处。

于 2011-12-12T15:06:03.700 回答
0

在某些情况下,从 bash 脚本迁移到完整的解决方案并不像许多云服务声称的那样简单。

考虑到“在截止日期前不要尝试新事物”:

这也可能是重构 bashscript 的好时机。

我过去使用 PaaS 或仅使用 GIT/SVN 钩子使用 deployogi(即 bash)完成了自动化、可重复的部署:https ://github.com/coderofsalvation/deployogi

我了解您的情况,但我不确定说 bash 语言意味着“一团糟”和“复杂”是否公平。每种语言都允许隐藏复杂性,不是吗?

我猜当时间不允许我们重构时,代码(无论使用何种语言)都会变得过于复杂:)

PaaS 很棒。但总是需要?我想不是。

于 2014-04-21T18:39:06.080 回答