使用puppet(或任何其他内容)而不是bash脚本进行基于SSH的部署

时间:2011-12-12 14:58:18

标签: bash puppet

我有一个自定义构建和部署脚本,它可以通过SSH工作并部署到服务器(在运行MacOS上)。 bash脚本执行许多简单的操作,例如复制文件,备份旧文件以及为正向移动数据库应用正确的SQL脚本。但是有一些高级的东西,比如启动一个可以断开的远程SQL升级程序,一旦再次启动部署脚本,它只会在SQL脚本完全应用的情况下向前推进(简而言之,有一些流量控制正在发生,bash是这种东西真的不太理想)

脚本已经非常庞大而且很乱,因为bash并不适用于这种详细的逻辑。你能推荐一些工具,库可以让事情变得更容易。

3 个答案:

答案 0 :(得分:3)

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

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

对于部署工具,我个人认识Fabric,一个很棒的Python工具。但是在Ruby世界里也有Capistrano。我不知道其他任何人。

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

答案 1 :(得分:1)

以下是我的建议:

  • 木偶
  • 厨师
  • 的cfengine

这些都是免费的(如在啤酒中),并允许您做您想要的。他们将要求您将当前的bash脚本调整为适合其设计/框架的模块。它有点工作,但从长远来看,它往往更好,因为框架负责错误检查,融合配置和许多其他你必须手动插入到自己的代码中的东西是你自己这样做。

我以前也曾使用过Opsware这类东西,但这会花费相当多的现金,而且,对于你想要做的事情,它并没有提供更多的好处。

答案 2 :(得分:0)

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

在你的截止日期时,不要尝试新事物:

这也是重构你的bashscripts的好时机。

我过去使用PaaS进行了自动化,可重复的部署,或者只使用了使用deployogi的git / SVN挂钩(即bash):https://github.com/coderofsalvation/deployogi

我了解你的情况,但我不确定是否公平地说bash语言暗示'一团糟'和'复杂'。 每种语言都允许隐藏复杂性没有?

我想当时间不允许我们重构时,代码(用任何语言)变得过于复杂:)

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