Vagrant 介绍以及使用备忘

Posted by Leon on 2015-11-08

根据目前的使用情况,现在把Vagrant常用的一些记录下来。欢迎大家补充。

Vagrant 说明

Vagrant是一套虚拟机管理工具,基于Ruby开发,底层支持VirtualBox、VMware甚至AWS、docker等作为虚拟化系统。我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。

使用场景

  1. 统一开发环境。一次配置打包,统一分发给团队成员,统一团队开发环境,解决诸如“编码问题”,“缺少模块”,“配置文件不同”带来的问题;
  2. 避免重复搭建开发环境。新员工加入,不用浪费时间搭建开发环境,快速加入开发,减少时间成本的浪费;
  3. 多个相互隔离开发环境。可以在不用box里跑不同的语言,或者编译安装同一语言不同版本,搭建多个相互隔离的开发环境,卸载清除时也很快捷轻松。

安装和配置

安装VirtualBox、Vagrant。其中Windows安装后需要重启。mac包直接安装。

Vagrant 常用命令

Box操作

1
2
3
4
# vagrant  box add centos7 /box/mycentos7.box  #添加box文件,并命名centos7   
# vagrant box add base https://github.com/centos-7.0-x86_64.box #添加远程box
# vagrant box list #列出当前添加到所有box
# vagrant box remove boxname #移除当前的box

初始化

1
2
# vagrant init  # 默认初始化虚拟机,box为base
# vagrant init boxname #初始化制定boxname

虚拟机操作

1
2
3
4
5
6
7
# vagrant up  # 启动虚拟机
# vagrant halt # 关闭虚拟机
# vagrant reload # 重启虚拟机
# vagrant ssh # SSH 至虚拟机
# vagrant ssh-config #虚拟机SSH信息
# vagrant status # 查看虚拟机运行状态
# vagrant destroy # 销毁当前虚拟机

Box打包

可以把自己的虚拟机和别人共享,这时候可以打包。

1
# vagrant package --base virtualname --output boxname.box --vagrantfile vfile

virtualname为虚拟里的实际名称, boxname指定打包出的名称, vfile可打包一个配置文件到box.

Vagrantfile 配置

在每个vagrant下面都有一个vagrantfile,用来配置虚拟机. 这是官方配置说明,以下记录常用配置。

Box配置

config.vm.box = "centos7.0" #指定box

设置主机名

config.vm.hostname = 'vgr.centos7.dev'

设置root登陆

Vagrant默认使用vagrant用户登陆,操作起来不是很方便,可设置root登陆。

1
2
3
config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

私有网络IP

如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP 。

config.vm.network "private_network", ip: "192.168.11.10"

192.168.11.10 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可。

局域网DHCP

如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,可以如下设置。

config.vm.network "public_network"

同步目录

config.vm.synced_folder "share/", "/vagrant_data"

前面的参数 share/ 表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: /work/vagrant/share`

后面的参数 /vagrant_data 表示虚拟机中对应映射的目录。

端口映射

config.vm.network "forwarded_port", guest: 80, host: 8080

80对应的是虚拟机的端口,8080是宿主机的端口。

内存和CUP

1
2
3
4
5
6
7
8
9
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true

# Customize the amount of memory on the VM:
vb.memory = "1024"
vb.cupu = 4
vb.name = "skyfvm"
end

相关资料

GitHub工程
Vagrant官方帮助文档
A list of base boxes for Vagrant - Vagrantbox.es
Discover Vagrant Boxes