使用Vagrant和VirtualBox一步步地建立一个Base Box

box集合  http://www.vagrantbox.es/git

Vagrant和VirtualBox软件的安装步骤省略,去官网下载最新的版本而后下一步下一步地安装就好了,和正常的安装软件没有什么区别。下面看看利用vagrant和virtualbox若是一步步打造出本身的可复用性强的开发环境。github

开始前确保您的计算机支持虚拟化技术,在BIOS中能够开启。shell

1、在virtualbox中新建一个虚拟机

我这里使用的是CentOS-6.5-x86_64-minimal.iso这个镜像文件来安装的,1G内存,8G虚拟硬盘的配置(后面能够修改)。虚拟机名为centos。ubuntu

安装好后该虚拟机已经自带了ssh服务,若是没有,须要本身先进行安装。centos

开启虚拟机,并登录root用户。缓存

2、配置虚拟机

建立admin用户组网络

[root@localhost ~]# groupadd admin

建立vagrant用户并添加到admin用户组ssh

[root@localhost ~]# useradd -g admin vagrant

为vagrant用户设置密码,密码为vagrant(会提示密码太弱,能够不用管它)工具

[root@localhost ~]# passwd vagrant

修改sudoers文件ui

[root@localhost ~]# vi /etc/sudoers

在该文件添加下面两行代码,并注释掉requiretty行

Defaults env_keep="SSH_AUTH_SOCK"
%admin ALL=NOPASSWD: ALL

配置网卡:将ONBOOT=no 改成 ONBOOT=yes

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:25:4A:9A
TYPE=Ethernet
UUID=751ae3bb-eb75-4f60-b5c3-7f1afa1dfce1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

配置好网卡后须要重启网络服务:

[root@localhost ~]# service network restart

3、设置端口转发

配置virtualbox端口转发(NAT模式)

主机ip127.0.0.1

主机端口22(或者其余未被占用端口,最好仍是设置成22)

子系统ip能够在虚拟经过ifconfg命令查看到,即eth0网卡的ip地址

子系统端口为22

设置好端口转发规则以后,就能在本地的命令行工具(Xshell,putty..)里经过命令 ssh root@127.0.0.1 链接到该虚拟机。

4、添加vagrant公钥,使vagrant用户能够免密码ssh链接该虚拟机

在虚拟机里切换到vagrant用户

[root@localhost ~]# su vagrant
[vagrant@localhost root]$ cd ~
[vagrant@localhost ~]$

而后执行:

[vagrant@localhost ~]$ mkdir ~/.ssh/
[vagrant@localhost ~]$ cd ~/.ssh
[vagrant@localhost .ssh]$ sudo yum -y install wget
[vagrant@localhost .ssh]$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant
[vagrant@localhost .ssh]$ wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant
[vagrant@localhost .ssh]$ mv vagrant.pub authorized_keys

清理缓存

[vagrant@localhost .ssh]$ sudo yum clean all

而后关闭此虚拟机,经过virtualbox将其电源关闭

5、打包生成box文件

在本地命令行进入该虚拟机目录

cd Users\Admin\VirtualBox VMs\centos\

进行打包

vagrant package --output mycentos.box --base centos

完成以后你将会在C:\Users\Admin\VirtualBox VMs\centos目录下看到一个mycentos.box文件,个人这个文件有544M。

VirtualBox VMs这个目录能够在virtualbox全局设定-常规里进行修改

到此一个Base Box就制做完成了。

这个box是很干净的,而后能够在这个box的基础上去搭建本身的开发环境,好比lnmp等等。再次进行打包,最后一个带开发环境的box就作好了,能够本身用也能够分发给其余小伙伴使用,不用之后每次都要去搭建一遍环境。

6、附上vagrant经常使用操做命令

vagrant box list 查看在vagrant里已经安装了哪些box

vagrant box add name boxname.box 添加一个本地的box镜像到vagrant 这个box镜像能够本身制做也能够使用网上的(vagrant box add ubuntu ubuntu/trusty64)

vagrant init name 初始化一个虚拟机,这个name是经过vagrant box list查看

vagrant up 启动虚拟机 在virtualbox中能够看到启动后的虚拟机,第一次启动时时间会长一点

vagrant ssh 链接虚拟机

vagrant reload 重启虚拟机

vagrant status 查看虚拟机当前状态

7、常见问题处理

问题1:

default: in which case you may ignore this message.
==> default: Mounting shared folders...
default: /vagrant => E:/vagrantbox/centos67
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=500,gid=500 vagrant /vagrant

The error output from the command was:

mount: unknown filesystem type 'vboxsf'

上面这样的问题能够执行下命令 vagrant plugin install vagrant-vbguest ,而后重启vagrant reload来解决。

问题2:

vagrant up的时候出现 “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\admin.vagrant.d\boxes\centos7\0\virtualbox相似这样的目录下面的Vagrantfile文件

修改type配置项: config.vm.synced_folder “.”, “/vagrant”, type: “virtualbox”

相关文章
相关标签/搜索