Vagrant是一款用来构建虚拟开发环境的外挂工具,可以简化虚拟机配置和管理。它底层支持VirtualBox、VMware、AWS等,非常适合使用php/python/ruby/java语言开发web应用,“代码在我机子上运行没有问题”这种说辞将成为历史。

1. 安装VirtualBox

去官网https://www.virtualbox.org/wiki/Downloads下载最新版的Virtualbox,然后双击安装,一直点击确认完成。

2. 安装Vagrant

去官网 https://www.vagrantup.com/downloads.html下载最新版的Vagrant,然后双击安装,一直点击确认完成。在windows下安装vagrant,为了写入相应配置到环境变量,系统可能会要求重新启动。在命令行中,输入vagrant,查看程序是不是已经运行了。如果不行,请检查一下$PATH里面是否包含vagrant所在的路径

3. Vagrant命令详解

命令 作用
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过ssh登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了Vagrantfile后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态

4. 安装配置虚拟机

接下来,我们需要选择使用何种操作系统,这里以centos7.2为例。以前基于虚拟机的工作流,我们需要下载ISO镜像,安装系统,设置系统等操作。而Vagrant开源社区提供了许多已经打包好的操作系统,我们称之为box。你可以从box下载地址(下文列出),找到你想要的box,当然你也可以自己制作一个。

官方仓库:https://atlas.hashicorp.com/boxes/search

官方镜像:https://vagrantcloud.com/boxes/search

第三方仓库:http://www.vagrantbox.es/

Vagrant提供在线安装服务,非常方便,但是在国内加载会很慢,建议先把box下载到本地,再导入安装,box链接:https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

导入安装方法:

vagrant box add {title} {url}
vagrant init {title}
vagrant up

vagrant box add是添加box的命令,{title}是以后创建虚拟机的别名,{url}是下载到本地box的路径,也可以是服务器端的URL

假设你已经将centos7的box下载完成

4.1 安装box

# vagrant box add centos7 ~/Download/centos-7.0-x86_64.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7' (v0) for provider: 
    box: Unpacking necessary files from: file:///Users/teishi/Downloads/centos-7.0-x86_64.box
==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!

4.2 指定工作目录 & 初始化 & 启动虚拟机

# mkdir myvagrant
# cd myvagrant
# vagrant init centos7
# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: myvagrant_default_1542518492008_40687
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222...
...
==> default: Mounting shared folders...
    default: /vagrant => /Users/teishi/vagrant/myvagrant

4.3 SSH连接虚拟机

在工作目录下执行如下指令可以直接进入虚拟机

vagrant ssh

默认虚拟机ssh端口会映射到本机的端口2200-2222(具体看前面的初始化提示), 用户名与密码默认都是vagrant,常用的是通过第三方工具例如secureCRT来连接

ssh -p 2200 vagrant@127.0.0.1