Vagrant是一款基于Ruby的工具,用于自动构建和流程配置虚拟化开发环境。主要用来管理VirtualBox、VMware虚拟化系统,与Chef,Salt,Puppet等环境配置管理软件搭配使用,是搭建分布式开发环境的利器。
一. 安装Vagrant
前言:
1.1 下载
wget https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.rpm
1.2 安装
yum localinstall vagrant_2.2.5_x86_64.rpm
1.3 校验
vagrant --version
二. 使用Vagrant
前言
- 确认已安装VirtualBox
- 将当前用户添加到vboxusers用户组
sudo usermod -G vboxusers $(whoami)
官方镜像仓库: vagrantcloud.com 其他镜像仓库: www.vagrantbox.es
2.1 下载系统镜像
wget https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
2.2 添加系统镜像
# vagrant box add ${title} ${path}
vagrant box add centos-7.2 vagrant-centos-7.2.box
2.3 初始化系统镜像
执行init
命令后自动生成Vagrantfile
文件,可以配置虚拟机的属性
# vagrant init {title}
vagrant init centos-7.2
2.4 配置Vagrantfile文件
Vagrant.configure("2") do |config|
config.vm.box = "centos-7.2"
config.vm.network "public_network", ip: "192.168.2.110"
end
默认远程账号密码 vagrant/vagrant
如果需要root权限,使用sudo命令即可
2.5 启动系统镜像
vagrant up
启动成功后会在当前目录生成一个 .vagrant 的隐藏文件夹
2.6 进入虚拟机
vagrant ssh
若要退出虚拟机,请按Ctrl + D或输入exit。
2.7 常用命令
## 系统镜像管理
$ vagrant box add #添加系统镜像
$ vagrant box list #查看已添加的系统镜像
$ vagrant box remove #删除某个已安装的系统镜像
## Vagrant基本命令
$ vagrant init #初始化虚拟机,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant reload #重启虚拟机
$ vagrant ssh #SSH至虚拟机
$ vagrant status #查看虚拟机运行状态
$ vagrant destroy [-f] #销毁(删除)当前虚拟机相关的全部文件、快照等等,但不会删除Vagrantfile
$ vagrant suspend #挂起当前虚拟机 ——虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用
$ vagrant resume #恢复当前虚拟机 ——与前面的挂起相对应
$ vagrant package #打包当前运行的虚拟机环境为box文件以用于分发
2.8 打包虚拟机
vagrant package --base=centos-7.2 --output=custom-centos-7.2.box
box文件实际上是一个 OVF 包。
开源虚拟化格式OVF文件是一种开源的文件规范,它描述了一个开源、安全、有效、可拓展的便携式虚拟打包以及软件分布格式,它一般有几个部分组成,分别是ovf文件、mf文件、cert文件、vmdk文件和iso文件。
如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:
rm -f /etc/udev/rule.d/70-persistent-net.rules
这条bash指令应该在虚机中被执行,对于不同的操作系统来说,文件的位置可能是有变化的。
unknown filesystem type 'vboxsf' 解决方案
vagrant plugin install vagrant-vbguest
vagrant destroy && vagrant up
参考: www.vultr.com/docs/how-to…
定制box: github.com/jayknoxqu/p…