用于简单 LAMP 开发的 Chef/Fabric/Puppet 的替代方案是什么?

10

为了提升技能和发展业务,我终于决定认真学习软件设计流程。这意味着采用版本控制工具(git),设置开发-测试-生产环境,并保持尽可能相似的配置。

我现在遇到了一个困难,即选择一种自动化和同步服务器设置的解决方案。我已经研究过Chef、Puppet和Fabric,但是对于我的需求来说它们似乎都过于复杂。我的情况如下:

  • 正在单个服务器上开发小型Web应用程序
  • 将在LAMP环境下进行开发,拥有中级PHP和UNIX技能
  • 不会大量修改环境变量(主要是php.ini和apache配置)

如果您能推荐一种比精通复杂的Chef环境或学习Python使用Fabric更容易实现的解决方案,我将非常感激。如果必要,我可以这样做,但是希望有一种更基本/优雅的解决方案来满足我的极简需求。


可能相关:使用Git部署项目 - hakre
4个回答

8
在我工作的公司中,我们有着更或多或少相同的需求,我们只需要设置几个bash脚本即可。基本上,它会设置git仓库(本地和远程裸仓库),安装apache2和PHP5(以及一些php扩展),配置apache的虚拟主机、php.ini,如果需要的话还会安装框架和启动项目(对我们来说是symfony)。我们还有另一个脚本,用于启动一些EC2实例,运行先前提到的脚本,启动测试套件,并下载这些脚本的报告。Chef和Puppet效果很好,但除非你有许多同时运行的项目,否则有点过度设计。编辑:如果你想在提交/推送后运行脚本(如部署到暂存/预生产服务器、启动持续集成构建等),可以使用git调用post-hook的方式来实现,参见使用Git push部署项目

当您将代码推送到暂存区和生产环境时,是否有一种自动运行bash脚本的方法?像git这样的版本控制系统允许您这样做吗,还是您使用crontab?正如您所看到的,我对此有点陌生... - youderian
我编辑了一些内容以增加精度并回答您的评论 =)。不用担心,每个人都曾经是新手。 - Clement Herreman
太好了!看来我需要学习更多关于git的知识。谢谢! - youderian

5

我强烈建议您查看Ansible,因为它与配置管理、部署等方面都是完整的解决方案。但在我的经验中,相比于Chef或Puppet,学习起来要容易得多,因为您可以从基本的shell命令执行开始,然后逐步深入。

您无需学习新语言,所有的配置和规范都可以用YAML完成,这只是结构化文本。

总的来说,对于您的水平,Ansible将提供与Chef或Puppet类似的功能,并希望您会发现它更容易上手。


我曾经放弃使用Vagrant w/ Chef/Puppet,因为看起来有很多不必要的挫折和头痛,直到我发现了ansible。你最后的评论似乎暗示着与Chef/Puppet相比,ansible还有待改进。它没有提供其他工具所具备的功能吗? - ChrisC
1
有一件事情让我想起来,就是在写作时依赖项(以角色的形式)刚刚发布,我们发现它们对于组织更复杂的堆栈非常有用。相比其他工具,Ansible还比较年轻,但他们的发布周期很短,我有印象空缺正在迅速填补。 - somewhatoff

4
如果你想要从事专业的网站开发,我强烈推荐你重新考虑使用Chef。它对我们(我和我的同事)非常有用。我知道这可能看起来有些过度,但在我看来,优势远远超过了学习曲线。尝试维护不同的服务器环境(以及同事之间的本地开发环境)需要更多的工作量。此外,由于已经有了cookbooks/recipes,所以使用Chef可以轻松安装Apache、PHP和MySQL。
另外,请确保查看Vagrant。它与Chef和VirtualBox配合使用,使设置本地开发环境变得非常简单。
另外,如果你正在开发Zend Framework项目,你可能会对Zend Framework Boilerplate project感兴趣,这是一个全能的LAMP开发环境,使用了Vagrant。

1
对于“简单的LAMP开发”,你根本不需要任何东西。这并不是说简单的开发不能自动化,而是因为对于简单的开发来说,通常编写一些脚本(甚至是Python)就足够了(更容易、更快速)。
当你意识到你的自定义脚本很难维护或者不够用时,你就可以使用像Fabric(shell命令自动化)和/或Chef/Puppet(服务器配置管理)这样的工具。它们不容易学习,因为它们管理的系统互联不简单(显然不是你的情况)。
对于你的单个服务器,我建议使用README + Mercurial(如果需要GitHub则使用Git),再加上一些符号链接就足以管理配置、源代码和服务器设置。对于自动化和部署,只需编写一个上传网站到FTP/SSH、重启服务器、执行测试等操作的脚本-由你决定。这就是“简单开发的简单部署”。如果你不想为此编写PHP并且不懂shell,那么Fabric会为你节省一些时间。
一旦你的脚本准备好了,你已经知道了你的问题,你可以在后台学习Chef/Puppet,看看是否值得为你的环境增加复杂性。
如果你想尝试Chef,不要从Chef Solo开始,这对于初学者来说是一种有毒的零食。使用Hosted Chef + Client - 它对于你的设置是免费的。对于Puppet我无法发表评论 - 我选择了Chef,因为我妈妈说我需要知道如何烹饪。

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