Vagrant相关
[TOC]
vagrant 介绍
为什么使用Vagrant?
开发人员通常使用virtualbox或者vmware在个人电脑上开启虚拟机,以便进行开发调试的测试,或做一些测试。直接使用virtualbox或vmware使用虚拟机时,操作比较麻烦,不能向docker一样对虚拟机进行命令行式的操作和打包,也不便同时在本机管理多个虚拟机系统。在某些场合,例如,我们希望在本机构建一套具备多个Node的k8s环境时,我们更希望能够使用命令行对虚拟机进行批量管理。 vagrant 工具提供了这种操作便利。
什么是Vagrant
vagrant 是虚拟机系统管理工具,提供使用命令行快速进行虚拟机创建、打包、导入及管理等功能。vagrant 并不实际提供虚拟机服务,而是使用 virtualbox 或者 vmware 提供的虚拟服务功能。
vagrant中,虚拟机系统可以被打包成 box文件,我们可以从 vagrant 官网查询下载到很多默认的 box,其中包括 centOS,Ubuntu 等许多主流操作系统制作的 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
虚拟机将重新启动,并加载最新配置。
注意:以上目录、名称等参数部分可以根据需要自行调整。