文章目录
前言
最近在学习谷粒商城,谷粒商城在构建虚拟机环境就是使用的vagrant工具来进行快速构建,之前并没有接触过,就进行完整梳理与实战了下,使用完之后感觉真的很香,极其推荐!
Vagrant是构建在虚拟化技术之上的虚拟运行环境管理工具。通过使用Vagrant我们可以快速去构建我们想要的虚拟环境,同样其搭配virtualbox来进行使用,通过构建vagrantfile我们可以来快速的进行创建、启动、挂起、重启虚拟机,以及其还附带ssh工具来进行连接!
所有博客文件目录索引:博客目录索引(持续更新)
一、下载安装Vargant
对于virtualbox的安装与配置可以看我之前写的一篇博客:VirtualBox安装与配置
Vargant下载地址:https://www.vagrantup.com/downloads
官方镜像下载:https://app.vagrantup.com/boxes/search
- Centos镜像网址:http://cloud.centos.org/centos/
- Ubuntu镜像下载网站:http://cloud-images.ubuntu.com/
链接:https://pan.baidu.com/s/19Xk2S9UDWM3mzmkEUmkWOw
提取码:rnyt
双击来进行安装即可,安装完成之后需要你去重启,重启好了之后,我们打开cmd来测试一下vagrant是否已经配置好了环境变量:
vagrant
二、自定义vagrant相关安装路径
2.1、自定义box安装存储位置
在安装好vagrant之后,默认的box已经其他存储路径是在c盘的用户目录下的 .vagrant.d 目录下:
如何去自定义位置呢?
新建环境变量,自定义一个文件夹并将环境变量指向过去:
VAGRANT_HOME
D:\software\vagrantbox\VirtualBox.vagrant.d
同时我们将原本C盘中的内容拷贝过去:
2.2、自定义虚拟机安装目录
在使用vagrant去创建的虚拟机都会默认在C盘中去进行创建,这与我们在virtualbox里的全局设定有关:
我们只需要对其默认虚拟电脑位置修改下即可!
三、配置详解
Vagrant系列(二)Vagrant的配置文件Vagrantfile详解
vagrant+virtualbox虚拟机创建全流程,问题处理以及过程讲解,初始安装不放C盘,初始化硬盘空间设置,ssh连接超时,基础镜像下载等等
内存与cpu核数
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# 对应指定的镜像
config.vm.box = "centos7"
# 配置静态网址(与当前电脑的ip地址要对应)
config.vm.network "private_network", ip: "169.254.5.168"
config.vm.provider "virtualbox" do |vb|
# 内存8G
vb.memory = "8192"
# CPU4核
vb.cpus = 4
end
end
四、命令大全整理
# 查询当前管理的盒子
vagrant box list
# 添加指定的vagrant的box镜像到vagrant中
# 语法:vagrant box add box的文件路径及文件名 --name centos8,后面-name表示指定名字
# 根据名字删除指定的box
# 语法:vagrant box remove NAME
# ---虚拟机相关命令---
# 新建虚拟机
# 语法:vagrant init [boxname] # 加上boxname 表示使用指定box名创建虚拟机
# 启动虚拟机命令
vagrant up
# 查看虚拟机状态
vagrant status
# 停止虚拟机
vagrant halt
# 暂停虚拟机
vagrant suspend
# 重启虚拟机
vagrant reload
# 恢复虚拟机 | 不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行
vagrant resume
# 删除虚拟机
vagrant destroy
# ---辅助命令---
# 使用vagrant自带的ssh工具去连接当前目录下的虚拟机
vagrant ssh
五、实战
5.1、安装一个centos7虚拟机
5.1.1、提前准备镜像centos7
若是想要直接从远程拉取命令安装的可直接跳过这步直接执行:
Vagrant init centos/7
由于从远程拉取默认会从对应的vagrant镜像网站去拉取指定版本的centos,时间肯定会很长,我们采取另一种方式,先把对应centos7的box文件下载下来,安装到vargrant中,接着去进行初始化,一系列操作如下:
①下载centos7的box文件
官网的centos7的镜像:centos7镜像,我们直接去国内的中科大镜像源:centos7-vagrant
我们可以通过命令来确定下载源地址:
vagrant init centos/7
vagrant up
获取到源下载地址:https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
直接下载的话会很慢,我这边下好了直接取就可:
链接:https://pan.baidu.com/s/1ieASF3r35X1wWxpfsw_x_g
提取码:dl6z
②将centos7中的box文件添加到vagrant中,并取名字为centos7
# 指定路径的box文件设置别名为centos7
vagrant box add D:\software\vagrantbox\boxes\Centos7.box --name centos7
命令效果:
4.1.2、初始化centos7
当前初始化时基于本地的centos7的box文件,我们在上节将其名为centos7了。
初始化命令,此时我们将创建了vagrantfile文件:
# centos7是之前盒子的别名
vagrant init centos7
在当前目录中就会有一个Vagrantfile文件。
4.1.3、启动与连接centos7(vagrant自带ssh与ssh图形化连接)
启动centos7系统
初始化文件好了之后,我们就来启动这个vagrantfile,执行启动命令:
vagrant up
此时已经成功启动我们的centos7系统!
默认的用户名与密码为:
vagrant
vagrant
注意:请在启动命令的文件目录中不要出现中文、空格符的情况!
配置源内容如下:
# 备份原yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用新yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 生成缓存
yum makecache
连接centos7
方式一:使用vagrant的ssh工具来进行连接(无需输入用户名与密码)
vagrant ssh
方式二:虚拟机显示窗口或者使用ssh连接GUI工具
虚拟机显示窗口运行:
图形化工具连接:
①私钥登录
vagrant默认不允许使用用户名与密码来进行登录,而是使用私钥登录:
私钥在当前vagrantfile同路径下的.vagrant目录下:
C:\Users\93997\Desktop\guli-mall\vagrantfile\centos7\.vagrant\machines\default\virtualbox
ok,此时登录成功!
②用户名与密码登录
su root # 默认root密码为vagrant
我们需要修改配置文件:
vi /etc/ssh/sshd_config
修改配置信息如下:
PermitRootLogin yes # 允许直接通过root账号登录
PasswordAuthentication yes # 可以通过密码登录
重启sshd令其生效:
sudo systemctl restart sshd
接着我们就可以使用用户名与密码来进行登录了!
额外:自定义ip地址连接
默认的话就是通过127.0.0.1也就是本地地址及通过端口转发来进行访问的虚拟机,这样的话对于开发不太方便,我们可以去修改固定的IP地址,操作如下:
①首先查看当前你电脑的virtualbox的ip地址
②根据子网掩码我们自定义一个ip地址:169.254.5.168
打开刚刚的vagrantfile,来进行编辑:
接着我们来尝试虚拟机与主机互ping一下:
最后尝试使用下SSH图形化工具finalshell连接一下。
参考资料
[1]. Vagrant 入门使用教程
[2]. 使用Vagrant在命令行快速创建虚拟机
[3]. 解决使用第三方软件连接vagrant虚拟机连接问题