根据目前的使用情况,现在把Vagrant常用的一些记录下来。欢迎大家补充。
Vagrant 说明
Vagrant是一套虚拟机管理工具,基于Ruby开发,底层支持VirtualBox、VMware甚至AWS、docker等作为虚拟化系统。我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。
使用场景
- 统一开发环境。一次配置打包,统一分发给团队成员,统一团队开发环境,解决诸如“编码问题”,“缺少模块”,“配置文件不同”带来的问题;
- 避免重复搭建开发环境。新员工加入,不用浪费时间搭建开发环境,快速加入开发,减少时间成本的浪费;
- 多个相互隔离开发环境。可以在不用box里跑不同的语言,或者编译安装同一语言不同版本,搭建多个相互隔离的开发环境,卸载清除时也很快捷轻松。
安装和配置
安装VirtualBox、Vagrant。其中Windows安装后需要重启。mac包直接安装。
- Vagrant https://www.vagrantup.com
- VirtualBox https://www.virtualbox.org/wiki/Downloads
Vagrant 常用命令
Box操作
1 | # vagrant box add centos7 /box/mycentos7.box #添加box文件,并命名centos7 |
初始化
1 | # vagrant init # 默认初始化虚拟机,box为base |
虚拟机操作
1 | # vagrant up # 启动虚拟机 |
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 | config.ssh.username = 'root' |
私有网络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 | config.vm.provider "virtualbox" do |vb| |
相关资料
GitHub工程
Vagrant官方帮助文档
A list of base boxes for Vagrant - Vagrantbox.es
Discover Vagrant Boxes