简介

Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境,Vagrant 的运行,需要依赖某项具体的虚拟化技术,最常见的有 VirtualBox 以及 VMWare 两款,早期 Vagrant 只支持 VirtualBox,后来才加入了VMWare 和 Hyper-V 的支持。

我们可以使用它来干如下这些事:

  • 建立和删除虚拟机
  • 配置虚拟机运行参数
  • 管理虚拟机运行状态
  • 自动配置和安装开发环境
  • 打包和分发虚拟机运行环境

    环境安装

virtualbox下载地址:https://www.virtualbox.org/wiki/Downloads
Hyper-V:window10 专业版自带的虚拟机,需要在Windows功能中开启(使用Hyper-V的话可以不安装virtualbox)
vagrant下载地址:https://www.vagrantup.com/downloads.html

说明:如果安装了 docker for windows 的话,直接用 Hyper-V 就可以了,如果再安装 virtualbox 两个软件之间会有冲突。

基本命令

在 Vagrant 中,有个 box(箱子) 的概念,类似于 docker 体系中的 image(镜像)。基于同一个 box,不同的人可以运行得到相同的虚拟环境。
直接从官网仓库下载 box 很慢,这里建议提前从国内的镜像仓库下载好 box,手动添加到本地 vagrant 环境中。

vagrant box 命令

  1. # 查看本地环境中所有的box
  2. vagrant box list
  3. # 添加box到vagrant环境
  4. vagrant box add box-name
  5. # 添加本地的box到vagrant环境
  6. vagrant box add -name 'centos/7' [box放置的位置]
  7. # 删除本地环境中指定的box
  8. vagrant box remove box-name
  9. # 更新本地环境中指定的box
  10. vagrant box update box-name

vagrant 命令

  1. # 在空文件夹初始化虚拟机
  2. vagrant init [box-name]
  3. # 在初始化完的文件夹内启动虚拟机
  4. vagrant up
  5. # ssh登录启动的虚拟机
  6. vagrant ssh
  7. # 挂起启动的虚拟机
  8. vagrant suspend
  9. # 重启虚拟机
  10. vagrant reload
  11. # 关闭虚拟机
  12. vagrant halt
  13. # 查看虚拟机的运行状态
  14. vagrant status
  15. # 销毁当前虚拟机
  16. vagrant destroy

创建CentOS7虚拟机

因为我本机安装了 docker for windows ,所以以 Vagrant + Hyper-V 为例记录安装过程。使用 virtualbox 安装过程也是差不多的。

下载 box

centos7的镜像仓库:https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/
因为我本机安装了 docker for windows ,开启了 Hyper-V,所以我下载的是 CentOS-7.HyperV.box 版本,如果是 VirtualBox 请下载相应版本 box。

box 添加到本地环境

  1. # windows系统注意路径用 /
  2. vagrant box add -name 'centos/7' F:/vagrant/box/centos7-hyperv.box

初始化虚拟机

创建一个文件夹,用于保存初始化之后生成的 Vagrantfile 文件,这个文件表示 Vagrant 对虚拟机的一些配置文件

  1. vagrant init centos/7 --provider hyperv

启动虚拟机

  1. vagrant up

连接虚拟机

启动之后通过 vagrant ssh 命令连接虚拟机,如果用的是 cmd 可能会存在下面的报错:

  1. F:\homestead>vagrant ssh
  2. `ssh` executable not found in any directories in the %PATH% variable. Is an
  3. SSH client installed? Try installing Cygwin, MinGW or Git, all of which
  4. contain an SSH client. Or use your favorite SSH client with the following
  5. authentication information shown below:
  6. Host: 127.0.0.1
  7. Port: 2222
  8. Username: vagrant
  9. Private key: H:/homestead/.vagrant/machines/homestead-7/virtualbox/private_key

解决办法:
1、cmd中执行以下命令(临时有效,新开cmd窗口需要再次执行)

  1. set PATH=%PATH%;C:\Program Files\Git\usr\bin

2、添加 git 安装目录路径至系统环境变量中(按照自己的安装路径)

使用 Xshell 工具连接虚拟机

安装成功后,直接通过 Xshell 工具是无法连接虚拟机的,所以需要进入虚拟机去修改一些配置。
1、通过 vagrant 命令进入虚拟机(或者通过 Hyper-V 进入虚拟机,默认账号和密码都是:vagrant

  1. vagrant ssh

2、修改root密码,默认root是没有密码的,修改完了之后,切换到root用户

  1. # 修改密码
  2. sudo passwd root
  3. # 切换到 root
  4. su root

3、进入文件夹/etc/ssh,修改配置文件sshd_config

  1. cd /etc/ssh
  2. vi sshd_config
  3. # 修改前
  4. # To disable tunneled clear text passwords, change to no here!
  5. # PasswordAuthentication yes
  6. #PermitEmptyPasswords no
  7. PasswordAuthentication no
  8. # 修改后
  9. # To disable tunneled clear text passwords, change to no here!
  10. PasswordAuthentication yes
  11. #PermitEmptyPasswords no
  12. PasswordAuthentication no

4、重启sshd.service服务

  1. systemctl restart sshd.service

5、本地使用Xshell连接虚拟机,运行命令如下:

  1. # 虚拟机地址和端口在启动的时候可以看到
  2. ssh 127.0.0.1 22001