vagrant 开发环境_Vagrant:配置开发环境的强大工具

vagrant 开发环境

塞斯·瓦尔戈(Seth Vargo)是一名开放源代码程序员,毕业于卡内基梅隆大学。 他专长于Ruby开发,并曾在ChefCustomInkHashiCorp工作 。 在今年的All Things Open会议上,Seth将会谈到Vagrant 。 但是,什么是流浪汉?为什么要关心呢?

在这次采访中了解更多。

什么是流浪汉?

Vagrant是用于创建和配置轻量级,可重现和便携式开发环境的工具。 Vagrant提供了一个统一的界面,用于使用命令行控制一个或多个虚拟机的生命周期。 由于Vagrant与平台无关,因此您可以与任何人共享同一个Vagrantfile。 是否使用Windows,Linux或Mac都没有关系。

Vagrant支持多种虚拟化技术,包括VirtualBoxVMware 。 Vagrant的可插入性使社区能够获得对其他虚拟化技术(包括ParallelsAmazon Web Serviceslibvrt)的支持

Vagrant如何帮助Ruby开发? 它对其他类型的开发有用吗?

因为Vagrant是用Ruby编写的,所以用户经常认为Vagrant仅对Ruby开发有用。 不是这种情况。 Vagrant对几乎所有开发环境都有用。

根据敏捷成本曲线,修复生产中的错误的估计成本是修复开发中相同的错误的150倍。 尽管软件(算法)错误易于识别和编写快速测试,但它们并不是在生产环境中发生的唯一错误。 第二个最常见的错误在于生产系统的配置,特别是生产系统和开发环境之间的配置差异。 即使进行了完美而精确的工程设计,程序包或操作系统版本的差异也会在部署时导致灾难性的后果。 因此,通常会在提高开发环境和生产环境之间的均等性之间进行推动。

Vagrant是一个完美的工具,因为它使开发人员可以在本地计算机上使用他们熟悉的相同工具和编辑器,但在虚拟化层使用与生产相同的操作系统和软件包。 与Packer之类的工具结合使用,可以在不牺牲本地开发技术的情况下实现接近完美的生产平价。 换句话说,开发人员的工作不会中断。

即使不考虑生产平价,Vagrant仍然是一个非常有用的工具。 项目通常具有许多依赖关系,需要先进行安装和配置,然后才能进行开发。 Docker在这个领域越来越受欢迎。 用户只需在项目存储库中使用预先配置的Dockerfile运行Docker。 Vagrant的工作原理非常相似,但由于它位于虚拟化层,因此提供了额外的隔离层。 如果您需要虚拟硬件(例如USB端口,音频或高级网络),对Linux以外的操作系统的支持或虚拟化通过容器化技术提供的附加隔离层,那么Vagrant是一个绝佳的选择。

实际上,它们不是互斥的。 Vagrant支持将Docker作为提供者和供应商进行构建和运行。 这意味着Vagrant可以创建Docker映像,然后自动运行它们。 如果您所在的系统无法本机运行Docker,则Vagrant将自动配置能够运行Docker的虚拟机,并将所有正确的连接设置回您的主机。 这样,您可以获得虚拟化的隔离,但可以实现容器化的灵活性和速度。

最后,Vagrant与您或您的组织可能已经在使用的工具进行了深度集成。 例如,Vagrant对几乎所有主要的配置管理提供程序都提供一流的支持,包括AnsibleCFEngineChefPuppetSaltStack 。 例如,如果您已经在使用Chef来配置基础结构,只需在Vagrantfile中添加几行,Vagrant将使用在本地开发环境中配置生产基础结构的相同手册。

您是在Vagrant上被“出售”的那一刻? 作为用户,您是否立即看到了它的价值,或者它在您身上增长了?

刚开始学习软件开发时,我经常搞砸。 我认为弄乱是人类的本性。 这是一种很棒的学习技巧。 不幸的是,有时您会破坏本地系统,无法修复。 当我进入配置管理空间时,灾难的可能性大大增加了。 一方面,我对学习和探索新技术感到非常兴奋。 另一方面,由于简单的错字或误解,我非常担心在当天的第50次需要重新成像笔记本电脑。 这种恐惧最终使我受益匪浅,我停止了创新和反复。 即使我一个人工作,我的反馈时间也增加了,我的周期减少了,我很快变得一无用处。 对弄乱自己的机器的恐惧超过了我学习的意愿。

那是我遇见流浪汉的时候。

Vagrant为我提供了快速迭代整个系统的能力,而又不影响我自己的系统。 Vagrant和VirtualBox当时还是一个贫穷的大学生,完全免费且开源。 这非常符合我的预算($ 0)!

当我进一步探索Vagrant时,我也开始将其用于我的软件项目。 当我开始在团队中工作时,Vagrantfile被证明是无价的。 设计师可以打开一个网站,而无需安装任何东西。 质量保证(QA)可以测试网站的Beta版本,而无需知道如何设置。 新开发人员可以在数小时而不是数天的时间内入职。 意识到这一切都是通过软件实现的,这真是一个了不起的时刻。

您首选的编程语言是什么?

这是一个棘手的问题。 我的第一个答案是“所有人”。 我是一名多语言软件工程师,但目前我与Go和Ruby的合作最为密切。 我从不让自己的经验或当前的技术决定未来的技术使用。 给定一个新项目,我喜欢尝试新的编程语言。

您管理无业游民的开发机器的工作流程是什么?

我有一个Vagrantfile,可以为虚拟机创建配置。 我通常使用shell脚本,但是对于更复杂的场景,我将使用带有内置Chef设置的Chef食谱。 所有代码都保存在本地计算机上,我使用Sublime TextiTerm和五年的Shell快捷方式和自定义项。 我的本地计算机与Vagrant创建的虚拟机共享一个文件夹。 该代码在VM中执行,但是源文件在我的本地计算机上控制。

您使用什么版本控制系统?

我主要使用Git ,尽管过去我曾经使用SVNMercurial

新的Vagrant用户犯的最大错误是什么?

我认为更多的是流浪者而不是错误的误解,我认为许多Vagrant用户都认为它对于他们的用例而言过于繁重,因此他们会遵循自述文件中的Shell脚本或指令。 这种方法的问题在于,它很快就过时了,它是特定于操作系统的,并且倾向于使用“它在我的机器上工作”的表述。

新用户应何时开始使用Vagrant? 立即使用,还是应该使用的高级工具?

Vagrant专为初学者设计,但功能强大,即使是最有经验的开发人员也可以使用。 Vagrant为新用户定义了一条愉快的道路,该道路将所有旋钮调整为最可能的配置。 这可能并不总是最快,最安全或性能最佳的配置,但最可能不需要用户自定义任何内容的配置就可以使用。 Vagrant的工作流程应始终为:

$ vagrant up

高级用户可以调整这些旋钮,以使Vagrant更加安全,性能更高且更自定义。 Vagrant公开了几乎所有配置选项作为Vagrantfile DSL的一部分,并且都记录在案

这就是说Vagrant与用户一起发展。 随着开发需求的变化,Vagrant具有适应能力,因此尽早采用Vagrant并使其随项目一起成长没有任何危害。

您是如何参与开源的?

当我在卡内基梅隆大学(Carnegie Mellon University)攻读本科时,我有两位教授是开源的拥护者:拉里·海曼(Larry Heimann)教授和杰里亚·奎森伯里(Jeria Quesenberry)教授。 我参与了许多开源项目,并回馈社区。 我的第一个实习经历是在T恤公司CustomInk实习,他同时也是消费者和生产者都支持开源的人。 在那儿任职期间,我有能力从事许多开源项目。 从那时起,我只为生产开源软件的组织工作。

万物开放
演讲者访谈

本文是“万物公开演讲者访谈”系列的一部分。 All Things Open是一个会议,探讨企业中的开源,开放技术和开放网络

翻译自: https://opensource.com/business/15/9/ato-interview-seth-vargo

vagrant 开发环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值