一,安装vagrant 客户端 , VirtualBox客户端 ,因为vagrant默认支持VirtualBox ,所以使用它比较省心,当然其他虚拟机也是可以的,不过需要配置。
二,安装box ,box 在vagrant里面的角色就是服务提供者,可以把它理解为docker的镜像,因为cn内众所周知的原因box的安装会比较慢,可以把box事先下载到本地,然后以本地路径安装即可:
vagrant box add {name} {dir} 注意 虽然这里用了{}来表示变量,但是是必填的
dir可以为远程url路径也可以为本地绝对或相对路径。
这一步也可以在进行box的初始化时完成。
三,初始化, 新建一个目录,此目录会被默认与vagrant服务共享。
cd www
vagrant init {name} {dir} 注意后面需要跟第二步box定义的名字,如果box已安装,那么dir路径选填。初始化后会在当前目录生成Vagarntfile文件,此为服务的配置文件。
其中的config.vm.box 为 所使用的box名称如上图,名称必须一致。
config.vm.hostname 为ssh登录后显示的主机名称:
此处我做了修改,知道是主机即可。
四。定义box的配置
vb.name 为vitrualbox中显示的服务名称:
其他项可以定义主机的内存等,自行查看即可.
五,当需要使用一个box启动多个服务机器时:
新建一个文件夹并将Vagrantfile文件拷贝进去即可。
注意修改vb.name,因为Vatrualbox不能同时运行两个同名的主机,以及设置的一些私有和公有ip也需要修改,不然会冲突,hostname可保持一致。然后直接cd到这个目录,vagrant up 即可。
注意:.vagrant文件夹不需要复制,否则会报错:default: This machine used to live in D:/vagrant/var1 but it's now at D:/vagrant/var2。
这样就可以使用一个box启动多个服务器了
六,vagrant box的打包分发
当想给他人共用已配置好的box时可以使用vagrant package命令打包:
1、--base NAME - VirtualBox主机名称,这里NAME是VirtualBox GUI中显示的虚拟机的UUID或者名字,当有多个主机在运行时指定需要被打包的那个,不指定时则为当前窗口开启的这个。
也就是说在其他目录想要打包某个vagrant box时需指定具体的主机名或id,否则会报:
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.
使用 vagrant global-status 即可看到所有主机的信息包括id:
当需要显示指定要打包的主机时可以使用--base命令配合下面的主机名称即可
2、--output NAME - 这个参数设置打包的名字,如果没有这个参数,则默认保存为 package.box
3、--include x,y,z - 附加一些文件到box中,这是让打包Vagrantfile执行附加任务
4、--vagrantfile FILE - 打包一个Vagrantfile到box中,这个Vagrantfile将作为box使用的Vagrantfile load
例:vagrant package --base 77773 --output lnmp
5,有了box后可分发给其他人,使用vagrant box add /dir/lnmp --name lnmp 添加box ,然后vagrant init lnmp , 最后vagrant up即可,也就是重复上面的步骤