51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6735|回复: 0

[原创] Vagrant - 轻量级虚拟化工具简介

[复制链接]

该用户从未签到

发表于 2020-3-6 16:01:05 | 显示全部楼层 |阅读模式
问题描述

1、虚拟化工具学习成本高

2、环境无法直接共享

3、虚拟化平台不统一

4、无法快速保存、还原某版本测试环境


解决方案:Vagrant

1、可以很方便的就建立起来一个虚拟环境

2、可以很快速的就把某版本的测试环境还原出来

3、可配置、轻量级、便携式

4、可共享,降低了开发者搭建环境的时间,提高了生产力

5、解决了“在我的机器上可以工作”的问题

6、跨平台,支持多操作系统,多款虚拟化平台

7、模拟分布式系统

8、命令行模式,适合做DevOps(可关注微信公众号:“诗泽园” 获取详细内容)



安装包及Box的选择

安装包:https://www.vagrantup.com/

Boxes: http://www.vagrantbox.es/



Box推荐选择:minimal + guest additions + puppet|chef 的box



基础命令及操作

基础命令:

$ vagrant init # 初始化

$ vagrant up # 启动虚拟机

$ vagrant halt # 关闭虚拟机

$ vagrant reload # 重启虚拟机

$ vagrant ssh # SSH 至虚拟机

$ vagrant suspend # 挂起虚拟机

$ vagrant resume # 唤醒虚拟机

$ vagrant status # 查看虚拟机运行状态

$ vagrant destroy # 销毁当前虚拟机



Box管理:

$ vagrant box list # 查看本地box列表

$ vagrant box add # 添加box到列表

$ vagrant box remove # 从box列表移除



一般操作:

1、添加Box:vagrant box add 【name】 box路径

2、初始化:Vagrant init centos7,修改OR替换配置文件

3、启动:Vagrant up

4、登录并使用:Vagrant ssh


Provider的选择

vagrant支持多种类型的虚拟化平台,默认平台为VirtualBox,如果选择其他平台,需要加以下参数:

$ vagrant up --provider hyperv


网络设置

Vagrant可以指定三种网络,他们和多数虚拟机提供的网络是对应的。

- 端口转发(Forwarded Ports)

- 私有网络(Private Network)

- 公有网络(Public Network)

三种网络类型分别由NAT、桥接、内部、主机模式组合而成,视频中会做具体讲解,这里由于篇幅关系就不再累述。(可关注微信公众号:“诗泽园” 获取详细内容)



端口转发(Forwarded Ports)

config.vm.network :forwarded_port, guest: 80, host: 8080

将虚拟机的端口80映射为宿主机的端口8080

优点:

     简单易理解

     容易实现外网访问虚拟机

缺点:

     如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。容易占用端口。



私有网络(Private Network)

config.vm.network "private_network", ip: "192.168.50.4"

config.vm.network "private_network", type: "dhcp"

只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。

优点:

      安全,只有自己能访问。

缺点:

      因为私有的原因,所以团队成员其他人不能和你协作。(可关注微信公众号:“诗泽园” 获取详细内容)

公有网络(Public Network)

config.vm.network "public_network", ip: "192.168.1.120"

config.vm.network "public_network" (默认使用dhcp分配)

虚拟机享受实体机器一样的待遇,一样的网络配置。

优点:

      方便团队协作,别人可以访问你的虚拟机。

缺点:

      需要有网络,有路由器分配IP。

如果Host机器有多张网卡,此时运行vagrant up, Vagrant会询问需要使用那张网卡连接到网络,如果不想要这种交互,则可以在Vagrantfile中进行配置,语法如下:

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (DLINK)'



Provision

--provision / --no-provision

什么时候会执行:

首次执行vagrant up

执行vagrant provision

执行vagrant reload –provision



也可以做配置使之每次执行:

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

         config.vm.provision "shell", inline: "echo hello",

         run: "always"

     end



两种执行方式:

1、直接在Vagrantfile中编写Shell脚本,可以通过“inline”指定脚本内容:

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

         # ... other configuration

         config.vm.provision "shell", inline: "echo hello"

      end



2、 通过引用外部脚本文件的方式:

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

         config.vm.provision "shell", path: "script.sh"

     end



Package

打包共享自制的box:

vagrant package –-base virtualbox_vm_name --output newbox_name.box


回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-10-11 01:59 , Processed in 1.535836 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表