下面是一组服务测试mfs的vagrant file范例:
保存Vagrantfile文件以后,执行如下命令查看虚机配置:
执行up命令,批量创建虚机并启动。
如果只想启动一台,执行:
vagrant基础配置
Vagrantfile 配置文件的格式简单介绍一下。
1 文件头
说明文件的格式信息,处理方式等。
指定使用ruby格式,vi进行编辑的,所有文件都采用这个文件头即可。
2 通用数据
设置一些基础数据,供配置信息中调用。
这里是定义一个hashmap,以key-value方式来存储vm主机名和ip地址。
3 配置信息
参数2,表示的是当前配置文件使用的vagrant configure版本号为Vagrant 1.1+,如果取值为1,表示为Vagrant 1.0.x Vagrantfiles,旧版本暂不考虑,记住就写2即可。
本文只对configure 2作说明,旧版本不多解释了。
do … end 为配置的开始结束符,所有配置信息都写在这两段代码之间。
config是为当前配置命名,你可以指定任意名称,如myvmconfig,在后面引用的时候,改为自己的名字即可。
3.1 基本配置信息
3.1.1 镜像
3.1.2 定义vm的configure配置节点
表示在config配置中,定义一个名为mfsmaster的vm配置,该节点下的配置信息命名为mfsmaster_config;
如果该Vagrantfile配置文件只定义了一个vm,这个配置节点层次可忽略。
3.1.2.1 vm网络环境配置
vagrant的网络连接方式有三种:
NAT : 缺省创建,用于让vm可以通过host转发访问局域网甚至互联网。
host-only : 只有主机可以访问vm,其他机器无法访问它。
bridge : 此模式下vm就像局域网中的一台独立的机器,可以被其他机器访问。
host-only 模式的IP可以不指定,而是采用dhcp自动生成的方式,如 :
配置当前项以后,如果host有多个网络适配器,第一次启动会询问桥接到哪个网络,如:
我使用的是wifi,选择1,继续。
3.1.2.2 同步文件夹配置
用来让host与vm二者进行文件同步。
缺省地,vagrant会把工作目录映射到vm的/vagrant目录,如果需要增加更多同步文件夹,使用上面的配置,第一个文件夹为host主机的目录,第二个文件夹为vm中的目录。
3.1.2.3 设置主机名
指定vm的hostname,会覆盖vm中/etc/hostsname中的设置。
3.1.2.4 端口转发
guest和host是必须的,还有几个可选属性:
guest_ip:字符串,vm指定绑定的Ip,缺省为0.0.0.0
host_ip:字符串,host指定绑定的Ip,缺省为0.0.0.0
protocol:字符串,可选TCP或UDP,缺省为TCP
3.1.2.5 vm提供者配置
3.1.2.2.1 vm provider通用配置
虚机容器提供者配置,对于不同的provider,特有的一些配置,此处配置信息是针对virtualbox定义一个提供者,命名为vb,跟前面一样,这个名字随意取,只要节点内部调用一致即可。
配置信息又分为通用配置和个性化配置,通用配置对于不同provider是通用的,常用的通用配置如下:
3.1.2.2.2 vm provider个性化配置(virtualbox)
上面的provider配置是通用的配置,针对不同的虚拟机,还有一些的个性的配置,通过vb.customize配置来定制。
对virtual box的个性化配置,可以参考:<code>VBoxManage modifyvm</code> 命令的使用方法。其他虚机的provider,暂时未做测试。
扩展一下,如果创建的虚机很多,vm都混杂在一起,我们都知道virtualbox支持对vm进行分组。要在vagrant使用分组,可以在mfs的vagrantfile中如下自定义:
参数说明:
分组名是路径格式,/开始,表示第一级目录,可以指定多级目录,如/mfs/chunk;
可以指定多个分组,用逗号分开,如:“/dev,/mfs”
每一个vm创建以后,都会放到mfs分组里。可以在virtualbox管理界面查看。
3.1.3 一组相同配置的vm
前面配置了一组vm的hash map,定义一组vm时,使用如下节点遍历。
如果不想定义app_servers,下面也是一种方案:
3.2 中央仓库配置
指定box镜像push发布的地址,供box镜像管理者使用。普通使用者不需关心。
3.3 vm部署
用来加载box以后,对vm的环境进行一些定制,比如设置环境变量,安装软件,部署程序等。如:
这部分内容不少,待续。
3.4 其他
还有很多很多配置,暂时没用到,待续。
详细的文档可参考:
<a href="http://informatica.uv.cl/~gabriel/docs/manual_Virtual_Box_html/ch08.html#idp21992144">http://informatica.uv.cl/~gabriel/docs/manual_Virtual_Box_html/ch08.html#idp21992144</a>