Vagrant教程
Vagrant笔记
1. Vagrant简介
1.1 是什么
vagrant是依赖于虚拟机软件进行工作的
vagrant是构建在虚拟机技术上的虚拟机运行环境管理工具
vagrant用于创建和部署虚拟机运行环境的
用VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和各种安装虚拟机。
好处是可以提供一个可配置,可移植和可复用的软件环境
Vagrant简单的配置,丰富的自动化脚本资源以及分享的便捷性都是我们应该学习的思想
1.2 能干啥
Vagrant是开发者的福音,摆脱了重复配置环境的处境,用它来方便快捷的管理自己的开发环境,自动部署无需人工参与
Vagrant可以统一开发环境
Vagrant是构建在虚拟机上的虚拟化运行环境管理工具
- 建立和删除虚拟机
- 配置虚拟机运行参数
- 管理虚拟机运行状态
- 自动化配置和安装开发环境
- 打包和分发虚拟机运行环境
2. Vagrant安装
2.1 前提
在BIOS开启VT-x/AMD-v虚拟化技术支持

Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
Hypervisor是所有虚拟化技术的核心,软硬件架构和管理更高效,更灵活,硬件的效能能够更好的发挥出来。常见的产品有:VMware,KVM,Xen等等。
关闭hyper-v和沙箱
我电脑根本没这两个,所有更不要说关闭了…….

2.2 下载
cmder

vagrant

vbox
可以选择哪个版本,个人还是比较喜欢新版本


2.3 安装
都是无脑下一步….
2.4 修改默认位置
虚拟机安装位置
默认是在C盘,可以换在别的盘下
打开virbox,点击左上角管理,选择第一个全局设定,或者直接Ctrk+G

本地box库位置
设置VAGRANT_HOME环境变量

因为vagrant up 命令会尝试访问%userprofile%.vagrant.d文件夹,到那时%userprofile%是以gbk命名的。
设置VAGRANT_HOME可以指向vagrant的ruby脚本可识别的路径,可以说vagrant不能识别中文路径(我的%userprofile%为C:\Users\zhangxin其实也是可以的但是主要还是不愿放在系统盘)
3. Vagrant概念
Box
盒子
Vagrant环境的软件包格式
Vagrant使用基础镜像来快速克隆虚拟机,而不是从头开始构建虚拟机。这些基础镜像在Vagrant中被称为“box”,并且指定用于Vagrant环境的box始终是创建新Vagrantfile后的第一步
Vagrant支持的任何平台上的任何人都可以使用盒子来建立相同的工作环境
https://app.vagrantup.com/boxes/search

provider
供应者,提供者,譬如:Virtualbox,VMware等
虚拟机
指vbox上的系统
宿主机
本机,自己的电脑
简单启动
vagrant init hashicorp/bionic64
vagrant up
本地没有这个name的box会从官方库下载
4. Vagrant命令
帮助
1 | vagrant -h |
box
-h 查看
添加box
1 | vagrant box add <name> xxx.box |
查看box
1 | vagrant box list |
provider参数
1 | 指定provider的box,默认是virtualbox |
version参数
1 | 指定一个版本,默认是0 |
json文件方式添加
删除box
1 | vagrant box remove <name> |
初始化
1 | -h 查看 |
init会生成一个vagrantfile文件
里面是ruby语言的语法
你可以根据一定的语法和vagrant官方提供的api接口说明,自定义修改配置这个文件,达到更加个性化自由化的符合你的虚拟机环境

启动
1 | -h 查看 |
重启
1 | -h 查看 |
privision
1 | -h 查看 |
ssh
1 | -h 查看 |
其他
1 | vagrant suspend # 暂停 |
使用JSON导入box
1 | // metadata.json |
1 | vagrant box add metadata.json |
centos案例:自定义启动
5. Vagrant插件
5.1 查看
1 | vagrant plugin list |
5.2 snapshot插件
1 | 保存快照功能 目前vagrant官方默认已经集成可此插件 |

5.3 vbguest插件
有时候我们发现有些virtualbox无法使用自定义共享目录,这时候就需要安装vbguet客户端(类似于Vmware的client)
插件实现了vbguest客户端会在虚拟机启动的时候实现添加的。其实如果不去添加,下次虚拟机启动的时候会默认去添加的。
每次启动虚机都会检查vbguest插件的更新,如果不想更新,修改Vgrantfile的文件,加上这样一条(因为检查更新是访问外网的还是比较慢的)
1 | config.vbguest.auto_update = false |
1 | 通过插件自动安装 Virtualbox Guest Additions 实现自定义 |

1 | 在vagrantfile中通过下面的命令配置共享文件夹 |
1 | config.vm.synced_folder "./data", "/mydata",create: true, owner: "root",group: "root" |
5.4 hostmanager插件
1 | 用主机名访问,可以实现虚机之间用主机名互相访问,也可实现宿主机用主机名访问虚机 |
5.5 bindfs插件
1 | 插件bindfs可以支持共享模式,如nfs,samba |
6. Vagrant自定义
6.1 自定义名称
1 | 修改vagrantfile |
资源优化
1 | config.vm.provider "virtualbox" do |vb| |
端口转发
1 | 一般都是自定义ip 不用这个 |
自定义ip
1 | config.vm.network "private_network", ip: "192.168.56.10" |
公有网络
1 | 在varantfile中将公有网络注释打开 |
1 | config.vm.provision "shell", inline: <<-SHELL |
7. 多节点
先定义两台主机
修改vagrantfile
1 | config.vm.box = "ninghao" |
配置私有网络
1 | config.vm.box = "ninghao" |
配置主机名
1 | config.vm.box = "ninghao" |
设置同步目录
1 | config.vm.box = "ninghao" |
新建三个虚拟机的完整Vagrantfile
1 | boxes = [ |
Vagrant操作
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源 VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
首先需要安装 VirtualBox

https://app.vagrantup.com/boxes/search vagrant官方镜像地址
https://www.vagrantup.com/downloads vagrant下载

打开window cmd窗口 运行vagrant init centos/7,即可初始化一个centos7 系统
运行vagrant up 即可启动虚拟机。系统root用户的密码是vagrant
vagrant ssh:自动使用vagrant 用户连接虚拟机
密码登录
vim /etc/ssh/sshd_config
修改PasswordAuthentication yes/no
直接当前目录输入passwd修改密码,比如abc123
重启服务 service sshd restart systemctl restart sshd
默认网络地址转换-端口转发

每装一个软件都需要端口映射

我们给虚拟机设置一个固定的ip地址 这样直接访问就好了
我创建vagrant是在C:\Users\zhangxin 修改Vagrantfile
1 | # config.vm.network "private_network", ip: "192.168.33.10" |
将注释打开 查看ipconfig VirtualBox中ip地址 192.168.56.xx 使其在同一网段

修改完成后vagrant reload 重启即可



