1.1.1 走进Vagrant世界

Vagrant看起来很简单,但实际上非常复杂。它允许您快速、轻松地创建和自定义虚拟环境(Vagrant box)。Vagrant可以轻松地与多个provider软件集成,例如VirtualBox、VMware和Docker。这些provider实际用于创建虚拟环境(虚拟机),而Vagrant能为这些虚拟机提供可自定义的接口。

Vagrant拥有大量命令,您可以通过命令行终端来管理虚拟环境。使用这些命令可以从Vagrant Cloud快速下载和配置一个虚拟环境。Vagrant Cloud中托管了许多流行的环境,例如Ubuntu操作系统、PHP Laravel运行环境。

Vagrant是一款在许多程序员的工具箱中都能找到的重要软件。它允许每个人拥有相同环境的副本,通常被用来解决“它在我的机器上工作”这种常见的问题。

Vagrant由米切尔·桥本(Mitchell Hashimoto)创建,并于2010年3月发布。Vagrant相关业务现在是米切尔·桥本于2012年与阿蒙·达加(Armon Dadgar)共同创立的HashiCorp公司的一部分。Vagrant是一个用Ruby语言编写的开源软件,目前使用MIT许可证,可以在macOS、Windows、FreeBSD或Linux上运行。

Vagrant本质上是虚拟化相关栈中的一层。作为一个可以使用易编程接口控制虚拟环境的层,Vagrant依赖于VirtualBox这样的provider程序来为这些环境提供支持,但它也可以配置provider使它们协调工作,例如Vagrant控制虚拟环境的内存(RAM)。

Vagrant提供了很多特性来帮助您构建和配置虚拟环境。Vagrant的特性可以归纳为以下一些关键字:Vagrantfile、box、网络、配置管理和插件。可以使用命令行工具和Vagrantfile两种主要的方式来控制Vagrant。命令行工具一般用来执行管理员的一些任务,例如下载或导入一个新的Vagrant box,或者删除一个已有的Vagrant box。

1.Vagrantfile

Vagrantfile是一种用Ruby语言编写的配置文件。它很容易理解,可以在修改它后执行vagrant up命令来快速测试结果是否符合预期。可以轻松地共享Vagrantfile并将其加入版本控制。它是轻量级的,包含其他用户复制其虚拟环境或者应用程序所需要的一切。

2.box

box是类似Vagrantfile的一类包,常用于复制虚拟环境并能被共享。执行vagrant box add命令可以轻松下载它们。Vagrant Cloud提供了一个非常易于搜索的box列表,其中包含大量box的信息,例如创建者、版本、下载次数以及简要说明等。

3.网络

Vagrant在创建虚拟环境时支持3种主要的网络:端口转发、私有网络和公有网络。最简单的网络是端口转发,它允许您通过客户机操作系统访问特定的Vagrant机器端口。公有和私有网络更复杂,能提供更多的配置,相关内容我们将在以后的章节中介绍。

4.配置管理

Vagrant中的配置管理为您提供了更多配置Vagrant机器的方法。您可以在创建机器的同时安装软件和配置。您可以使用Shell脚本、Docker、Chef、Ansible和Puppet等其他配置管理软件来配置Vagrant机器。

5.插件

Vagrant插件提供了另一种定制和扩展Vagrant功能的可能。它们允许您与Vagrant的底层进行交互,赋予Vagrant更多新的命令行工具。