VirtualBox在官网下载比较慢,可以在清华大学开源软件镜像站中搜索下载
https://mirrors.tuna.tsinghua.edu.cn/

安装VirtualBox-6.1.26-145957-Win.exe,及扩展文件:Oracle_VM_VirtualBox_Extension_Pack-6.1.26.vbox-extpack
可以在 VirtualBox 主菜单 管理-全局设定-扩展,点右边的加号来安装扩展文件

打开virtualbox管理器,管理–>全局设定–>常规,将默认虚拟电脑位置改为D:\VirtualBox VMs

 

Vagrant下载地址:
https://releases.hashicorp.com/vagrant/2.2.18/vagrant_2.2.18_x86_64.msi

更改Vagrant的Home目录位置,添加环境变量: 更改Vagrant的Home目录位置,添加环境变量:
VAGRANT_HOME
D:\vagrant\.vagrant.d

创建新的虚拟机

#创建目录,存放自动生成的Vagrantfile(也可以手动编写Vagrantfile文件)
cd D:\vagrant\centos7

#初始化当前目录使其成为Vagrant环境目录
#vagrant init centos/7	// 下载速度太慢,使用国内的镜像
vagrant init centos7 https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box

#安装并启动虚拟机(在包含Vagrantfile文件的目录中,执行此命令启动虚拟机)
vagrant up

#连接虚拟机
vagrant ssh 

#退出连接
exit

#停止虚拟机
vagrant halt

#查看帮助
vagrant -h		

 

设置密码登录配置项,使用xshell远程连接服务器

cd D:\vagrant\centos7
vagrant up
vagrant ssh 

#切换root用户,默认的密码是vagrant
su			

#sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
#把PasswordAuthentication no 修改成yes,保存并退出
vi /etc/ssh/sshd_config

#重启ssh服务
service sshd restart

#查看服务器ip,默认为10.0.2.15
ip addr		

#设置主机名称
hostnamectl set-hostname node1
#或者使用 vi /etc/hostname 也可以修改主机名

#修改hosts文件
vi /etc/hosts
192.168.1.14 node1
192.168.1.184 node2

#安装网络工具包,包含ifconfig等
yum install -y net-tools
#安装sz、rz
yum install -y lrzsz 

 

vagrant默认使用Virtualbox提供的NAT网络模型,IP地址为10.0.2.15。
将网络模型修改为桥接网络:

用编辑器打开D:\vagrant\centos7\Vagrantfile文件,添加:
config.vm.network “public_network”

保存后,执行命令:

vagrant reload   
vagrant ssh  
#查看新的ip地址(注意查看eth1的ip地址,和宿主机在同一个网段中,外网可以直接访问到。可以安装docker+nginx做一下访问的测试)  
ip addr	

打开xshell工具,填入ip地址,用户名/密码:root/vagrant

 

给虚拟机设置一个静态ip
1.在window命令行中,ipconfig
以太网适配器 VirtualBox Host-Only Network #5:
IPv4 地址 . . . . . . . . . . . . : 192.168.99.1
获取到VirtualBox的网段:192.168.99

2.修改d:/vagrant/centos7/Vagrantfile文件
config.vm.network “private_network”, ip: “192.168.99.10”

3.重启虚拟机

vagrant reload  
ping 192.168.99.10	# 在window中ping一下linux,检查网络是否连通

vagrant ssh 

#查看服务器ip  
ip addr   

exit

#在linux中ping一下window,检查网络是否连通
ping 192.168.31.136


#关闭服务器
vagrant halt
#清理服务器
vagrant destroy

手动编写Vagrant文件,循环生成多台服务器

Vagrant.configure("2") do |config|
   (1..3).each do |i|
        config.vm.define "k8s-node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"
            node.vm.box_url = "https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/CentOS-7.box"

            # 设置虚拟机的主机名
            node.vm.hostname="k8s-node#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.99.#{199+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 = 3072
                # 设置虚拟机的CPU个数
                v.cpus = 4
            end
        end
   end
end

有多台服务器时,首次连接服务器使用命令 vagrant ssh 服务器名称,如:
vagrant ssh k8s-node1
再修改文件 /etc/ssh/sshd_config
把PasswordAuthentication no 修改成yes,重启ssh服务后,就会可以使用xshell连接服务器了。


服务器重名无法启动的问题

虚拟机如果使用完后,在VirtualBox界面中把服务器删除了
在下次使用 vagrant up 启动原来的脚本时,可能会出现错误:The name of your virtual machine couldn’t be set because VirtualBox is reporting another VM with that name already exists.
需要在VirtualBox对应的VirtualBox VMs中,删除对应服务器名称的文件夹
在 管理–>全局设定–>常规 可以看到VirtualBox VMs的位置,如:
D:\software\Oracle\VirtualBox\VirtualBox VMs


Vagrant启动异常的问题

使用vagrant up启动服务器时出现错误:

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "105842d7-8e0f-41ef-a1bd-6a0892eee8a2", "--type", "headless"]

Stderr: VBoxManage.exe: error: The VM session was closed before any attempt to power it on
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component SessionMachine, interface ISession

使用windows的任务管理器,在后台关闭VirtualBox的进程,重新执行vagrant up启动服务器


Vagrant突然无法访问外网的坑

有时CentOS服务器突然无法访问外网,只能先使用 vagrant halt 关闭服务器,在任务管理器中关闭VirtualBox后台进程
使用 vagrant up 重启服务器


参考文档:
超详细的 Vagrant 上手指南
vagrant网络配置

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐