Vagrant-基本使用

Vagrant 官方文档
Vagrant Github 地址

介绍

Vagrant 是一个用于构建和管理虚拟化环境的开源工具, 其为多个虚拟化平台 (本地如 VirtualBox, VMware, 云如 AWS, OpenStack) 提供统一的配置文件, 简化配置和管理过程.

安装

在 Archlinux 上可直接用 pacman 装:

1
sudo pacman -S vagrant

测试

这里用 VirtualBox 简单测试 vagrant 的功能. 确保安装 virtualbox 及其依赖, 在 Archlinux 上为:

1
sudo pacman -S virtualbox virtualbox-host-dkms

确保 vboxnetflt, vboxnetadp, vboxdrv 模块已加载:

1
lsmod | grep vbox

若没加载, 可手动:

1
sudo modprobe vboxdrv vboxnetflt vboxnetadp

之后:

1
2
3
4
cd
mkdir vagrant-test
vagrant init hashicorp/bionic64
vagrant up
  • vagrant init hashicorp/bionic64 指定用 hashicorp/bionic64 作为基础镜像, 其会在当前目录生成一个 Vagrantfile 文件, 包含描述虚拟机的各种配置
    1
    ls -a
  • vagrant up 会下载对应的 box 文件并启动虚拟机

之后可以用:

1
vagrant ssh

连接到虚拟机, 用 logout 退出.

删除该虚拟机可用:

1
vagrant destroy

相关概念

Vagrantfile

Vagrantfile 所在目录会被标记为 project 的根目录, vagrant 的许多配置都是相对于这个目录. 该文件也描述了 project 所需的资源, 比如要下载哪些软件.

box

在 Vagrant 中, box 是一个打包好的虚拟机镜像 (在一个公共的 box 库上拉取), 其包含一些基本配置共 Vagrant 创建和管理虚拟机.

每一个 box 都可以被当作一个基础模板, 用户可以在其之上进一步配置和定制.

注意 box_name 分两部分, 如 hashicorp/bionic64, 前者是构建该 box 的用户名, 后者是 name. (一个 namespace 来区分不同用户上传的镜像)

拉取 box

默认从 Vagrant Cloud 拉取, 语法如:

1
vagrant box add <box_name>

如:

1
vagrant box add hashicorp/bionic64

可指定版本, 如:

1
vagrant box add hashicorp/bionic64 --box-version 1.0.282

也可从自定义 URL 下载:

1
vagrant box add custom_box https://example.com/path/to/your_box.box

查找可用的 box

可以上 https://portal.cloud.hashicorp.com/vagrant/discover 找.

查看本地已有的 Box

1
vagrant box list 

移除本地的某个 box

1
vagrant box remove <box_name>

如:

1
vagrant box remove hashicorp/bionic64

使用一个 box

创建一个 Vagrantfile 文件, 向其添加:

1
2
3
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/bionic64"
end

指定版本如:

1
2
3
4
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/bionic64"
config.vm.box_version = "1.0.282"
end

指定下载链接如:

1
2
3
4
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/bionic64"
config.vm.box_url = "https://vagrantcloud.com/hashicorp/bionic64"
end

之后:

1
vagrant up

即可.

Shared dir

在:

1
vagrant up

启用虚拟机后, 虚拟机内的 /vagrant 目录与 Vagrantfile 所在的目录会是共享目录:

分享 vagrant 环境 (暴露虚拟机的访问)

这里的分享 vagrant 环境指远程连接用 vagrant 创建的虚拟机, 而非分享 vagrant 镜像.

使用 vagrant share 即可. 需要安装一个 Vagrant plugin:

1
vagrant plugin install vagrant-share

可能会有部分依赖的版本冲突:

(暂不解决, 以后搞)

之后运行:

1
vagrant share

即可.

有三种方式:

  • HTTP sharing, 创建一个 URL 供别人访问
  • SSH sharing, 提供 vagrant connect --ssh 来连接 vagrant 环境
  • General sharing, 提供 vagrant connect 直接连接

基本使用

Suspend VM

1
vagrant suspend

会停止 VM 并保留当前的状态, 之后可以用:

1
vagrant up

恢复.

Halt VM

即关机:

1
vagrant halt

同样用:

1
vagrant up

重启.

Destroy VM

即销毁:

1
vagrant destroy

Vagrantfile 配置

开启 X11 转发

默认情况下 Vagrant 不启用 X11 转发, 需要在 Vagrantfile 中添加:

1
2
3
4
5
6
7
8
Vagrant.configure("2") do |config|
...

config.ssh.forward_x11 = true # 启用 X11 转发
config.ssh.forward_agent = true # 可选,用于授权代理转发

...
end

之后:

1
vagrant ssh -- -X

需要先确保安装了 xauth 和一些 X client, 进入 VM 后:

1
sudo apt install -y xauth x11-apps

之后可以运行:

1
xeyes

来测试.


Vagrant-基本使用
http://example.com/2024/10/22/Vagrant-基本使用/
作者
Jie
发布于
2024年10月22日
许可协议