工欲善其事必先利其器(二)—–vagrant

学会使用虚拟机之后,那么我们一定会面临一个比较棘手的问题:我们应该如何来管理这些虚拟机?因为我们常用的虚拟机都是配置好的,熟悉的环境,熟悉的工具。重复配置无疑是一种浪费时间的行为,为了避免这种浪费,那么我们需要一个强有力的工具vagrant.

什么是vagrant

Vagrant is a tool for building and managing virtual machine environments in a single workflow.

来自于官方的说法,vagrant就是专门用来建立和管理虚拟机环境的工具。

vagrant是用ruby语言编写的,在vagrant中所有的虚拟机环境都来自于一个叫做box的文件,通过 配置Vagrantfile,指定需要使用的box,然后配置cpu核心数量,内存大小,网络,共享文件,登录凭证等信息,可以快速的得到一个已经配置好的虚拟机环境。其实大多数配置都是可以省略的,最便捷的配置文件甚至只有一条配置。

什么场景下应该使用vagrant

抛开场景谈工具都是耍流氓,每一种工具都有它最适合存在的地方。虽然平时作为个人使用的时候,我们大多用来迁移和管理自己的虚拟机,但是我觉得它最实用的地方就是“团队协作”。每个人都会有自己的使用习惯,有些人习惯mac,有些人习惯linux,还有人则习惯用windows。哪怕同样用的是windows,也有win7和win10等各种区别,就算同样用的win7或者win10,那么大家用的IDE也可能都是不一样的。linux更不用说了,对应着各种不同的发行版。这个时候vagrant的强大就体现出来了,不管用户所使用的操作系统是何种类别,都能保证开发环境的一致性。这样可以避免开发过程中,因为环境不一致所带来问题。

获取vagrant

vagrant下载页,  可以获得最新版的vagrnat版本,有debian,windows,centos,mac.arch linux等各种版本可以选择,如果是ubuntu操作系统的话,除了可以使用debian的deb安装包来安装,还可以使用apt命令进行安装

sudo apt install vagrant

不过通过apt安装的vagrant版本不是最新版本,请酌情使用

vagrant操作

vagrant操作系统的基本操作非常简单,只有简单的几条命令

vagrant init  初始化虚拟机

vagrant up 启动虚拟机

vagrant provision 应用虚拟机配置

vagrant halt  关闭虚拟机

vagrant destroy 摧毁虚拟机

vagrant ssh  进入虚拟机终端

获得vagrant官方基本系统环境hashicorp/precise64的方法非常简单,只需要运行命令


vagrant init hashicorp/precise64
vagrant up

就可以获得一个基础的虚拟机环境了,不过需要注意的是,因为vagrant的box有时候体积比较大,在执行下载的过程中可能会非常缓慢甚至是没有办法获得资源的情况,如果在运行命令的过程中出现超时或者卡主的情况,可以在后面找到解决的办法

vagrant的box

vagrant官方提供了一系列的box下载,在下载页中,支持最多的虚拟机就是virtualbox,

vagrant中添加box的命令如下

vagrant box add  box名称 box路径     ps:可以是网络路径或者是本地路径

可以添加本地路径的box,那么我们可以先从下载页把box下载到本地,然后本地环境添加hashicorp/precise64,接着执行

vagrant init hashicorp/precise64
vagrant up

就能快速得到一个可用的虚拟机环境了

如果要查看当前可用的box,可以使用命令
vagrant box list

制作属于自己的box

box除了可以从网上获取之外,还自己制作,除了可以从无到有制作一个box,还可以在已有的box之上,添加一些定制功能,把它变成只属于自己的box

在vagrant中有一条命令,可以打包属于自己的虚拟机

vagrant package --base 虚拟机标识 --output box名称

ps:虚拟机标识不是在虚拟机页面显示的名称,这个标识需要通过命令vboxmanage list vms来得到,其中vboxmanage命令是virtualbox自带的工具,如果是其他虚拟机的话,则需要其他工具来获取

在使用vagrant中可能会遇到的问题

  • 在执行vagrant up过程中,出现超时或者卡住的现象,这个是因为网络的问题,因为在国内的网络速度不是很给力,而且还有GFW的存在可能没有办法获取到资源,不过这个可以通过添加本地box的方式或者通过科学上网工具来解决
  • vagrant up过程中,ssh配置失败,这个现象发生的原因有很多种,调试方法是打开gui选项,看看是否出现故障,其次是可以通过ssh vagrant@ip  password:vagrant 登录到虚拟机 手动配置ssh权限即可
  • 更多问题请仔细阅读vagrant官方文档,或者通过stackoverflow寻找解决方案

 

 

发表评论