APP下载

基于Vagrant快速搭建多样的软件开发环境

2018-06-04张晓亚广东理工学院电气工程系韩文龙广州爱立信通信设备有限公司

数码世界 2018年5期
关键词:配置文件脚本命令

张晓亚 广东理工学院电气工程系 韩文龙 广州爱立信通信设备有限公司

Vagrant是一种虚拟机管理工具,基于Ruby语言开发,主要而不仅用于Oracle VM VitrualBox虚拟机的管理。Vagrant官方网站https://www.vagrantup.com给出的口号是:Development Environments Made Easy,让开发环境变得易于搭建。Vagrant为开发者、运维人员提供了相同的、易于操作的搭建开发环境的搭建工作流。他提供了一个声明式的配置文件,用于描述所有的需要的软件、开发包、操作系统配置、用户和其他。程序开发中修复bug的成本会指数级地增加其生产的距离。Vagrant通过提供相同的操作系统、包、用户和配置来镜像生产环境,同时让用户能够灵活地使用他们最喜欢的编辑器、IDE和浏览器。Vagrant还集成了您现有的配置管理工具,如Chef,Puppet,anUNK,或Salt,因此您可以像在生产环境一样使用相同的脚本来配置Vagrant。

图1 Vagrant架构图

1 开发环境搭建

以下以最受关注的开发语言Python软件开发环境为例,对使用vagrant工具搭建真实的Ubuntu操作系统虚拟开发环境进行阐述。需要先从http://www.vagrantbox.es/这个网站下载vagrantbox的操作系统box文件。这里使用的是https://github.com/sepetrov/trusty64/releases/download/v0.0.5/trusty64.box为64位ubuntu

操作系统的box文件。使用命令“vagrant box add trusty64trusty64.box”,即可添加一个名为trusty64的box到本地box仓库。到需要使用虚拟机的目录下使用命令“vagrantinittrusty64”就可以把本地的box初始化到当前文件夹,使用命令“vagrantup”和“vagrantssh”即可以启动和连接vagrant创建的虚拟机。以上可以看出Vagrant对于虚拟机创建的高效和便捷,同样对于虚拟机的环境搭建同样方便。下面为Python开发的常见环境:

(1)Python3.x;

(2)Pip工具;

(3)pypandoc、json-tools、py4j、requests、setuptools 等python库;

如果要打通开发环境(window下)和测试环境(VM下),还需要:

(4)共享文件夹;

以及其他的一些系统设置:

(5)硬盘分配大小;

(6)内存;

(7)cpu核心数;

2 网络配置

c on fi g.v m.net work "pr ivate_net work", ip:"192.168.59.30"。这里设置虚拟机的ip为固定ip192.168.59.30,可以在宿主机器使用ssh连接。

3 设置虚拟机名和内存cup核心数

config.vm.provider "virtualbox" do |v|

v.name = "dev"

v.memory = 1024

v.cpus = 1

end

这里设置主机名为dev,并设置内存大小为1024,cup核心数为1核。

4 虚拟机挂载宿主机共享目录

工作中可以把工作目录挂载到虚拟机目录,这样可以随时在虚拟机中得到最新的代码,随时进行测试运行。config.vm.synced_folder "../../eea-work", "/data/eea/rms/current"。这里把宿主机的"../../eea-work"目录挂载到虚拟机"/data/eea/rms/current"目录。

5 扩展

在实际使用中可以灵活的使用shell脚本进行python依赖包的安装。

config.vm.provision "shell", inline: <<-SHELL #需要执行的shell命令

echo "---------------------Upgrading System------------"

sudorm -R /var/lib/apt/lists/*

sudo apt-get update -y

sudo apt-get upgrade -y

sudo apt-get install build-essential

sudo apt-get install python-dev

sudo apt-get install python-pip -y

echo "---------------------Upgrading pip-------------------"

sudo pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

SHELL

也可以使用”config.vm.provision "shell", path:"./script/shell.sh”直接执行脚本文件。这里使用的shell脚本。

6 vagrantfile配置文件说明

对vagrant的配置文件进行Vagrantfile配置,配置文件内容及说明如下:

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.configure("2") do |config|

config.vm.box = "trusty64" #使用的box文件

config.vm.hostname="dev" #虚拟机名称

c on fi g.v m.net work "pr ivate_net work", ip:"192.168.59.30" #ip配置

config.vm.provider "virtualbox" do |v|

v.name = "master" #主机名

v.memory = 1024 #内存大小

v.cpus = 1 #核心数

end

config.vm.synced_folder "../../eea-work", "/data/eea/rms/current" #共享

config.vm.provision "shell", inline: <<-SHELL #需要执行的shell命令

echo "---------------------Upgrading System------------"

sudorm -R /var/lib/apt/lists/*

sudo apt-get update -y

sudo apt-get upgrade -y

sudo apt-get install build-essential

sudo apt-get install python-dev

sudo apt-get install python-pip -y

echo "---------------------Upgrading pip-------------------"

sudo pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

SHELL

end

8box打包和发布

最后对于vagrant已经配置完成box,可以使用“vagrant package output box_name.box”,进行box打包,打包成的box文件可以进行分发,这样多个开发人员基于同一个box,使用“vagrant box add box_namebox_name.box”添加box后,再用“vagrant initbox_name”进行box初始化后,就拥有了和分发者相同的开发环境。

7 环境验证

首先下发这个文件到另一台电脑的一个目录下,在这个电脑下创建如下目录结构eea-work/test/vagrant/.eea-work为实际工作目录,vagrant目录下为vagrant配置目录。在vagrant目录下使用命令vagrant up启动虚拟机,使用vagrantssh登录虚拟机,使用ls/data/eea/rms/current查看是否有工作开发的文件。

8 结束语

基于Vagrant的环境搭建,不以搭建的宿主的环境限制,可以在任何的平台搭建。搭建的过程相当的便捷和简单。搭建后的环境可以使用Vagrantfile,分发配置的方式分发,也可以使用box_name.box,分发box的方式分发。软件开发人员可以减少大量的配置开发环境的时间,把更多的精力用于软件的编程和功能的实现上。

[1]郭亮,郭海智,谢光.基于Vagrant部署程序设计类课程实验教学环境[J].实验科学与技术,2017(5):70-75.

[2]刘娜,王旭.基于云计算的服务交付模型[J].信息技术与标准化.2014(10):32-35.

[3]何凯,刘伟.基于虚拟机的网络管理与维护实验教学探索,实验技术与管理,2016(33):201-204.

猜你喜欢

配置文件脚本命令
酒驾
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
只听主人的命令
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
安装和启动Docker
互不干涉混用Chromium Edge
自动推送与网站匹配的脚本
移防命令下达后
解析Windows10的内部命令