一、Vagrant是什么
vagrant是一个操作虚拟机的工具.是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。通过命令和配置文件来管理虚拟机,很快就能完成一套开发环境的部署,并可以打包传播,统一了开发环境,也解决了重复配置环境的麻烦.
二、Vargant的好处
1.Vagrant会创建共享文件夹,用来在主机和虚拟机之间进行资源共享;
2.Vagrant通过添加box镜像进行快速部署,部署完毕后可以通过package进行打包分发,避免二次重建环境;
3.Vagrant可以使用puppet、chref等管理工具进行自动化配置部署;
4.Vagrant支持单机模拟多台机器,且支持一个配置文件Vagrantfile就可以跑分布式系统。
三、准备工作
需要先安装好 Vagrant 和 VirtualBox 。
win7下建议安装版本
1.vagrant_1.8.6.msi
2.VirtualBox-5.1.24-117012-Win.exe
win10下建议安装版本
1.vagrant_2.2.14_x86_64.msi
2.VirtualBox-6.6.16-140961-Win.exe
四、构建CentOS7虚拟机
4.1 查找
在 https://app.vagrantup.com/boxes/search 下搜索centos:
4.2 安装准备
然后在win10任意盘符下创建Vagrant_vm_centos目录(注意目录最好不要有中文和空格)
4.3 安装
这里我们使用离线安装,如4.1截图,点击【virtualbox】后面的按钮下载离线安装包,下载后拷贝到上面新创建的目录,改名为centos7.box。执行以下命令加载镜像文件到Vagrant中去:
vagrant box add centos7 centos7.box
centos7是给虚拟机起的名字 ,随意写。然后可以通过以下命令查看,当前vagrant下有那些可用:
vagrant box list
初始化虚拟机:
vagrant init centos7
执行完成之后会生成一个Vagrantfile文件,该文件就是Vagrant的配置文件。
我们先用vagrant status命令查看一下虚拟机的状态、我们可以执行vagrant halt来关闭虚拟机:
启动虚拟机的命令为vagrant up,我们也可以使用vagrant suspend命令来暂停运行中的虚拟机,以保持它的运行状态。暂停后可以使用vagrant resume命令来恢复虚拟机:
五、连接虚拟机
5.1 直接连接
5.2 ssh连接
我们在启动时候,发现默认已经开启了ssh连接,并且是公钥连接方式,如下图:
添加公钥,默认路径在虚拟机的安装目录下面 .vagrant\machines\default\virtualbox目录下
注意
:root帐号默认密码为vagrant,如果关闭私钥直接使用密码登陆,需要设置/etc/ssh/sshd-config 中的PasswordAuthentication为yes。
六、目录共享
Vagrant的根目录(就是我们一开始创建的vagrant_vm)和虚拟机里的/vagrant目录是共享的。最开始启动时候日志如下:
那么我们如何通过命令修改为自己的目录呢?
6.1 修改配置文件
虚拟机的配置文件默认就在Vagrant_vm_centos的目录下的Vagrantfile。我们增加如下配置:
config.vm.synced_folder "E:\Program\Vagrant_vm_centos\data", "/vagrant", type: "virtualbox"
6.2 挂载并安装VBoxGuestAdditions
一般会提示无法分配错误,这个时候就需要我们手动挂载了。手动安装下,在VirtualBox安装目录下找到VBoxGuestAdditions.iso
加载进来,之后重启下,使用以下命令安装VBoxGuestAdditions
mkdir /opt/cdrom
mount /dev/cdrom /opt/cdrom
cd /opt/cdrom/
./VBoxLinuxAddtions.run
yum update
yum install gcc
yum install kernel-devel
yum install xorg-x11-server-Xorg
在VirtualBox7以上可能需要安装以下库:
yum install libXt
yum install libXmu
然后还需要安装插件: vagrant-vbguest
关闭虚拟机,执行:
vagrant plugin install vagrant-vbguest
或者执行下面命令,指定下载源:
vagrant plugin install vagrant-vbguest --plugin-source https://gems.ruby-china.com
执行完成后,启动虚拟机在执行
./VBoxLinuxAddtions.run
6.3 共享测试
七、网络配置
7.1 私网配置
配置Vagrantfile
重启虚拟机
然后使用命令vagrant reload重启虚拟机,重启后我们使用ping命令看是否可以在windows上访问到这个ip:
7.2 公网配置
在Vagrantfile里打开下面这行配置
网络环境选择
因为我的本地有线网和无线网全部连接,选择wifi所以选择第二个选项,重启好后连接虚拟机,查看其IP:
八、多主机配置
8.1 多主机安装
使用Vagrant可以轻松地创建多台虚拟主机。下面我们开始通过Vagrant来创建两台新的虚拟主机“node01”和“node02”。创建Vagrant_vm_centos_multi目录,然后通过现有的box来初始化一个Vagrantfile配置:
接着编辑multi目录下的Vagrantfile文件,新增下面两项配置:
1 | config.vm.define "node01" do |node01| |
可以看到多了两台状态为not created的虚拟机,名称分别为“node01”和“node02”。
我们可以使用vagrant up来启动两台主机,也可以通过vagrant up node01来单独启动“node01”这台虚拟主机。
启动后(第一次启动耗时可能比较长),使用vagrant status来查看它们的状态:
通过vagrant ssh 主机名就可以连接上它们了。然后我们参考章节 6.2 ,给两台虚拟机安装VBoxGuestAdditions。
8.2 网络配置
修改Vagrantfile
1 | config.vm.define "node01" do |node01| |
值得注意的是,在配置私有网络的时候,IP网段不能和Windows主机相同。
测试
配置好后重启这两台虚拟机,然后分别连接这两台虚拟机,看是否能够ping通:
配置成功。
8.3 自定义主机名
修改Vagrantfile
1 | config.vm.define "node01" do |node01| |
测试
重启后,连接虚拟机,可以看到hostname已经修改为我们设置的名称了:
8.4 多主机的共享目录
默认的这两台虚拟主机的/vagrant和当前目录Vagrant_vm_centos_multi/是共享的。我们也可以分别为它们设置不同的共享目录。
配置Vagrantfile
编辑Vagrantfile,添加如下配置:
1 | config.vm.define "node01" do |node01| |
然后重启这两台虚拟主机就好了。
测试
九、命令汇总
命令 | 描述 |
---|---|
vagrant init | 初始化vagrant,这会创建一个Vagrantfile文件 |
vagrant up | 启动vagrant,这启动virtualbox虚拟机 |
vagrant halt | 停止vagrant ,这会停止virtualbox虚拟机 |
vagrant suspend | 暂停运行中的虚拟机,以保持它的运行状态 |
vagrant resume | 恢复虚拟机 |
vagrant destroy | 这会彻底删除当前工作目录下的vagrant |
vagrant reload | 重新加载Vagrantfile文件,在每次修改完Vagrantfile文件之后都要执行 |
vagrant provision | 重新执行初始化脚本,在每次修改完初始化脚本文件之后都要执行。初始化脚本文件可以在Vagrantfile中指定,后面会讲到 |
vagrant ssh | 登录到vagrant |
vagrant ssh-config | 查看登录配置,包括用户名,私钥存放地址等 |
vagrant box add | 添加box的操作 |
vagrant box list | 显示当前已经添加的box列表 |
vagrant box remove | 删除相应的box |
vagrant package | 打包命令,可以把当前的运行的虚拟机环境进行打包 |
vagrant plugin | 用于安装卸载插件 |
vagrant status | 获取当前虚拟机的状态 |
vagrant global-status | 显示当前用户Vagrant的所有环境状态 |
更多参考:
https://mrbird.cc/Create-Virtual-Machine-By-Vagrant.html
https://blog.csdn.net/u011781521/article/details/80275212
更多Vagrant的配置可以查看官方文档: https://www.vagrantup.com/docs/