文章

Vagrant相关

Vagrant相关

[TOC]

vagrant 介绍

为什么使用Vagrant?

开发人员通常使用virtualbox或者vmware在个人电脑上开启虚拟机,以便进行开发调试的测试,或做一些测试。直接使用virtualbox或vmware使用虚拟机时,操作比较麻烦,不能向docker一样对虚拟机进行命令行式的操作和打包,也不便同时在本机管理多个虚拟机系统。在某些场合,例如,我们希望在本机构建一套具备多个Node的k8s环境时,我们更希望能够使用命令行对虚拟机进行批量管理。 vagrant 工具提供了这种操作便利。

什么是Vagrant

vagrant 是虚拟机系统管理工具,提供使用命令行快速进行虚拟机创建、打包、导入及管理等功能。vagrant 并不实际提供虚拟机服务,而是使用 virtualbox 或者 vmware 提供的虚拟服务功能。

vagrant中,虚拟机系统可以被打包成 box文件,我们可以从 vagrant 官网查询下载到很多默认的 box,其中包括 centOSUbuntu 等许多主流操作系统制作的 box 文件。这些 box 文件其实并不神秘,他们是由virtualbox或vmware原始的虚拟机文件压缩而成。下载box后,可以将box导入到vagrant中进行管理,导入的过程实际上是将box文件拷贝到vagrant的box目录下,并给box文件进行重新命名。

导入box文件后,可以通过vagrant init 命令,基于某个box创建虚拟机。这项操作的本质是在当前路径下创建 .Vagrantfile 文件,用于对虚拟机的配置信息进行描述,我们可以通过修改 .Vagrantfile 文件的方式,修改虚拟机的配置。一个Vagrantfile 中,可以配置多台虚拟机。

.Vagrantfile 文件创建完毕后,即可通过 vagrant up 命令启动虚拟机。此命令实际上是根据 vagrantfile 的配置,调起 virtualbox 或 vmware 的服务,打开虚拟机文件,以便启动虚拟机。

虚拟机启动后,可以使用 vagrant ssh 命令登录到虚拟机上,对虚拟机进行操作。vagrant ssh 实际上采用本地配置的私钥文件登录虚拟机,我们也可以登录后修改虚拟机配置,使虚拟机开启或关闭 vagrant ssh 登录支持(实际上是开启或关闭私钥登录)。

对虚拟机进行修改后,我们可以使用vagrant package命令将虚拟机打包成box文件,以便后续便捷地基于本次修改批量创建虚拟机。这项操作在我们希望组件多节点k8s服务时非常有用。我们可以在一台虚拟机上安装好docker,k8s等基础组件后,通过打包成box文件的方式,批量创建k8s节点虚拟机。需要注意的是,如果我们希望打包的虚拟机被重新创建时,可以支持 vagrant ssh 登录,我们需要将vagrant的默认公钥添加到ssh的公钥列表中,后续章节中将会域详细的描述。

vagrant 基本命令

① vagrant box基本命令

序号 命令 功能
1 vagrant box list 列出本地环境中所有的box
2 vagrant box add box-name box-url 添加box到本地vagrant环境
3 vagrant box remove box-name 删除本地环境中指定的box
4 vagrant box update box-name 更新本地环境中指定的box
5 vagrant box repackage box-name 重新打包本地环境中指定的box

② vagrant基本命令

序号 命令 功能
1 vagrant init box-name 在空文件夹初始化虚拟机  
2 vagrant up 在初始化完的文件夹内启动虚拟机
3 vagrant ssh 登录启动的虚拟机
4 vagrant suspend 挂起启动的虚拟机
5 vagrant reload 重启虚拟机
6 vagrant halt 关闭虚拟机
7 vagrant status 查找虚拟机的运行状态
8 vagrant destroy 销毁当前虚拟机
9 vagrant package –output new-box-name 打包当前正在运行的虚拟机为box文件

执行以上命令时记得先 cd 到包含虚拟机配置的路径下(D:/centos7

创建和管理TK虚拟机

① 下载和保存box文件

下载地址:\\tkoffice\share\4 公共共享\4-3 软件共享\开发软件\linux开发 下载CentOS-7.6-x86_64_191206a.box文件,保存到 D:\box_file 目录。

② 将box文件加入本地vagrant环境

在 cmd 窗口执行命令:

1
vagrant box add centos7-64 D:\box_file\CentOS-7.6-x86_64_191206a.box

③ 初始化虚拟机

新建空目录:D:\centos7,在 cmd 窗口 cd 到该目录,执行命令:

1
vagrant init centos7-64

命令执行完毕后会在目录下创建 vagrantfile 文件。

④ 启动虚拟机

执行cmd命令:

1
vagrant up

命令执行完毕,虚拟机即启动,同时会在目录下创建 .vagrant 目录。

⑤ SSH登录虚拟机

执行cmd命令:

1
vagrant ssh

将以 ssh 协议登录虚拟机,接下来就是常规的 linux 命令操作了,不详述。

⑥ Vagrant配置

修改 Vagrantfile 文件,如下: 配置端口映射:

1
config.vm.network "forwarded_port", guest: 8080, host: 8088

配置私有网络:

1
config.vm.network "private_network", ip: "192.168.33.10"

配置共享目录(首先需要新建目录 D:\share_centos7):

1
config.vm.synced_folder "../share_centos7", "/vagrant_data"

配置内存大小为 2G:

1
2
3
4
5
6
config.vm.provider "virtualbox" do |vb|
  # Display the VirtualBox GUI when booting the machine
  # vb.gui = true
  # Customize the amount of memory on the VM:
  vb.memory = "2048"
end

配置完毕后,执行cmd命令:

1
vagrant reload

虚拟机将重新启动,并加载最新配置。

注意:以上目录、名称等参数部分可以根据需要自行调整。

本文由作者按照 CC BY 4.0 进行授权