1、安装Virtualbox 下载地址:Downloads – Oracle VM VirtualBox 建议修改 默认虚拟电脑位置 的存放位置。

2、安装Vagrant 下载地址:Install | Vagrant | HashiCorp Developer 建议修改 VAGRANT_HOME 的环境变量值。

3、下载Box镜像(我用的虚拟机软件是Virtualbox,所以下载Box镜像的时候也要下载Virtualbox版本的镜像) 下载地址:Discover Vagrant Boxes - Vagrant Cloud (vagrantup.com)

4、添加Box镜像

vagrant box add debian_buster ./debina11.box # 假设我下载的box镜像文件名为debian11.box
或
vagrant box add ./debian11.box --name debian_buster 

vagrant box list # 查看box列表

5、Vagrant操作

vagrant up #启动虚拟机
或
vagrant up debian (config.vm.define "debian" 打开Virtualbox GUI界面设置的虚拟机名称)

vagrant reload #重启虚拟机
或
vagrant reload debian 

vagrant halt #关闭虚拟机
或
vagrant halt debian 

vagrant suspend #挂起虚拟机
或
vagrant suspend debian 

vagrant resume #恢复虚拟机
或
vagrant resume debian 

vagrant ssh #ssh连接虚拟机(Linux使用)
或
vagrant ssh debian 

vagrant destroy -f #删除该目录下所以虚拟机
或
vagrant destroy debian 

vagrant global-status #查看虚拟机状态
vagrant status 

6、生成Vagrantfile

vagrant init #生成Vagrantfile config.vm.box="base" 可自行修改镜像名
vagrant init debian_buster  #这里是指定box镜像创建虚拟机配置文件
vagrant init debian_buster https://app.vagrantup.com/generic/boxes/debian11/versions/4.2.12/providers/virtualbox.box #这里省略了下载box和添加box的操作,不推荐使用,速度慢

7、自定义Vagrantfile

Vagrant.configure("2") do |config|
    # box 配置
    config.vm.box = "centos7"  # 指定要使用的镜像
    # master 配置
    config.vm.define "k8s_master",primary: true do |master|
        master.vm.hostname = "master"
        master.vm.network "private_network",ip:"192.168.56.10"
        master.vm.provider: virtualbox do |vb|
            vb.name = "k8s_master"
            #vb.gui = "true"
            vb.memory = 4096
            vb.cpus = 2
        end
    end
    # node1 配置
    config.vm.define "node1",primary: true do |node1|
        node1.vm.hostname = "node1"
        node1.vm.network "private_network",ip:"192.168.56.11"
        node1.vm.provider: virtualbox do |vb|
            vb.name = "node1"
            #vb.gui = "true"
            vb.memory = 4096
            vb.cpus = 2
        end
    end
    # node-B 配置
    config.vm.define "node2",primary: true do |node2|
        node2.vm.hostname = "node2"
        node2.vm.network "private_network",ip:"192.168.56.12"
        node2.vm.provider: virtualbox do |vb|
            vb.name = "node2"
            #vb.gui = "true"
            vb.memory = 4096
            vb.cpus = 2
        end
    end
end