1. 什么是Vagrant
- Vagrant 是一个虚拟机管理软件,可以自动化虚拟机的安装和配置流程。一般我们使用虚拟机时是这样的,安装一个虚拟机软件VMware或VirtualBox,寻找我们需要的iso镜像文件,然后一步步的在VMware上安装这个镜像文件,安装好之后,再一步步配置这个这个虚拟机的开发环境或运行环境。如果我们需要安装两个或多相同的虚拟机环境怎么办?还是得这样一步步的安装?不,我们有Vagrant。
- Vagrant让你通过编写一个Vagrantfile配置文件来控制虚拟机的启动、销毁、与宿主机间的文件共享、虚拟机网络环境的配置,还可以编写一些虚拟机启动后的执行脚本,自动安装一些必备的开发工具或配置。
- 并且Vagrant还允许移植的你的虚拟机,使你只需要一次搭建就可以拥有多个相同环境的虚拟机副本。
- Vagrant的优点有:跨平台、可移动、自动化部署无需人工参与等。
2. Vagrant的相关概念
- Vagrant 是一个虚拟机管理软件,它是用来管理虚拟机的,它自己并不是一个虚拟机软件。这意味着你必须独立安装一个虚拟机软件VMware或VirtualBox做支持。VMware应该都很熟不多说了。VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,目前在oracle旗下。早期,Vagrant只支持VirtualBox,后来才加入了VMWare的支持。
- 目前我的开发环境中选择VirtualBox 作为虚拟机软件。
.box文件
- 这是Vagrant使用的镜像,它与传统的镜像不太一样,它不是待安装的系统镜像,而是从虚拟机中导出的、对已经安装配置好的操作系统的快照。.box文件是个压缩文件包,里面除了基础数据的镜像外,还包括一些元数据文件,用来指导Vagrant将系统镜像正确的加载到对应的虚拟机当中中。所以这边要注意box文件是依赖虚拟机软件的,比如VMware下的box文件是无法在VirtualBox上使用的。怎么制作box文件可以参考官方文档 Creating a Base Box 。Vagrant Cloud 也提供了很多大神已经制作好的box文件供大家查询使用下载。切记要看一下box依赖的虚拟机软件是否与你一样。
vagrantfile
- vagrantfile是一个配置文件。每一个vagrantfile对应一个box镜像,在初始化虚拟机的时候会制自动生成vagrantfile文件。我们可以在vagrantfile文件里添加启动的脚本,网络配置,启动后的脚本等等。在启动时vagrant就会读取相应的vagrantfile中的指令来搭建虚拟机环境。Vagrant是使用Ruby开发的,所以它的vagrantfile配置文件语法也是Ruby的,但是Vagrant定义了自己的语法规则,我们也没有必要去学习Ruby。关于更多vagrantfile的配置文件信息后面会单独介绍,这边就不复述了。
- 另外默认vagrantfile所在的目录,就是宿主机同虚拟机共享的目录。