Windos系统下 Vagrant + virtualBox 快速构建三个虚拟机
vagrant介绍
vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。使用Oracle的开源virtualBox虚拟化系统,使用Chef创建自动化虚拟环境。同时,vagrant也支持其他类型的虚拟机系统,如:vmware、kvm、qemu,甚至是容器系统,如docker等,当然,用的比较多的还是virtralBox。
vagrant与virtualBox原理
这里我们简述一下vagrant与virtualBox的原理,virtualBox(本身也可以创建虚拟机,只是相对麻烦)会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。
首先
下载好vagrant 和 virtualBox 并且安装,vagrant会帮助你开始CPU虚拟化
vagrant :百度网盘
链接:https://pan.baidu.com/s/1M9_7tE-UMKlEiEb3uebw-g
提取码:iqe4
virtualBox : 迅雷下载链接
https://download.virtualbox.org/virtualbox/6.1.32/VirtualBox-6.1.32-149290-Win.exe
安装成功后查看cpu是否已开启虚拟化,如果没有百度解决:
上述完成后新建文件夹
例子 E:\centos
初始化
vagrant init centos/7
创建Vagrantfile文件,Vagrantfile文件是vagrant构建虚拟机的核心,主要用来定义虚拟机的各种配置,主要包括三个方面的配置:虚拟机的配置、SSH配置、Vagrant的一些基础配置。
启动虚拟机
vagrant up
此时没有下载任何虚拟机相关的镜像,vagrant会自动在远程仓库下载centos相关镜像,不过下载速度过慢,我们可以复制其下载链接,使用下载插件、软件 等下载,如迅雷
centos镜像:迅雷下载链接
https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
下载完成后可以将镜像放在你新建的文件夹下面,此时你的文件夹下面应该有如下三个文件,然后删除.vagrant文件
配置Vagrantfile文件
下述配置文件将用来快速构建三个虚拟机
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "k8s-node#{i}" do |node|
# 设置虚拟机的Box
node.vm.box = "./virtualbox.box"
# 设置虚拟机的主机名
node.vm.hostname="k8s-node#{i}"
# 设置虚拟机的IP(public_network:桥接 private_network:仅主机)
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
# 设置主机与虚拟机的共享目录
# node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"
# VirtaulBox相关配置
node.vm.provider "virtualbox" do |v|
# 设置虚拟机的名称
v.name = "k8s-node#{i}"
# 设置虚拟机的内存大小
v.memory = 4096
# 设置虚拟机的CPU个数
v.cpus = 2
end
end
end
end
上述文件配置了虚拟机的私有IP ,并分配了静态IP地址,需要保证该地址不会与其他地址冲突
node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"
另外:
config.vm.network "forwarded_port", guest: 80, host: 8080 用来配置端口转发
重新构建虚拟机
vagrant up
等待三台虚拟机的构建,构建完成后virtualBox如图:
连接虚拟机
1、可以直接通过ssh方式登录虚拟机
直接在构建目录中打开cmd窗口
vagrant ssh k8s-node1
即可登录 k8s-node1 虚拟机,此时用户非root,通过:su root 切换root用户 默认密码vagrant
其他两台虚拟机登录方式同上,只需更改虚拟机名称即可
2、通过xsheel登录
虚拟机默认权限不支持远程连接登录,需要修改虚拟机
文件sshd_config
vi /etc/ssh/sshd_config
键入 i 编辑,找到这两处配置解开注释,并且修改为yes, :wq保持退出
PermitRootLogin yes
PasswordAuthentication yes
然后重启sshd
systemctl restart sshd
然后就可以通过xsheel链接啦!通过ip addr查看虚拟机的ip地址 root 用户名密码默认都是vagrant。
另:vagrant常用命令如下
w$ vagrant box add NAME URL #添加一个box
$ vagrant box list #查看本地已添加的box
$ vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove NAME
$ vagrant init NAME #初始化,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant destroy #销毁虚拟机
$ vagrant reload #重启虚拟机
$ vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
$ vagrant ssh #进入虚拟环境
打包
$ vagrant package 当前要被打包的系统名 --output 打包到的地址/包名
对于二次构建虚拟机失败
1、首先清除vbox虚拟机列表
2、在vagrantbox存储文件下删除boxes 和 data文件下的数据
构建的文件夹下只保留centos7镜像和Vagrantfile文件,然后重新vagrant up构建虚拟机。