一、Vagrant是什么?
vagrant是一个操作虚拟机的工具.是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。 通过命令和配置文件来管理虚拟机,很快就能完成一套开发环境的部署,并可以打包传播,统一了开发环境,也解决了重复配置环境的麻烦.
二、Vargant的好处
1. Vagrant会创建共享文件夹,用来在主机和虚拟机之间进行资源共享;
2. Vagrant通过添加box镜像进行快速部署,部署完毕后可以通过package进行打包分发,避免二次重建环境;
3. Vagrant可以使用puppet、chref等管理工具进行自动化配置部署;
4. Vagrant支持单机模拟多台机器,且支持一个配置文件Vagrantfile就可以跑分布式系统。
三、准备工作
win7下建议安装版本
1.vagrant_1.8.6.msi
2.VirtualBox-5.1.24-117012-Win.exe
win10下建议安装版本
1.vagrant_1.8.7.msi/vagrant_1.9.7_x86_64.msi
2.VirtualBox-5.1.24-117012-Win.exe
我这里是Win10系统,刚开始不清楚,装的是最新的VirtualBox-5.2.8-121009-Win.exe+Vagrant 2.1.1启动就报错,后来上网一搜说是版本不兼容造成的。我这里有两台电脑都是win10的有台电脑上死活装不上,有台电脑却能装上。。跟win10系统版本也有关系?我这系统版本是:
四、进行安装
1.安装VirtualBox
VirtualBox安装就不多说了,一直下一步下一步就行了。
2.安装Vagrant
Vargrant下载win版的,然后一直下一步下一步就行了。
3.下载package.box
去vagrant官网下载一个package.box 文件,box文件就是一个系统的镜像文件 :http://www.vagrantbox.es/
4.把虚拟机加载到box容器中
下载好之后,在该目录下执行命令加载镜像文件到Vagrant中去:
vagrant box add centos7 xxxx.box
centos7是给虚拟机起的名字,随意写。然后可以通过以下命令查看,当前vagrant下有那些可用
C:\Users\fendo>vagrant box list centos7 (virtualbox,0)
5.初始化虚拟机
在你想要创建虚拟机的目录下,执行以下命令进行初始化
vagrant init centos7
会生成一个Vagrantfile文件,该文件就是Vagrant的配置文件。
6.启动虚拟机
在该目录下输入:
vagrant up
启动报错:
E:\OS_WORK\Node1>vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: Node1_default_1525964151077_64147 "rsync" could not be found on your PATH. Make sure that rsync is properly installed on your system and available on the PATH.
修改:
C:\Users\{your_username}\.vagrant.d\boxes\centos7\0\virtualbox\Vagrantfile
原配置:
Vagrant.configure("2") do |config| config.vm.base_mac = "525400cae48b" config.vm.synced_folder ".","/vagrant",type: "rsync" end
改为:
Vagrant.configure("2") do |config| config.vm.base_mac = "525400cae48b" config.vm.synced_folder ".",type: "virtualbox" end
然后启动,报如下错误:
E:\OS_WORK\Node1>vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: No guest additions were detected on the base box for this VM! Guest default: additions are required for forwarded ports,shared folders,host only default: networking,and more. If SSH fails on this machine,please install default: the guest additions and repackage the box to continue. default: default: This is not an error message; everything may continue to work properly,default: in which case you may ignore this message. ==> default: Mounting shared folders... default: /vagrant => E:/OS_WORK/Node1 Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context,the command attempted was: mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant The error output from the command was: mount: unknown filesystem type 'vboxsf'
中文意思就是:
vagrant 无法装载VirtualBox的共享文件夹,因为文件系统"vboxsf"无法使用. 这个文件系统通过VirtualBox客户添加内核模块获得,请确认是否被正确安装. 这不是vagrant的问题,而是VirtualBox引起的问题. 请尝试执行,以下命令: mount -t vboxsf -o uid=1001,gid=1001 work_ /work 命令输出的错误信息为: sbin/mount.vboxsf:挂载失败:找不到这个文件或目录
网上说的是,是Vagrant没有安装VBoxGuestAdditions,下面来手工安装VitrualBox的这个增强功能:
●使用命令
E:\OS_WORK\Node1>vagrant halt ==> default: Attempting graceful shutdown of VM...
停止已在运行的虚拟机
●启动VirtualBox中的虚拟机
直接在VirtualBox中启动虚拟机,如下所示进行登录:
输入默认用户名 : vagrant,登录密码 : vagrant
●挂载并安装VBoxGuestAdditions
挂载办法如下所示:设备->安装增强功能
提示以下错误
手动安装下,在VirtualBox安装目录下找到VBoxGuestAdditions.iso
加载进来,之后重启下,使用以下命令安装VBoxGuestAdditions
sudo mount /dev/cdrom /media/cdrom cd /media/cdrom/ sudo ./VBoxLinuxAddtions.run
发现还是不行,然后又执行以下命令更新了下系统
sudo yum update sudo yum install gcc sudo yum install kernel-devel exit #退出虚拟机 vagrant halt # 关闭虚拟机
后面还是不行。然后使用vagrant命令进行安装
E:\OS_WORK\Node1>vagrant plugin install vagrant-vbguest Installing the 'vagrant-vbguest' plugin. This can take a few minutes... Installed the plugin 'vagrant-vbguest (0.15.1)'!
之后重启
E:\OS_WORK\Node1>vagrant reload --provision ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key ==> default: Machine booted and ready! [default] No installation found. Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.shu.edu.cn * extras: mirrors.shu.edu.cn * updates: mirrors.shu.edu.cn Package kernel-devel-3.10.0-862.2.3.el7.x86_64 already installed and latest version Package gcc-4.8.5-28.el7.x86_64 already installed and latest version Package binutils-2.27-27.base.el7.x86_64 already installed and latest version Package 1:make-3.82-23.el7.x86_64 already installed and latest version Package 4:perl-5.16.3-292.el7.x86_64 already installed and latest version Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version Nothing to do Copy iso file C:\Program Files\Oracle\VirtualBox/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso Mounting Virtualbox Guest Additions ISO to: /mnt mount: /dev/loop0 is write-protected,mounting read-only Installing Virtualbox Guest Additions 5.1.24 - guest version is unknown Verifying archive integrity... All good. Uncompressing VirtualBox 5.1.24 Guest Additions for Linux........... VirtualBox Guest Additions installer Copying additional installer modules ... Installing additional modules ... vboxadd.sh: Starting the VirtualBox Guest Additions. Could not find the X.Org or XFree86 Window System,skipping. Redirecting to /bin/systemctl start vboxadd.service Redirecting to /bin/systemctl start vboxadd-service.service Unmounting Virtualbox Guest Additions ISO from: /mnt ==> default: Checking for guest additions in VM... ==> default: Mounting shared folders... default: /vagrant => E:/OS_WORK/Node1