【问题标题】:Alternatives to Chef/Fabric/Puppet for Simple LAMP Development?用于简单 LAMP 开发的 Chef/Fabric/Puppet 的替代品?
【发布时间】:2011-10-14 22:36:33
【问题描述】:

我终于致力于真正正确地学习软件设计过程,以提高我的技能并发展我的业务。这意味着采用版本控制 (git),设置开发-暂存-生产环境,并尽可能保持这些环境的配置相似。

我真的赶上了最后一步,即选择一种解决方案来自动化和同步我的服务器设置。我研究过 Chef、Puppet 和 Fabric,但出于我的目的,它们似乎都过于复杂。我是:

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

我将不胜感激有关解决方案的任何建议,这些解决方案比掌握复杂的 Chef 环境或学习 Python 以使用 Fabric 更容易实施。如有必要,我可以这样做,但鉴于我非常简单的需求,我希望有一个更基本/优雅的解决方案。

【问题讨论】:

标签: php lamp chef-infra puppet


【解决方案1】:

在我工作的公司,我们有或多或少相同的需求,我们只需设置几个 bash 脚本。

基本上,它设置 git repo(本地和远程裸机),安装 apache2 和 PHP5(以及一些 php 扩展),配置 apache 的 vhost,php.ini,如果需要,安装框架和引导项目(对我们来说它是 symfony )。

我们有另一个脚本,它启动一些 EC2 实例,运行前面提到的脚本,启动测试套件,并下载这些脚本的报告。

Chef & Puppet 运行良好,但有点矫枉过正,除非您同时运行多个项目。

编辑:

如果您想在提交/推送后运行脚本(例如部署到暂存/预生产服务器、启动持续集成构建等),可以使用 git call post-hook 来执行此操作,请参阅 @987654321 @

【讨论】:

  • 太好了,谢谢!当您将代码推送到登台和生产时,有没有办法自动运行 bash 脚本?像 git 这样的 VCS 是否允许您执行此操作,或者您是否使用 crontab?如您所知,我对此有点陌生......
  • 我进行了编辑以添加一些精确度并回答您的评论 =)。别担心,每个人都曾经对任何事物都陌生。
  • 完美!看来我需要了解更多关于 git 的信息。谢谢!
【解决方案2】:

为此,我强烈建议您查看Ansible。

它是一个完整的解决方案,这意味着它可以处理配置管理、部署等。但是,根据我的经验,它比 Chef 或 Puppet 更容易学习,因为您可以从执行基本的 shell 命令开始并从那里继续。

无需学习一门新语言;您要做的所有配置和规范都是在 YAML 中完成的,它只是结构化文本。

总体而言,Ansible 将为您提供 Chef 或 Puppet 的大部分功能,希望您会发现它更容易上手。

【讨论】:

  • 在我发现 ansible 之前,我已经放弃了使用 Vagrant w/Chef/Puppet 来处理看似不必要的挫折/头痛。您的最后一条评论似乎表明,与 Chef/Puppet 相比,ansible 有更多的不足之处。有什么它没有提供其他人提供的东西吗?
  • 我想到的一件事是,在撰写本文时,依赖项(以角色的形式)刚刚发布,我们发现它们对于组织更复杂的堆栈很有用。 Ansible 与其他人相比相对年轻,但他们的发布周期很短,我觉得他们的印象差距正在迅速填补。
【解决方案3】:

如果您对专业的 Web 开发很认真,我强烈建议您再看看 Chef。它对我们(我和我的同事)非常有用。我知道这可能看起来有点矫枉过正,但在我看来,优势远远超过了学习曲线。尝试维护不同的服务器环境(以及同事之间的本地开发环境)需要做更多的工作。此外,由于已经有可用的食谱/食谱,因此 Chef 使安装 Apache、PHP 和 MySQL 变得超级容易。

另外,请务必查看Vagrant。它与 Chef 和 VirtualBox 一起使用,使得设置本地开发环境变得非常简单。

另外,如果您正在开发 Zend Framework 项目,您可能会对 Zend Framework Boilerplate project 感兴趣,这是一个使用 Vagrant 的一体化 LAMP 开发环境。

【讨论】:

    【解决方案4】:

    对于Simple LAMP Development,您根本不需要任何东西。并不是说简单的开发不能自动化,而是因为对于简单的开发来说,通常自己(甚至在 Python 中)编写一些脚本就足够了(更容易和更快)。

    当您意识到您的自定义脚本难以维护或不够用时,您就可以使用 Fabric(shell 命令自动化)和/或 Chef/Puppet(服务器配置管理)等工具了。它们不容易学习,因为它们管理的系统互连并不简单(显然不是你的情况)。

    对于您的单个服务器,我会说 README + Mercurial(如果您需要 GitHub,则使用 Git)加上一些符号链接应该足以管理配置、源和服务器设置。对于自动化和部署,只需编写一个脚本,将您的站点上传到 FTP/SSH、重新启动服务器、执行测试,无论您决定什么。那是Simple Deployment for Simple Development。如果您不想为此编写 PHP 并且不了解 shell - 那么 Fabric 将为您节省一些时间。

    一旦你的脚本准备好了,你就已经知道你的问题,你可以在后台学习 Chef/Puppet,看看是否值得为你的环境复杂化。

    如果您选择尝试 Chef - 不要从 Chef Solo 开始 - 对于初学者来说,这是一种有毒的零食 - 使用 Hosted Chef + Client - 您可以免费设置。对 Puppet 无话可说 - 我选择 Chef 是因为我妈妈说我需要知道如何烹饪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2013-06-28
      • 2014-01-30
      • 2020-10-06
      • 1970-01-01
      • 2015-08-01
      • 2015-06-19
      相关资源
      最近更新 更多