Vagrant 虚拟机工具基本操作指南
#虚拟机 #
#vargant#
#ubuntu#
虚拟机virtualbox ,VMWare及WSL等大家都很了解了,那Vagrant是什么东西?
它是一组命令行工具,可以象Docker管理容器一样管理虚拟机,这样快速创建和管理虚拟机集群。
vagrant的只是一组前端管理工具,而具体的虚拟机还得由相应虚拟机软件比如 virtualbox和vmware来实现。
那为什么不直接使用虚拟机呢?原因是在很多开发中,对于ubuntu的版本很敏感,
因此我们需要一个快速创建指定版本操作系统的工具,而vagrant正好就这样工具.
一.安装VirtualBox 和vagrant
1.1 Ubuntu下安装
1.1.1 安装virtualbox
sudo apt install virtualbox virtualbox-ext-pack
安装成功后在系统菜单会出现virtual box 图标
1.1.2 安装vagrant
下载安装文件
wget https://releases.hashicorp.com/vagrant/2.3.7/vagrant_2.3.7-1_amd64.deb
安装
sudo apt install ./vagrant_2.3.7-1_amd64.deb
测试版本为 virtualbox 版本为 6.1.38 , Vagrant 2.3.7
1.2 Windows下安装
1.2.1 virtualbox 安装
首先从下载最新的virtualbox 虚拟机安装包,安装即可
目前的链接是 https://download.virtualbox.org/virtualbox/7.0.10/VirtualBox-7.0.10-158379-Win.exe
然后下载virtualbox 扩展包,这是usb捕获必须的,下载后在virualbox的界面里安装
7.0以下版本是 安装方法在主菜单 -->管理 --> 全局设定--> 扩展 ,在右侧点击带加号的小图标,添加新包,选择刚下载的扩展包即可。
7.0 版本安装是 主菜单 -->管理 -->工具-->扩展包管理器,增加安装图标,选择刚下载扩展包即可
1.2.2 vagrant 安装
从官网下载安装包
目前安装是
https://releases.hashicorp.com/vagrant/2.3.7/vagrant_2.3.7_windows_amd64.msi
下载后一路安装即可.
二. vagrant创建虚拟机
在创建虚拟机之前,我们需要知道几个概念,vagrant创建虚拟机是基于它的模板文件box来创建。
创建虚拟机后,必须明显的指定一个目录创建虚拟机,然后所有虚拟机的命令必须在这个目录下操作,否则会报错。
后面我将以home/sguav/vagrant 为虚拟机目录
vagrant 操作虚拟机主要通过修改一个名叫Vagrantfile的配置文件,它实际是一个ruby脚本,这个文件就放在虚拟机目录下。
创建虚拟机中的box可以从vagrant官方的映像库下载,也能从第三方映像库下载,比如清华大学的映像站,也能从本地一个指定的box文件创建。
2.1 官方映像库
我们下载一个指定版本映像,可以在vagrant 官方映像库查看其相关映像,
注意不同虚拟机后端的box文件是不一样,所以如果有vmware box建议下载,而最全是virtualbox 格式,还有libvirt虚拟机
而且我看vagrant支持后端非常多
我们打开一个 18.04的支持,这里提供一个5种不同的映像
并且提供几种不同的初始化方法。
,
2.2 初始化虚拟机
初始化虚拟机主要形成一个配置文件Vagrantfile文件
在官方里已经有示例,首先新建一个虚拟机目录,这里假设 /home/sguav/vagrant,以下全在这个目录操作
使用init 子命名初始化。
以下几个样例
初始化ubuntu 20.04来处理。
vagrant init generic/ubuntu-20.04
初始化ubuntu 18.04 并使用第三方的映像库中的box
vagrant init ubuntu-bionic https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/bionic/current/bionic-server-cloudimg-amd64-vagrant.box
成功后会在这个目录创建一个Vagrantfile
cpp
v
a
g
r
a
n
t
i
n
i
t
u
b
u
n
t
u
−
b
i
o
n
i
c
h
t
t
p
s
:
/
/
m
i
r
r
o
r
s
.
t
u
n
a
.
t
s
i
n
g
h
u
a
.
e
d
u
.
c
n
/
u
b
u
n
t
u
−
c
l
o
u
d
−
i
m
a
g
e
s
/
b
i
o
n
i
c
/
c
u
r
r
e
n
t
/
b
i
o
n
i
c
−
s
e
r
v
e
r
−
c
l
o
u
d
i
m
g
−
a
m
d
64
−
v
a
g
r
a
n
t
.
b
o
x
A
'
V
a
g
r
a
n
t
f
i
l
e
'
h
a
s
b
e
e
n
p
l
a
c
e
d
i
n
t
h
i
s
d
i
r
e
c
t
o
r
y
.
Y
o
u
a
r
e
n
o
w
r
e
a
d
y
t
o
'
v
a
g
r
a
n
t
u
p
'
y
o
u
r
f
i
r
s
t
v
i
r
t
u
a
l
e
n
v
i
r
o
n
m
e
n
t
!
P
l
e
a
s
e
r
e
a
d
t
h
e
c
o
m
m
e
n
t
s
i
n
t
h
e
V
a
g
r
a
n
t
f
i
l
e
a
s
w
e
l
l
a
s
d
o
c
u
m
e
n
t
a
t
i
o
n
o
n
'
v
a
g
r
a
n
t
u
p
.
c
o
m
'
f
o
r
m
o
r
e
i
n
f
o
r
m
a
t
i
o
n
o
n
u
s
i
n
g
V
a
g
r
a
n
t
.
h
x
y
@
s
g
−
h
x
y
−
u
b
u
n
t
u
:
/
h
o
m
e
/
s
g
u
a
v
/
v
a
g
r
a
n
t
vagrant init ubuntu-bionic https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/bionic/current/bionic-server-cloudimg-amd64-vagrant.box A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. hxy@sg-hxy-ubuntu:/home/sguav/vagrant
vagrantinitubuntu−bionichttps://mirrors.tuna.tsinghua.edu.cn/ubuntu−cloud−images/bionic/current/bionic−server−cloudimg−amd64−vagrant.boxA'Vagrantfile'hasbeenplacedinthisdirectory.Youarenowreadyto'vagrantup'yourfirstvirtualenvironment!PleasereadthecommentsintheVagrantfileaswellasdocumentationon'vagrantup.com'formoreinformationonusingVagrant.hxy@sg−hxy−ubuntu:/home/sguav/vagrant ls
Vagrantfile
当然你也可以直接编写一个Vagrantfile 文件,作用跟init指令差不多
参见映像网站样列,编写如下一个文件放在VagrantFile 目录
安装18.04
cpp
Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu1804"
end
安装 20.04
lua
Vagrant.configure("2") do |config|
config.vm.box = "generic/ubuntu2004"
end
2.3 激活虚拟机
激活虚拟机会做两个动作,一,如果本地的不存所需要的box,会从相应用网址下载。二,创建真正的虚拟机文件。
在vagrant目录下执行如下语句即可激活
vagrant up
如果后端是vmware ,则需要如下参数进行激活。
vagrant up -- provider=vmware_desktop
激活成功后,会自动启动
2.4 虚拟机基本操作
登录虚拟机终端,新建虚拟机不需要密码,直接进入
vagrant ssh
这是一个登录运行实例
cpp
v
a
g
r
a
n
t
s
s
h
W
e
l
c
o
m
e
t
o
U
b
u
n
t
u
18.04.6
L
T
S
(
G
N
U
/
L
i
n
u
x
4.15.0
−
212
−
g
e
n
e
r
i
c
x
8
6
6
4
)
∗
D
o
c
u
m
e
n
t
a
t
i
o
n
:
h
t
t
p
s
:
/
/
h
e
l
p
.
u
b
u
n
t
u
.
c
o
m
∗
M
a
n
a
g
e
m
e
n
t
:
h
t
t
p
s
:
/
/
l
a
n
d
s
c
a
p
e
.
c
a
n
o
n
i
c
a
l
.
c
o
m
∗
S
u
p
p
o
r
t
:
h
t
t
p
s
:
/
/
u
b
u
n
t
u
.
c
o
m
/
a
d
v
a
n
t
a
g
e
S
y
s
t
e
m
i
n
f
o
r
m
a
t
i
o
n
a
s
o
f
F
r
i
J
u
l
2803
:
22
:
18
U
T
C
2023
S
y
s
t
e
m
l
o
a
d
:
0.18
P
r
o
c
e
s
s
e
s
:
101
U
s
a
g
e
o
f
/
:
2.9
M
e
m
o
r
y
u
s
a
g
e
:
13
S
w
a
p
u
s
a
g
e
:
0
E
x
p
a
n
d
e
d
S
e
c
u
r
i
t
y
M
a
i
n
t
e
n
a
n
c
e
f
o
r
I
n
f
r
a
s
t
r
u
c
t
u
r
e
i
s
n
o
t
e
n
a
b
l
e
d
.
0
u
p
d
a
t
e
s
c
a
n
b
e
a
p
p
l
i
e
d
i
m
m
e
d
i
a
t
e
l
y
.
E
n
a
b
l
e
E
S
M
I
n
f
r
a
t
o
r
e
c
e
i
v
e
a
d
d
i
t
i
o
n
a
l
f
u
t
u
r
e
s
e
c
u
r
i
t
y
u
p
d
a
t
e
s
.
S
e
e
h
t
t
p
s
:
/
/
u
b
u
n
t
u
.
c
o
m
/
e
s
m
o
r
r
u
n
:
s
u
d
o
p
r
o
s
t
a
t
u
s
N
e
w
r
e
l
e
a
s
e
′
20.04.6
L
T
S
′
a
v
a
i
l
a
b
l
e
.
R
u
n
′
d
o
−
r
e
l
e
a
s
e
−
u
p
g
r
a
d
e
′
t
o
u
p
g
r
a
d
e
t
o
i
t
.
v
a
g
r
a
n
t
@
u
b
u
n
t
u
−
b
i
o
n
i
c
:
vagrant ssh Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-212-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Fri Jul 28 03:22:18 UTC 2023 System load: 0.18 Processes: 101 Usage of /: 2.9% of 38.70GB Users logged in: 0 Memory usage: 13% IP address for enp0s3: 10.0.2.15 Swap usage: 0% Expanded Security Maintenance for Infrastructure is not enabled. 0 updates can be applied immediately. Enable ESM Infra to receive additional future security updates. See https://ubuntu.com/esm or run: sudo pro status New release '20.04.6 LTS' available. Run 'do-release-upgrade' to upgrade to it. vagrant@ubuntu-bionic:~
vagrantsshWelcometoUbuntu18.04.6LTS(GNU/Linux4.15.0−212−genericx8664)∗Documentation:https://help.ubuntu.com∗Management:https://landscape.canonical.com∗Support:https://ubuntu.com/advantageSysteminformationasofFriJul2803:22:18UTC2023Systemload:0.18Processes:101Usageof/:2.9Memoryusage:13Swapusage:0ExpandedSecurityMaintenanceforInfrastructureisnotenabled.0updatescanbeappliedimmediately.EnableESMInfratoreceiveadditionalfuturesecurityupdates.Seehttps://ubuntu.com/esmorrun:sudoprostatusNewrelease′20.04.6LTS′available.Run′do−release−upgrade′toupgradetoit.vagrant@ubuntu−bionic: sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
停止虚机
执行下面的命令可以关闭虚机:
text
vagrant halt
直接在 VirtualBox 上关闭虚机,或者直接在虚机内部执行 poweroff
命令也都是可以的。
暂停虚机
执行下面的命令可以暂停虚机:
text
vagrant suspend
恢复虚机
执行下面的命令把暂停状态的虚机恢复运行:
text
vagrant resume
注意: 不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up
来让虚机恢复运行。
重载虚机
执行下面的命令会重启虚机,并且重新加载 Vagrantfile
中的配置信息:
text
vagrant reload
删除虚机
最后,执行下面的命令可以彻底删除虚机,包括整个虚机文件:
text
vagrant destroy
注意: 在当前这个小例子中,上面所有的 vagrant
命令都需要在 Vagrantfile
所在的目录下执行。
三.虚拟机的一些常见配置