【问题标题】:Vagrant in production生产中的流浪者
【发布时间】:2012-11-03 15:17:51
【问题描述】:

我一直在阅读有关 Vagrant 的文章,我发现它对我的开发非常有用。我目前正在管理一系列服务(邮件、Web、LDAP、文件共享等),其中一个经常出现故障并需要快速备份。是否可以(并推荐)将 Vagrant 用于这些目的?

到目前为止,我已经像安装了真机一样安装了虚拟机。

我还想知道 Vagrant 的替代方案,它允许我设置一个简单的配置文件并放置一个虚拟机,例如,使用 Zimbra,并快速拥有一个备用邮件服务器,启用 RabbitMQ 等。

【问题讨论】:

  • 2014 年 2 月 20 日:我仍然认为您的问题的详细答案仍有待提供!如果不在生产中,为什么?
  • 2014 年 9 月 23 日:我还在寻找为什么 Vagrant 不适合生产的答案。对我来说,这取决于虚拟服务器的性能。当然,我们将什么样的应用程序投入生产。这不能只是一个笼统的陈述。
  • @我会因为生产而放弃 Vagrant 很长时间。现在我将 Docker 用于诸如数据库之类的更复杂的事情,例如 Zimbra 我正在使用 XEN
  • @rkmax 你能告诉我们你放弃的原因吗?是性能吗?不稳定?什么?
  • 主要是为了稳定性,vagrant(virtualbox)默认没有办法控制虚拟机中的io,当某些机器具有高IO可以阻塞任何东西(包括主机)时。目前的(xen,xcp-xapi)方案让我可以更好的控制机器的资源,稳定性无懈可击

标签: virtualhost vagrant infrastructure


【解决方案1】:

应该更像一个临时环境来使用 Vagrant 来测试您的基础架构更改。它应该是您自动化基础架构更改的测试平台。

我们在我公司的使用方式是这样的:

  1. 为我们在 Vagrant 中的托管服务器创建 VM。
  2. 为每个服务器创建 puppet 定义。
  3. 为每个服务器创建黄瓜测试。
  4. 通过 puppet 更改基础架构并添加 Cucumber 测试。
  5. 启动我们的服务器以测试故障。
  6. 修复错误、发布和/或返回第 4 步。

基本上,当我们对更改感到满意时,我们会将 puppet 更改投入生产以实现它。

我不建议使用 vagrant 来管理虚拟机以进行实际生产。我会使用 razor、virsh、OpenStack 或其他许多 vm 管理系统之一。

【讨论】:

  • 基本上你不建议在生产环境中使用 virtualbox
  • Vagrant“应该”用于分期/开发只是一种意见。如果您可以为此提供证据,那么您的答案将更有分量。我对你的工作流程表示同情,从某种意义上说它看起来很实用,但也有人可能会争辩说你可以拥有两套 Vagrant,一套用于登台,另一套用于生产。对某些人来说,这似乎很实用,同样,如前所述,可能存在强烈建议不要在生产中使用 Vagrant 的证据。
  • 说真的,您可以在 Vagrant 网站上阅读的第一句话是“开发环境变得简单”。
  • @Papipo 基本上,您是在生产环境之上添加另一层抽象。
【解决方案2】:

此页面表明 Vagrant push 命令用于部署到生产环境:

https://www.hashicorp.com/blog/vagrant-push-one-command-to-deploy-any-application/

“此外,多个 config.push.define 声明可以在 Vagrantfile 中定义多个推送,例如,一个用于暂存,一个用于生产。”

【讨论】:

    【解决方案3】:
    • 根据我的经验,Vagrant 主要用于开发环境。
    • 例如,与 Terraform 相比,Vagrant 配置和供应选项受到限制。
    • 如果您在基于云的环境中工作,则可以使用 Terraform 进行基础架构配置。
    • 如果您的环境是本地环境或者您的虚拟机将托管在数据中心上,您可以使用 Ansible、chef 或 puppet 进行配置管理和自动化。

    【讨论】:

      【解决方案4】:

      Hashicorp 刚刚发布了Otto,这意味着它是 Vagrant 的继任者。它旨在支持部署环境。

      来自他们的Github page

      Otto的主要特点是:

      • 自动开发环境:Otto 检测您的应用程序 键入并构建专门为此定制的开发环境 应用程序,具有零或最小配置。如果您的应用取决于 在其他服务(例如数据库)上,它会自动配置和 在您的开发环境中为您启动这些服务。

      • 专为微服务构建:Otto 了解依赖关系和版本控制 并且可以自动部署和配置应用程序和所有 它对任何环境的依赖关系。一个应用程序只需要 告诉 Otto 它的直接依赖关系;依赖项的依赖项是 自动检测和配置。

      • 部署:Otto 知道如何部署应用程序以及开发 他们。无论您的应用程序是现代微服务还是传统 整体,或介于两者之间的东西,Otto 可以将您的应用程序部署到任何 环境。

      • Docker:Otto可以使用Docker下载和启动依赖 用于开发以简化微服务。应用程序可以容器化 自动使部署更容易,而无需更改开发人员 工作流程。

      • 生产硬化工具:Otto 使用生产硬化工具来 构建开发环境 (Vagrant), 启动服务器(Terraform),配置 服务 (Consul) 等等。奥托建立在 为世界上最大的网站提供支持的工具。 Otto 会自动安装和管理所有这些工具,因此您无需 必须。

      【讨论】:

      • Otto 已被弃用 Summer `16
      【解决方案5】:

      我有同样的问题,并且一直在研究 Vagrant push 的使用,根据他们的documentation,从 1.7 版开始,Vagrant 能够在与 Vagrantfile 相同的目录中部署或“推送”应用程序代码到远程,例如 FTP 服务器。

      我正在考虑为开发人员在 VM 中启动 vagrant,同时还允许您选择将代码部署到生产环境的实时服务器。

      【讨论】:

        【解决方案6】:

        正如@andrerpena 所说,Otto 是 Vagrant 的继任者。

        来自www.ottoproject.io

        Otto 可以部署您的应用程序。多年来,Vagrant 的用户一直想要一种将他们的 Vagrant 环境部署到生产环境的方法。 很遗憾,Vagrantfile 没有包含足够的信息来构建具有行业最佳实践的适当生产环境。制作一个 Appfile 来对这些知识进行编码,只需一个命令即可进行部署。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 2014-07-04
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 2015-08-24
        • 2016-12-06
        相关资源
        最近更新 更多