发布于 2015-12-17 02:58:09 | 276 次阅读 | 评论: 0 | 来源: PHPERZ
Vagrant 创建虚拟化开发环境
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它 使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。
Archlinux 在众多 Linux 发行版中算是比较复杂的,虽然多次安装后会基本记住步骤,但如果是虚拟机用户总是那么记忆页着实麻烦,但滚动式更新使得 Archlinux 为一个开发者友好的发行版。
Vagrant 是一个很好的虚拟机管理器,一个文件夹一个虚拟机,而且可以方便的管理虚拟机环境。可以快速的在各个平台部署虚拟机。
于是我便突发奇想,要不自己创建一个 Vagrant Box 好了,以后就不用如此繁杂的安装 Archlinux ,以后每隔一段时间更新一下然后重新打包一个就好了。并且可以在各个平台切换时快速部署环境。
于是便去看了 Create A Base Box 创建了一个,但在初始化时总是遇到很奇怪的问题,然后搜索了半天,参考一个德语 blog 的记录创建了,然后还是有点小问题,但是最终还是解决了,在此想记录一下步骤。
成功安装 Vagrant 以及 VirtualBox,我这里采用的是 Windows 的包管理器 Chocolatey 自动安装的
新建一个虚拟机,内存 512MB,动态磁盘最大大小,禁掉 Audio 和 USB (不知道为什么我的USB禁不掉)
启动虚拟机,按照自己的风格安装好系统,然后 arch-chroot
入系统
配置好一大堆的有的没的,然后引导方式,要确保以下几个包已安装sudo openssh virtualbox-guest-utils-nox
*如果你要用图像界面请安装对应的包
添加用户 vagrant 并设置密码为 vagrant
,同时也请确保 root 用户密码为 vagrant
修改/etc/sudoers
,将%wheel ALL=(ALL) NOPASSWD: ALL
的注释去掉,并添加vagrant ALL=(ALL) NOPASSWD: ALL
然后将 vagrant 添加入 wheel
和 vboxsf
组
创建文件 /etc/modules-load.d/virtualbox.conf
往里面添加内容 vboxguest
\nvboxsf
如果使用图像界面请添加vboxvideo
确保以下服务已经 enable sshd vboxservice
在 vagrant 用户目录下面创建.ssh
文件夹,并将官方提供的公钥添加至其中并命名为authorized_keys
11. 确保 /home/vagrant/.ssh/authorized_keys
权限为 0600
12. 确保 /home/vagrant/.ssh/
权限为 0700
13. 将整个目录分配给 vagrant 用户
14. 整个系统安装配置完成,重启后,打包便能正常使用
以下代码为第 4 步开始后的步骤
=<
输入
$
系统提示符
==
操作说明
$ pacman -S sudo openssh virtualbox-guest-utils-nox wget
$ useradd -m -g users -s /bin/bash vagrant
$ passwd vagrant
=< vagrant
=< vagrant
$ visudo
== 去掉注释: %wheel ALL(ALL) NOPASSWD: ALL
== 添加行: vagrant ALL(ALL) NOPASSWD: ALL
$ gpasswd -a vagrant wheel
$ gpasswd -a vagrant vboxsf
$ nano /etc/modules-load.d/virtualbox.conf
=< vboxguest
=< vboxsf
== save file
$ systemctl enable vboxservice
$ systemctl enable sshd
$ mkdir -p /home/vagrant/.ssh
$ wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
$ chmod 0600 /home/vagrant/.ssh/authorized_keys
$ chmod 0700 /home/vagrant/.ssh
$ chown -R vagrant:users /home/vagrant
$ exit
$ umount /mnt
有一些细节大概没有写上去,但是大致上是如此,如果有不太清楚的地方可以去看看之前提及的德语 blog 查看。
但一定要记住在模块加载里面写上 virtualbox-guest-utils-nox 之中的模块!即第 8 步的内容。否则会无法通过虚拟机启动时的挂载验证!