安装方法: 1、安装vagrant 2、再安装virtualbox 具体不写了,太繁琐。 https://developer.hashicorp.com/vagrant/install?product_intent=vagrant https://www.virtualbox.org/wiki/Downloads

你可能好奇,不是安装了virtualbox虚拟机吗,干嘛还去安装什么vagrant

因为使用vagrant安装虚拟机实在是太方便了,那为什么要再安装virtualbox ,因为virtualbox只作为后端,可以不用打开。两者缺一不可

设置环境变量(可选)

  • VAGRANT_HOME .vagrant.d 默认目录
  • VAGRANT_DEFAULT_PROVIDER #使用哪种虚拟机 默认virtualbox

路径设置(可选)

  • virtualbox的全局设定:Linux虚拟机安装位置
  • .vagrant.d 路径 :环境变量里设置 默认~/.vagrant.
  • Vagrantfile 配置文件路径

教程开始

1、初始化 Vagrantfile 配置

在当前目录下打开终端,输入以下命令初始化:

1
vagrant init

会在当前目录生成一个Vagrantfile文件

2、修改配置:

清空Vagrantfile里面的内容,把以下内容添加到 Vagrantfile 文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Vagrant.configure("2") do |config|
  
  config.vm.box = "generic/ubuntu2204"
  
  # 规格配置
  config.vm.provider :virtualbox do |vbox|
    vbox.name    = "ubuntu-1"
    vbox.cpus    = 1
    vbox.memory  = 1024
    vbox.customize ['modifyvm', :id, '--graphicscontroller', 'vmsvga']
  end
  
  
  # 修改hostname,更新/etc/hosts
  config.vm.hostname = "ubuntu-1"
  

  # 公有网络 设置静态ip
  config.vm.network "public_network", ip: "192.168.1.99"

end

3、添加镜像box

box可以理解为打包好的虚拟机镜像,就像安装windows虚拟机一样,

官方镜像下载地址:https://app.vagrantup.com/boxes/search

提供一个国内下载地址:https://www.123pan.com/s/cjqrVv-Wm69d.html

下载好之后,假如你放在D:\box目录,使用以下命令添加,

1
  vagrant box add generic/ubuntu2204 D:\box\ubuntu2204.box

注意:generic/ubuntu2204对应 Vagrantfile 文件里的 config.vm.box = "generic/ubuntu2204"

也就是说,要先添加镜像,这个镜像名称是:generic/ubuntu2204

如果你在官网下载其他的镜像,下载到本地后可能不是.box后缀,修改改成.box

注意看上面图片的 ubuntu/trusty64 就是镜像名称,添加的时候使用命令改成:

1
  vagrant box add ubuntu/trusty64 D:\box\trusty64.box

Vagrantfile 也要改成 config.vm.box = "ubuntu/trusty64"

4、创建虚拟机

1
vagrant up

5、登录虚拟机

1
vagrant ssh

6、批量创建虚拟机

配置文件如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
vm_list = [
  { # hash map
    "name" => "node-1",
    "cpu" => "2",
    "mem" => "2048",
    "ip_addr" => "192.168.1.10"
  },
  {
    "name" => "node-2",
    "cpu" => "1",
    "mem" => "1024",
    "ip_addr" => "192.168.1.11"
  },
  {
    "name" => "node-3",
    "cpu" => "1",
    "mem" => "1024",
    "ip_addr" => "192.168.1.12"
  }
]

Vagrant.configure(2) do |config|

   config.vm.box = "generic/ubuntu2204"

   vm_list.each do |item|
        config.vm.define item["name"] do |node|

            node.vm.provider "virtualbox" do |vbox|
              vbox.name = item["name"];  # 虚拟机名称
              vbox.memory = item["mem"]; # 内存
              vbox.cpus = item["cpu"];   # CPU
            end
            # 设置hostanme
            node.vm.hostname = item["name"]
            # 设置IP
            node.vm.network "public_network", ip: item["ip_addr"]

        end
    end

end

命令后面加虚拟机的名字,可以单独操作虚拟机:

vagrant up node-1
vagrant halt node-1
vagrant reload node-1
vagrant destroy node-1
vagrant provision node-1

SSH的私钥也分别存放在.vagrant虚拟机名对应的目录下

1
ssh vagrant@192.168.1.10 -i .vagrant/machines/虚拟机名称/virtualbox/private_key

常用命令

重启:

1
vagrant reload --provision #--provision修改配置后

查看box:

1
vagrant box list

连接虚拟机

1
vagrant ssh

常用命令

1
vagrant reload #重新配置虚拟机
1
vagrant halt #关闭虚拟机 
1
vagrant destroy #删除虚拟机  
1
vagrant suspend #休眠  
1
vagrant resume #唤醒
1
vagrant box remove #移除box

查看IP:

1
ip addr show ens33 #ens33是接口名称,使用 ip addr 查看

查看默认路由:

1
ip route show