本篇博客不是 vagrant 使用教程,只是简单的记录常用命令。
vagrant有什么用处
简单的说有了 vagrant 就可以对 VirtualBox 上安装的系统进行增、删、改、查操作了。而前提是 vagrant 只能操作它自己专有的.box镜像系统,不能操作通过其它方式安装在 VirtualBox 上的操作系统(就是自己操作自己安装的)。
简单的命令
vagrant box list 列出所有已安装的.box镜像系统
vagrant box add 添加.box镜像
vagrant box add ubuntu-14.04 ubuntu-14.04.box
vagrant box remove 删除.box镜像
vagrant box remove ubuntu-14.04
vagrant init 初始化虚拟机配置
# 如果不指定`ubuntu-14.04`参数,则需要手动在Vagrantfile文件中指定`config.vm.box = "ubuntu-14.04"`
vagrant init ubuntu-14.04
vagrant up 启动虚拟机中的系统
vagrant reload 重启虚拟机中的系统
vagrant ssh 以SSH方式进入虚拟机系统
vagrant halt 使虚拟机中的系统关机
vagrant destory 销毁虚拟机中的系统
常用配置
网络端口映射,对应 VirtualBox 的设置->网络->高级->端口转发
# 将虚拟机中的80端口转发到主机的8888端口
config.vm.network "forwarded_port" ,guest:80,host:8888
# 将虚拟机中的8888端口转发到主机的8889端口
config.vm.network "forwarded_port" ,guest:8888,host:8889
共享目录设置
# 将主机的`/home/lemontea/tjzwork/workspace`目录映射到虚拟机的`/home/www`目录,并且以nfs形式
# 这里要注意 nfs 只能跟私有ip一起使用
config.vm.synced_folder "/home/lemontea/tjzwork/workspace" ,"/home/www",type: "nfs"
网络设置
# 私有IP设置
config.vm.network "private_network",ip:"192.168.10.101"
# 公有IP设置,这里要注意公网IP段与主机必须保持一致
config.vm.network "public_network",ip:"192.168.1.101"
配置虚拟机名、内存、CPU
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.name = "ubuntu_14_0_4"
vb.memory = "1024"
vb.cpus = 2
end
配置主机名
config.vm.hostname = "ubuntu-dev-tang"
打包分发
将之前配置的各种环境打包成镜像,然后分发给别人使用。
打包自己box的三种方式
vagrant package
vagrant package --output xxx.box
vagrant package --output xxx.box --base 虚拟机名称
分发后如果box升级了怎么办?
老用户直接用Vagrantfile更新
config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# 在这里增加升级后软件的安装命令
apt-get install vim -y
SHELL
新用户直接使用新打包的box文件新机虚拟机