自动化工具 Vagrant-轻量级虚拟化管理工具

Alpha · 2020年03月03日 · 970 次阅读

问题描述

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册