Vagrant在生产环境中的应用

44

我一直在研究Vagrant,发现它对我的开发非常有用。目前我正在管理一系列服务(邮件、Web、LDAP、文件共享等),经常遇到这些服务之一掉落需要快速备份的情况。是否可以(并建议)使用Vagrant来实现这些目的?

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

我还想了解Vagrant的替代方案,它能让我设置一个简单的配置文件,例如放置一个带有Zimbra的虚拟机,并快速启用备用邮件服务器、启用RabbitMQ等功能。


7
2014年2月20日:我仍然认为你的问题需要提供详细的答案!如果不是因为生产,那是为什么? - AsTeR
2
2014年9月23日:我仍在寻找关于为什么Vagrant不适合生产环境的答案。对我来说,这归结于虚拟服务器的性能。当然,我们要将什么样的应用程序投入生产也很重要。它不能只是一个普遍的陈述。 - Will
@Will 我早就放弃了在生产环境中使用 Vagrant。现在我使用 Docker 来处理像数据库这样的事情,对于更复杂的东西,比如 Zimbra,我使用 XEN。 - rkmax
@rkmax,你能告诉我们为什么放弃了吗?是性能问题吗?还是不稳定?其他原因? - Will
主要为了稳定性,vagrant(virtualbox)默认情况下没有办法在虚拟机中控制io,当某个机器有高IO时,可能会阻塞任何东西(包括主机)。当前的解决方案(xen,xcp-xapi)允许我更好地控制机器的资源,稳定性是无可挑剔的。 - rkmax
6个回答

20

Vagrant应该更像一个暂存环境来测试您的基础设施更改。它应该是自动化基础设施更改的测试床。

我们在我的公司使用的方法如下:

  1. 在Vagrant中为受管理的服务器创建虚拟机。
  2. 为每台服务器创建puppet定义。
  3. 为每个服务器创建cucumber测试。
  4. 通过puppet进行基础架构更改并添加cucumber测试。
  5. 启动我们的服务器以测试故障。
  6. 修复漏洞,发布和/或回到步骤4。

基本上,在我们对更改满意时,我们将把我们的puppet更改推入生产环境,以使其发生。

我不建议使用vagrant来管理实际生产的虚拟机。我会使用其他东西,比如razor、virsh、OpenStack或其他许多虚拟机管理系统。


5
基本上,您建议不要在生产环境中使用VirtualBox。 - rkmax
18
认为Vagrant只适用于staging/development只是一种观点。如果你能提供证据支持这一观点,你的答案会更有说服力。我理解你的工作流程,因为它看起来很实用,但也可以提出另一种观点,你可以有两组Vagrant,一组用于staging,另一组用于production。对于某些人来说,这似乎很实用,但在此之前已经提到过,可能存在证据强烈建议不要在生产环境中使用Vagrant。 - Mosselman
3
Vagrant网站上你能看到的第一条信息是“简化开发环境”。 - Papipo
@Papipo 基本上,您正在生产环境之上添加另一层抽象层。 - Ricky Boyce

3

2
  • 从我的经验来看,Vagrant主要用于开发环境。
  • 与Terraform相比,Vagrant的配置和部署选项有限。
  • 如果您正在使用基于云的环境,则可以使用Terraform进行基础设施部署。
  • 如果您的环境是本地的或者您的虚拟机将托管在数据中心,您可以使用Ansible、Chef或Puppet进行配置管理和自动化。
注:Original Answer翻译成"最初的回答"

0

我曾有同样的问题,并一直在调查使用Vagrant push,根据他们的文档,自版本1.7以来,Vagrant能够将应用程序代码部署或“推送”到与你的Vagrantfile相同目录上的远程服务器(例如FTP服务器)。

我正在考虑让Vagrant在VM中为开发人员自动启动,同时也让你有选择地将你的代码部署到生产环境中的实际服务器。


-1
Hashicorp刚刚发布了Otto,它被设计成Vagrant的继任者。它旨在支持部署环境。
从他们的Github页面中可以看到:

Otto的主要特点包括:

  • 自动化开发环境:Otto 可以检测您的应用程序类型,并为该应用程序构建一个专门定制的开发环境,无需或仅需最少的配置。如果您的应用程序依赖于其他服务(例如数据库),它将自动为您在开发环境中配置和启动这些服务。

  • 面向微服务构建:Otto 理解依赖关系和版本控制,并可以自动部署和配置应用程序及其所有依赖项到任何环境中。应用程序只需要告诉 Otto 它的直接依赖项;依赖项的依赖关系会自动检测和配置。

  • 部署:Otto 不仅知道如何开发应用程序,还知道如何部署它们。无论您的应用程序是现代微服务、传统的单体应用程序还是介于两者之间,Otto 都可以将您的应用程序部署到任何环境中。

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

  • 生产级工具:Otto 使用生产级工具构建开发环境(Vagrant)、启动服务器(Terraform)、配置服务(Consul)等。Otto 建立在支持全球最大网站的工具之上。Otto 自动安装和管理所有这些工具,因此您无需担心。


23
Otto 已于 2016 年夏季被弃用。 - Frederic Henri

-5

正如@andrerpena所提到的,Otto是Vagrant的继承者。

来自www.ottoproject.io

Otto可以部署您的应用程序。多年来,使用Vagrant的用户一直希望有一种方法将其Vagrant环境部署到生产中。 不幸的是,Vagrantfile并未包含足够的信息来构建符合行业最佳实践的适当生产环境。 Appfile用于编码此知识,并且部署只需要一个命令即可完成。


10
Otto已被Hashicorp下架。https://www.hashicorp.com/blog/decommissioning-otto.html - Alec Walczak

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