Home Vagrant
Post
Cancel

Vagrant

Vagrant 是一个对虚拟机进行管理的工具,使用前需要先安装好虚拟机 VirtualBox

Mac 可以直接通过 brew 安装,Windows 系统需要下载安装包。

1
2
brew install --cask virtualbox
brew install --cask vagrant

Vagrant 有个 box 的概念,这个可以理解为一个安装好的 iso 文件。

Boxes are the package format for Vagrant environments. A box can be used by anyone on any platform that Vagrant supports to bring up an identical working environment.

Vagrant Cloud 上能够搜索很多 box 进行安装。

通常使用 Vagrantfile 进行虚拟机的配置,不仅方便,也能保证在不同环境下所建立的虚拟机都是相同的配置。

以下是一个 Vagrantfile 示例,其创建 3 个虚拟机,直接在该文件所在目录执行 vagrant up,vagtrant 就会帮助创建虚拟机,创建出来的虚拟机在 virtualbox 里也是可以直接看到的。

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
Vagrant.configure(2) do |config|
    # 指定使用 ubuntu 20.04 镜像
    config.vm.box = "ubuntu/focal64"

    # 指定虚拟机为 virtualbox
    config.vm.provider "virtualbox" do |vb|
        # 指定资源可以使用 4G 内存和 4 个 cpu
        vb.memory = 4096
        vb.cpus = 4
    end

    # 循环 2 次
    (1..2).each do |i|
        # 创建虚拟机,虚拟机名称为 node1,node2
        config.vm.define "node#{i}" do |node|
            # 配置 hostname
            node.vm.hostname = "node#{i}"
            # 配置机网络
            node.vm.network "private_network", ip: "192.168.56.1#{i}"
            # 配置端口映射,guest 是虚拟机,host 是本机
            node.vm.network "forwarded_port", guest: 80, host: "908#{i}"
            node.vm.network "forwarded_port", guest: 90, host: "909#{i}"
            # 配置目录映射,[hostdir, vmdir, type]
            node.vm.synced_folder "app#{i}", "/vagrant", "virtualbox"
        end
    end

    # 单独创建一个虚拟机
    config.vm.define "manage" do |manage|
        manage.vm.hostname = "manage"
        manage.vm.network "private_network", ip: "192.168.56.2"
    end
end

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 启动 vm
vagrant up

# ssh vm
vagrant ssh

# 停止 vm
vagrant halt

# 删除 vm
vagrant destroy

# 检查状态
vagrant gloabl-statuss
This post is licensed under CC BY 4.0 by the author.