简介
VirtualBox是一款开源虚拟机软件,能虚拟出window Linux等众多操作系统
Vagrant是一个基于Ruby的工具,提供基于命令和脚本的方式管理虚拟机,它会调用VirtualBox接口创建和管理虚拟机,Vagrant中有box(箱子)的概念,类似于docker中的镜像,通过box结合配置脚本就可实现虚拟机的自动化部署
在我们资源有限的情况下,通过Vagrant+VirtualBox结合可在单台机器上方便快速的搭建不同集群环境,例如在k8s的开发和测试环境上是非常有用的.
1. 安装VirtualBox
2. 安装Vagrant
3. 单台安装
在线找到自己需要的box:
centos/7
https://app.vagrantup.com/boxes/search
- 3.1 手工下载box添加
因为国内下载慢,所以要手工下载box
找到box下载地址拼接 providers/virtualbox.box
centos box下载地址:https://app.vagrantup.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
将下载的box添加到vagrant环境中
vagrant box add --name centos7 ./CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
查看本地box列表
$ vagrant box list
centos7 (virtualbox, 0)
-
3.2 初始化
默认此命令会自动从官网下载box,但是因为网络慢,所以上一环境已手工下载好,box列表已存在名为centos7的boxvagrant init centos7
会在当前目录下生成默认的Vagrantfile文件,
Vagrantfile说明:
它可以定义一台或多台虚拟机的各种配置,如网络、内存、主机名等Vagrant.configure("2") do |config| config.vm.box = "centos7" end
-
3.3 安装启动
在Vagrantfile文件所在目录下,执行:vagrant up
遇到错误信息
Stderr: VBoxManage: error: VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
问题原因: 主板的CPU虚拟化技术没开
1.开机按del进入bois
2.选择Advanced(高级)
3.找到cpu设置
4.找到intel虚拟化技术,把它的选项打开
5,最后F10保存,重启 -
3.4 进入虚拟机
vagrant ssh
4 批量节点安装
演示安装三台centos7节点,node-1 node-2 node-3
-
4.1 定义Vagrantfile文件
为各节配置Cpu、内存、IP、hostname 、挂载共享目录等信息Vagrant.configure("2") do |config| vms = Array(1..3) vms.each do |i| config.vm.define "node-#{i}" do |node| node.vm.box = "centos7" node.vm.hostname = "centos7-#{i}" node.vm.box_check_update = false node.vm.network "private_network", ip: "192.168.56.20#{i}" node.vm.synced_folder "/home/hushow/soft/k8s/server/data", "/data" node.vm.provider "virtualbox" do |v| v.name = "centos7_#{i}" v.memory = 4096 v.cpus = 2 end end end end
-
4.2 安装和启动
在Vagrantfile文件所在目录,执行:vagrant up
虚拟机安装问题:
解决办法:
https://github.com/dotless-de/vagrant-vbguest
# 安装 vbguest 插件 vagrant plugin install vagrant-vbguest # 重启虚拟机 vagrant box reload
-
4.3 安装效果
-
4.4 快速进入各虚拟机
进入虚拟机后,IP和分配的一致,各虚拟机和宿主机是双向也是通的vagrant ssh node-1 vagrant ssh node-2 vagrant ssh node-3
5 vagrant常用命令
命令 | 说明 |
---|---|
vagrant box add | 添加box的操作 |
vagrant init | 初始化box的操作,会生成vagrant的配置文件Vagrantfile |
vagrant up | 启动本地环境 |
vagrant ssh | 通过 ssh 登录本地环境所在虚拟机 |
vagrant halt | 关闭本地环境 |
vagrant suspend | 暂停本地环境 |
vagrant resume | 恢复本地环境 |
vagrant reload | 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up) |
vagrant destroy | 彻底移除本地环境 |
vagrant box list | 显示当前已经添加的box列表 |
vagrant destroy | 彻底移除本地环境 |
vagrant box remove | 删除相应的box |
vagrant package | 打包命令,可以把当前的运行的虚拟机环境进行打包 |
vagrant plugin | 用于安装卸载插件 |
vagrant status | 获取当前虚拟机的状态 |
vagrant global-status | 显示当前用户Vagrant的所有环境状态 |
6 vagrant-scp 插件使用
完成虚拟机间的数据传送
-
安装
vagrant plugin install vagrant-scp
-
使用
# 在宿主机上使用 vagrant scp ./a.txt node-1:/vagrant/a.txt
7 vagrant中推荐文件共享方式
如果可能,我们建议使用NFS而不是VirtualBox共享文件夹。您还可以使用vagrant-sshfs插件,该插件与NFS不同,可在所有操作系统上使用
https://blog.centos.org/2020/05/updated-centos-vagrant-images-available-v2004-01/