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