如何用iso文件创建Vagrant的Box

虽然Vagrant官网上已经有了很多OS的box,比如Ubuntu,CentOS,Debian等,但像RHEL这种不免费的OS,Vagrant上面就没有它的box,如果需要用到RHEL的box,我们就需要自己来制作。下面讲下从iso文件到box文件的一个制作过程。

准备

在制作box文件之前,我们需要安装下面的软件:

  • Vagrant: 这个没必要说了,我们就是要制作它的box文件。
  • VirtualBox: 跟VMWare一样的虚拟机软件,不过它是免费的。
  • Veewee: 这是一款可以轻松创建Vagrant的box文件的工具,它还可以创建KVM和其他虚拟机镜像。

这些软件的安装我就不介绍了,请到软件网站自行了解。

使用Veewee创建Box

  • 首先查找Veewee下面有哪些VirtualBox的模板,下面的vbox表示VirtualBox,当然你也可以换成其他的虚拟机工具。
1
$ veewee vbox templates
  • 命令会列出veewee可以用的模板,如果我们要制作RHEL6.5的Box,可以找CentOS6.5的模板来制作。
1
$ veewee vbox define rhel65-64bit 'CentOS-6.5-x86_64-netboot'
  • 命令执行完后,会在当前目录下产生一个definitions的文件夹,这时我们需要修改下面的一些文件。
1
$ vi definitions/rhel65-64bit/definition.rb

definition.rb是Veewee的创建脚本,我们将其中的iso-file的值修改为iso的文件名,比如rhel-server-6.5-x86_64-dvd.iso,其他iso开头的选项可以不修改或删除。

definition.rb
1
2
3
4
5
6
7
Veewee::Session.declare({
  ...
  ...
  :iso_file => "rhel-server-6.5-x86_64-dvd.iso",
  ...
  ...
  })
  • 然后下载rhel6.5的iso文件,上网查一下资源还是比较多的,这里就不贴iso文件的链接了,怕链接以后会失效,请自行搜索。
  • 在当前目录下创建iso的子文件夹,将下载的iso文件放到这个文件夹中。
1
2
$ mkdir iso
$ mv /your/iso/path/rhel-server-6.5-x86_64-dvd.iso iso
  • 执行命令创建Box,然后去喝杯咖啡,等一会儿回来看看RHEL6.5的VM应该就创建好了。
1
$ veewee vbox build 'rhel65-64bit'
  • 进到VirtualBox的虚拟机目录(比如在OSX下是~/VirtualBox VMs),进行vagrant创建box文件操作。
1
2
$ cd ~/VirtualBox\ VMs/rhel65-64bit/
$ vagrant package --base rhel65-64bit --output rhel65-64bit.box
  • 最后使用vagrant启动vm,正常启动证明我们的box已经正确创建了。
1
2
3
$ vagrant box add --name rhel65-64bit rhel65-64bit.box
$ vagrant init rhel65-64bit
$ vagrant up

手动创建Box

如果想手动创建Box也是可以的,不过比较麻烦,下面是手动创建Box的一些注意事项,注意以下命令都是在你的VM进行操作,所以首先要能ssh到VM,没有ssh的话需要先安装ssh。

  • 安装一些基本的软件,比如ssh, wget, curl等。
  • 设置root用户密码为vagrant
  • 新增用户vagrant,密码也是设置为vagrant
  • 修改visudo的配置,让vagrant用户使用sudo时不需要输入密码。
1
$ visudo

在最后一行增加以下内容:

visudo
1
vagrant ALL=(ALL) NOPASSWD:ALL
  • 安装Guset Additions,这个是为了可以使用vagrant来创建共享文件夹。
1
2
3
4
$ wget http://download.virtualbox.org/virtualbox/4.3.18/VBoxGuestAdditions_4.3.18.iso
$ sudo mkdir -p /media/VBoxGuestAdditions
$ sudo mount -o loop,ro VBoxGuestAdditions_4.3.8.iso /media/VBoxGuestAdditions
$ sudo /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
  • 修改ssh配置,让vagrant可以无密码ssh登陆VM。
1
2
3
4
5
6
$ cd /home/vagrant
$ mkdir .ssh
$ wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ chown -R vagrant:vagrant .ssh

上面这些做好以后,就可以退出VM,后面的步骤就跟Veewee创建Box一样了,就是使用vagrant来生成box文件,添加box,启动VM。

Comments