使用Puppet进行应用程序部署

我是Puppet的新手,虽然我一直使用* nix系统多年,但我从来没有像系统pipe理员或操作系统那样工作过。

我目前正在编写Puppet清单来托pipe一组(PHP / MySQL / MongoDB,git中的代码)Web应用程序。 很明显,Puppet需要对实际应用有一定的了解,因为我将为每个应用设置一个虚拟主机,但是我不确定Puppet是否应该pipe理代码部署和数据库创build等事情。

Puppet是应用程序部署的合适工具吗? 如果没有,你能推荐一个更合适的工具吗?

我会考虑Capistrano或布料部署..

您将可以更好地控制这两种工具的部署情况。

Puppet被用于许多大型组织的部署,但并不总是完美的。 这很大程度上取决于您的部署方法。 你是否一次部署到大量的机器? 你做滚动部署?

一些组织使用Puppet构build其部署包,然后使puppet强制策略成为该包的正确版本。 由于puppet具有包含环境的概念,因此可以使用环境分阶段进行部署(例如,dev,test,prod)。

其他组织使用puppet来协调部署,通过发射rsync,git checkout或使用puppetrecursion的文件副本(尽pipe这很慢)。

还有其他相当不错的工具可用于部署。 我过去曾经使用威士忌磁盘(一个简单的ruby工具),并非常喜欢它。

(免责声明,我在Puppet Labs工作)

如果你想从应用程序中构build一个包,你可以看看FPM 。 代码在GitHub上 。

在我看来,Puppet并不是部署应用程序的合适工具。

我使用Jenkins构build和部署我们的代码来testing和分期。

jenkins最初是一个持续集成的服务器,但它非常灵活和模块化。 Jenkins有很多插件可以帮助你部署你的应用程序:

  • 部署插件
  • 通过SSH插件发布
  • 发布插件

对于我们的应用程序,我已经通过SSHconfiguration了Jenkins,它将成功构build的WAR文件复制到目标服务器,然后执行备份和部署的脚本。 希望这可以帮助!

远程执行+configurationpipe理工具对于应用程序部署非常有用。 盐就是一个很好的例子 。

Puppet并不是真正用于部署的,因为当涉及大量文件时,可能会遇到问题。 您可以查看应用程序部署的capistrano。

http://rubyforge.org/projects/capistrano/