#夏日挑战赛# vagrant+virtualBox快速部署集群节点 原创

阿虎呱唧
发布于 2022-6-17 09:39
浏览
10收藏

本文正在参加星光计划3.0–夏日挑战赛

简介

VirtualBox是一款开源虚拟机软件,能虚拟出window Linux等众多操作系统

Vagrant是一个基于Ruby的工具,提供基于命令和脚本的方式管理虚拟机,它会调用VirtualBox接口创建和管理虚拟机,Vagrant中有box(箱子)的概念,类似于docker中的镜像,通过box结合配置脚本就可实现虚拟机的自动化部署

在我们资源有限的情况下,通过Vagrant+VirtualBox结合可在单台机器上方便快速的搭建不同集群环境,例如在k8s的开发和测试环境上是非常有用的.

1. 安装VirtualBox

https://www.virtualbox.org/wiki/Downloads

2. 安装Vagrant

https://www.vagrantup.com/downloads

3. 单台安装

通过https://app.vagrantup.com/boxes/search,在线找到自己需要的box, 本文以centos/7为例

  • 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的box
vagrant 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

虚拟机安装问题:
#夏日挑战赛# vagrant+virtualBox快速部署集群节点-鸿蒙开发者社区

解决办法:

https://github.com/dotless-de/vagrant-vbguest

# 安装 vbguest 插件
vagrant plugin install vagrant-vbguest
# 重启虚拟机
vagrant box reload
  • 4.3 安装效果
    #夏日挑战赛# vagrant+virtualBox快速部署集群节点-鸿蒙开发者社区

  • 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/

https://www.vagrantup.com/docs/synced-folders/nfs

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-6-23 15:39:36修改
18
收藏 10
回复
举报
7条回复
按时间正序
/
按时间倒序
学会沉默
学会沉默

优秀,给力

1
回复
2022-6-17 20:14:40
科技维度
科技维度

好文,点赞

 

1
回复
2022-6-20 11:51:30
民之码农
民之码农

666

回复
2022-6-23 08:19:46
wx62b10196e00fa
wx62b10196e00fa

学习了👍 

回复
2022-6-28 17:20:41
keshao1991
keshao1991

学习起来   小编有点刁

回复
2022-6-28 17:20:52
一切良好
一切良好

实用,收藏了!

回复
2022-6-28 17:31:26
民之码农
民之码农

实用,收藏了!

1
回复
2022-6-30 08:43:19
回复
    相关推荐