Joh*_*unt 254 virtualbox vagrant
我多年来一直在使用 VirtualBox 来创建开发环境。
我的很多同事都在谈论 Vagrant,很多人似乎对它非常兴奋,但我似乎无法掌握它的好处..在我看来,这是一系列新命令需要学习才能做到这一点我用 Virtualbox 做的事情。
使用VirtualBox,我完美地安装和配置了一个环境,然后我可以将其打包为OVA或其他任何内容并与其他办公用户共享。如果出现问题,您可以在 VirtualBox 中拍摄快照。
Puppet 和 Chef 并不是 Vagrant 的一部分,他们是自己的东西,对吧?
所以是的,Vagrant 比 VirtualBox 本身有什么好处?
Ada*_*ns 169
这是一个很大的问题,所以我将把它分成三个部分。
Vagrant 用于通过以下方式设置一台或多台虚拟机:
请注意,它不会在加载 VM 和设置 VirtualBox 设置之后安装软件或设置机器。将其视为 VirtualBox 的脚本引擎。
以下是我所看到的使用 Vagrant 而不是 VirtualBox 的一些原因。
我读过的大多数 Vagrant 高级用户内容都是关于同时设置多个 VM。Vagrant 为您提供了一个单独的配置文件来设置这些,使您能够使用一个命令启动所有这些。
假设您已将三个 VM 配置为使用 192.168.1.* 子网上的静态 IP 彼此联网。您发现自己所在的位置已经在使用该子网来分发 IP 地址,并且您的 VM 现在发生冲突。使用 Vagrant,您可以简单地编辑 Vagrantfile 并重新加载 VM,而使用 VirtualBox,如果不启动每个 VM 并在内部更改它们,则必须打开每个 VM 的设置。
通过将设置放在文本文件中,可以将配置置于源代码控制之下。上周做了一些改动,不小心弄坏了图片?只需还原更改并重新加载 VM。您可以使用 VirtualBox 快照来完成此操作,但它会占用比 Vagrantfile 多得多的空间。
在诸如http://vagrantbox.es 之类的站点上有大量可用的框。这使您可以尝试各种操作系统或发行版,应用相同的配置来设置类似的环境。这有助于测试或添加对新平台的支持,并且仅使用 VirtualBox 会很耗时。
使用配置软件以及使用映像快照有很多争论。如需更多讨论,我将向您推荐 Stephen Nelson-Smith 的优秀文章How to Build 100 Web Servers in a Day。
ico*_*ast 30
除了 Adam 给出的出色答案之外,Vagrant 还将所有内容联系在一起。尽管 Chef 和 Puppet(以及 Salt 和 shell 脚本以及您想使用的任何其他配置程序)是独立的东西,但 Vagrant 将它们联系在一起并使其仅使用vagrant up.
那个命令会
你不必考虑所有这些。假设您要切换到一个由同事发起的不同项目。您只需从您的存储库中检出代码,然后运行vagrant up,无需担心下载 ISO 或安装任何东西,或者想知道您需要为该特定客户端使用哪个发行版的哪个版本,或者您是否拥有已经拥有一切的 VM 副本你需要。
您甚至无需担心他们是使用 Chef 或 Puppet 还是仅使用 shell 脚本进行设置。(好吧,所以你可能需要做一个bundle install或以其他方式确保你已经安装了所有东西,但仍然没什么大不了的。)
通过将所有内容联系在一起,并为其提供统一的界面,它可以使除最简单的用例之外的所有用例变得更加容易。一开始你可能会觉得你只是在重新学习一种新的方法来做你已经在做的事情,但是一旦你深入了解 Vagrant 的使用,你会发现你可以用更少的努力做更多的事情。这将是非常值得的初始时间投资。
小智 10
这里还有两个开发人员用例,它们简化了 vagrant(在“普通”VirtualBox 上)。我没有看到在之前的答案中专门提到了这些用例。
Vagrant 有助于使开发和生产平台尽可能彼此靠近。在理想情况下,您将使用用于配置 Vagrant VM 的相同脚本来配置生产环境,从而最大限度地减少部署时的意外情况。
集成测试和持续集成:Vagrant 很容易从测试中控制,因此在进行测试运行时,可以通过 Jenkins 等工具轻松控制整个多机堆栈。
是的,“普通”VirtualBox 也可以在这里使用——但是 vagrant 使用的约定使得设置这些场景变得更加简单。
小智 9
将 Chef 或 Puppet 与 VM 配置集成的能力是关键。大多数 Vagrant 用户会告诉你,他们运行 'vagrant provision' 并且偶尔运行 'vagrant reload' 比 'vagrant up' 或 'vagrant destroy' 更频繁。这些任务表明真正的工作不是启动/关闭虚拟机,而是事后“管理”它们。
提出一个更好的问题(无论如何由熟练的 Chef 用户提出)可能是为什么使用 Vagrant 而不是 Knife 与适当的插件(稍后将使用 virtualbox 插件)?例如,将存储在数据包中的参数值传递给刀插件比处理一个巨大的 Vagrantfile 更智能、更灵活和更易于管理。我通常在厨师数据包中定义我的“动态”资源,例如 CPU 数量、内存量、要部署的操作系统、主机名、IP、路由等,这样我就不需要不断更改我的食谱;- )。通过 Chef Web 界面编辑数据包是一项非常简单的数据输入任务,我可以交给最初级的操作员。使用 Vagrantfile,你永远修改代码,不管你信不信 - 代码中断 - 这几乎可以保证你不会将简单的更改交给操作人员,
除了knife还没有virtualbox插件(尽管我设想在不久的将来会有一个插件),大多数“企业”虚拟化产品已经有了插件,包括vmware、xenserver和几乎所有主要的“云”供应商,以及。这意味着如果/当您准备好超越 virtualbox 时,knife 远优于 Vagrant 提供的产品。目前,Chef 社区似乎很乐意让 virtualbox 用户与 Vagrant 一起跛行,因为没有为 Knife 插件集成 virtualbox api。有一个 Knife-vagrant 插件允许使用数据包来传递参数。但是,它仍然需要 vagrant 软件并且它是一个整体的 Vagrantfile 才能运行。
所以,我会毫不犹豫地说 Vagrant 绝对不比带刀的厨师“更好”;但如果您坚持使用 virtualbox 并且可能比使用数据包管理厨师“更容易”,则有必要(目前),前提是您有一个相当简单的环境来管理。
| 归档时间: |
|
| 查看次数: |
125910 次 |
| 最近记录: |