天天看点

vagrant学习笔记 - Vagrantfile

下面是一组服务测试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>