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网络配置