使用vagrant搭建测试环境

使用 vagrant 管理虚拟机,能实现搭建可重复的开发或者测试环境。在需要验证某些集群软件,比如 Ceph,Kubernetes,MySQL Cluster 时,会比较有用。vagrant 是基于 Ruby 开发的,在 Windows 10 上运行会比较慢,但是似乎也没有什么替代品。如果能使用容器代替虚拟机,或许可以试试 Docker Compose。

安装

以 Windows 10 为例,下载并安装 vagrant 和 VirtualBox,另外建议安装 msys2。安装完成之后,在 msys2 中将 vagrant 和 VirtualBox 加入 PATH

使用

box管理

box 是虚拟机镜像,vagrant 基于 box 创建并启动虚拟机。由于网络原因,一般需要手动下载需要的 box,然后导入,vagrant up 时能看到 box 直链。通过以下命令管理 box。

虚拟机管理

包括启停,重建等。

由于 vagrant 在 Windows 10 上非常慢,vagrant ssh 可以用 Xshell 之类的工具代替。

Vagrantfile

一个示例 Vagrantfile。

一般不需要启动图形界面,通过 v.gui = false 设置。

共享文件夹

使用 type: "rsync" 指定用 rsync 方式将文件同步到虚拟机中。

指定 rsync 方式是因为 Windows 10 上共享目录方式可能会报以下错误,并且安装 vagrant-vbguest 插件后依然不能解决。

mount: unknown filesystem type 'vboxsf'

自定义操作

启动虚拟机后,一般需要执行一些脚本来安装软件或者修改设置。vagrant 支持 shell 或者 ansible,puppet 之类的工具。

如果是每次都需要运行的 shell 脚本(run: "always"),需要注意非首次执行时检查一下是否需要再次执行命令。比如,只在首次启动时初始化 MySQL,可以这么写:

SATA驱动器

centos/7 box 默认是 IDE 驱动器,如果想添加 SATA 驱动器,可以参考如下代码。

不安装 VirtualBox Guest Additions

速度太慢。

管理硬盘

直接删除硬盘文件,如果报错:VERR_ALREADY_EXISTS,需通过 VBOXmanage 删除。

参考资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注