Vagrant 简要介绍
vagrant 是一个开源的基于Ruby的虚拟机生命周期管理工具,可以自动化创建、管理和销毁各种类型的虚拟机,包括 Virtualbox 、VMware、kvm、docker 等。其主要功能有如下:
- 创建、删除虚拟机
- 配置虚拟机参数
- 管理虚拟机运行状态
- 自动化配置和安装开发环境
- 打包和分发虚拟机环境
Vagrant 中的各种概念:
- Box:Vagrant 虚拟环境中的“包”,个人理解是一个虚拟机镜像,与 Docker 中的镜像有点类似,用于快速分发虚拟环境(其实也不快,毕竟是个虚拟机,随便一个就几 GB)
- Vagrantfile:一个用于描述虚拟环境的配置文件,总体上来看会和
docker-compose.yml
的概念更加接近,在 Vagrantfile 中可以配置需要启动的虚拟机的配置,hostname、网络和第一次启动后的安装脚本,并且 Vagrantfile 支持启动多个虚拟机(因此说他是虚拟环境的配置文件) - Provision:用于指定在 Vagrant 配置并启动好虚拟机后的安装脚本,这个一般只在第一次
vagrant up
时执行。 - Networking:虚拟环境中的网络配置,更多介绍可以见Vagrant 网络
- Provider:由于 Vagrant 只是一个虚拟环境管理工具,因此其本身并没有任何虚拟化的相关功能,所有虚拟化相关的功能都需要通过一个虚拟机软件来支持,这个虚拟机软件就被称为 Provider,常见的 Provider 有 Virtualbox、VMware、docker 等。
Vagrant Quick Start
下面过程以 Ubuntu 20 为例:
- 安装 Vagrant:
sudo apt-get install vagrant
- 如果没有 Virtualbox 的话,需要额外安装 Virtualbox:
sudo apt-get install virtualbox
- 如果没有 Virtualbox 的话,需要额外安装 Virtualbox:
- 初始化环境:
vagrnat init
。最好在某个空文件夹中执行,该文件夹只与当前虚拟环境相关。 - 导入一个 Box 到本地
- 这里选择从清华镜像源中下载并导入
- 需要先去镜像仓库中找到一个对应版本的
.box
文件的网址 - 然后使用
vagrant add
命令添加,如vagrant box add ubuntu20 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/base/server/daily/focal/20220215/focal-server-cloudimg-amd64-vagrant.box
- 修改 Vagrantfile,
config.vm.box = "ubuntu20"
- 启动环境:
vagrant up
- 使用ssh连接虚拟机,
vagrant ssh
,默认用户名和密码均为vagrant
,且sudo
不需要输入密码
Vagrant cheat sheet
# 在当前文件夹下初始化 => 创建一个 Vagrant
vagrant init
# 增加一个 Vagrant Box
vagrant box add <box-name> # 从 Vagrant Cloud 中下载 Vagrant Box
vagrant box add <box-name> <url/file> # 给定网址或者文件中下载 Vagrant Box
# 根据当前文件夹下的 Vagrant 创建、初始化并启动虚拟机
vagrant up
# 使用 ssh 连接虚拟机
vagrant ssh [vm name]
# 删除虚拟机
vagrant destropy
Vagrant Tips
修改镜像存储位置
- 修改 Box 存储位置:在
.bashrc
或者.zshrc
中加入export VAGRANT_HOME="/path/to/dir"
- 修改虚拟机存储的位置:需要修改 provider 的默认设置,以 Virtualbox 为例,
vboxmanage setproperty machinefolder /path/to/dir