【游民】尝试创建Debian7.4的Vagrant BOX【Debian】
最近玩弄Vagrant+Chef+ServerSpec。或者说,今年几乎确定了如何将它们应用到我们公司的业务中,所以也是为了做好准备而学习。
话虽如此,无论如何首先,为了玩厨师(Chef)和ServerSpec,需要一个小花园。因此,我们将一如既往地使用熟悉的 Debian 来从头开始创建适用于 Vagrant 的基础 BOX。
既然这样,让我们尝试最近发布的 Debian(Wheezy)7.4。
我现在公开了一个名为debian-7.4_c64.box的文件夹。如果您有需要,请使用它。如果有任何不便之处,请随时与我联系。
準備的東西
需要以下的环境。然而,我们家使用的是 OS X Mavericks (10.9.1)。有能力进行阅读理解的人有权继续阅读后续内容。
-
- Debian(Wheezy)ネットワークインストールCD
-
- VirtualBox 4.3.6
- Vagrant 1.4.3
※截止到2014年2月11日
要点
由于Vagrant 1.4.2版本中的package命令存在bug,请务必使用1.4.3版本。
2. 条款前提
顺便说一下,您是否知道创建Vagrant基础框的前提条件呢?貌似有各种各样的方言,但基本要求已经被整理在Vagrant文档中了。当然是这样的。
如果提取这里的内容,似乎需要准备以下必要(或期望)的事项。
游荡基础盒的规定
如果首先要学习 Vagrant Boxes,其中提供了创建 Linux BOX 的示例,那么首先需要遵循这个示例。
-
- 対応したProviderを使うこと。(VirtualBox/VMware)
-
- カスタマイズできる。サンプルとしてAWSのProviderが公開されてる
-
- Package Managerが使えること
vagrantユーザでSSHで接続できること
puppetchefが使えるようになってると(・∀・)イイネ!!
DISKは容量おおきいと困るから、DynamicにResizeできると(・∀・)イイネ!!
メモリは 512MB でいい
AUDIOやUSBなど使いもしないものは disableにしておくこと
vagrant ユーザは、insecure keypairを使ってログインできること
rootのパスワードはvagrant
一番重要なのは、vagrantユーザーがパスワードなしでsudoできること
由于过去的限制或方言的传承,还有其他一些我参考过的内容。
- 手動で Base Box 作成
创建Debian 7.4的基础镜像。
好的,让我们按照规定来安装Debian(Wheezy)7.4吧。将CD装入VirtualBox中并启动。
这次设定如下。
VirtualBox的硬件设置
※没有特别说明的项目保持默认状态。
使用Debian(Wheezy)7.4进行配置。
分割设定
- GUIDED LVM のまま
我们来配置一个用于Vagrant的设置。
在完成安装并启动后,我们将对VirtualBox添加适当的AddOn并进行适合Vagrant的配置。实际要做的事情比我想象中少。或者说,可能只是最基本的配置需求。
安裝 Virtualbox 客用加強工具 (Virtualbox Guest Additions)。
安装完成后,让我们进行一些必要的设置。
由于尚未安装sudo,我将继续以root用户的身份进行操作。
# aptitude update ; aptitude upgarade -y
# aptitude install sudo build-essential module-assistant
# m-a prepare
在VirtualBox中,执行”设备 > 安装增强功能”操作。
# mount /media/cdrom0
# bash /media/cdrom0/VBoxLinuxAdditions.run
※ 参考:在Debian 7 wheezy上安装VirtualBox客户附加组件
没有安装X Window模块,所以在这里会出现针对X Window的编译错误,但我不在意。如果在意的话就输了。
允许vagrant用户无需密码sudo
让我们编辑 /etc/sudoers 文件。请将以下内容放在一个合适的位置。
vagrant ALL=(ALL) NOPASSWD: ALL
这样的话,vagrant用户就可以通过sudo命令运行了( ̄ー ̄)ニヤリ
现在,让我们在这里重新启动一下吧。
给Vagrant用户提供使用Vagrant进行SSH登录的功能
使用vagrant用户,注册一个不安全的密钥对,这样就可以使用vagrant的标准公钥进行ssh登录。这样,我们就能够通过vagrant ssh来进行登录了。太酷了!
vagrant@vagrant-debian-wheezy:~$ sudo aptitude install curl
vagrant@vagrant-debian-wheezy:~$ mkdir .ssh
vagrant@vagrant-debian-wheezy:~$ chmod 700 .ssh
vagrant@vagrant-debian-wheezy:~$ cd .ssh
vagrant@vagrant-debian-wheezy:~/.ssh$ curl -L -o authorized_keys http://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0
100 409 100 409 0 0 70 0 0:00:05 0:00:05 --:--:-- 70
vagrant@vagrant-debian-wheezy:~/.ssh$ chmod 600 authorized_keys
加快启动盒子的小技巧
在这里,我们可以使用一些小技巧来加快Vagrant Box的启动速度。
请在每个设置文件中添加以下设置。
UseDNS NO
更改 grub 的设置后,请使用 sudo update-grub 进行更新。
GRUB_HIDDEN_TIMEOUT=0
让我们开始使用 chef-solo 吧!
最后加入厨师。
在我们家里,最终只需切割食材就可以了,虽然不是必需品,但如果说”厨师模式已经准备好”,就很时髦!只需执行以下命令即可简单方便:curl -L https://www.opscode.com/chef/install.sh | sudo bash。
vagrant@vagrant-debian-wheezy:~$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13347 100 13347 0 0 1108 0 0:00:12 0:00:12 --:--:-- 7317
Downloading Chef for debian...
downloading https://www.opscode.com/chef/metadata?v=&prerelease=false&p=debian&pv=6&m=x86_64
to file /tmp/install.sh.6909/metadata.txt
trying wget...
url https://opscode-omnibus-packages.s3.amazonaws.com/debian/6/x86_64/chef_11.10.0-1.debian.6.0.5_amd64.deb
md5 7164567ac606dfbf620a75599b3aa6e8
sha256 ce58b724359d2569fd61d0a8a93f80273d037faab390dcaf3da93320ed209042
downloaded metadata file looks valid...
downloading https://opscode-omnibus-packages.s3.amazonaws.com/debian/6/x86_64/chef_11.10.0-1.debian.6.0.5_amd64.deb
to file /tmp/install.sh.6909/chef_11.10.0-1.debian.6.0.5_amd64.deb
trying wget...
Checksum compare with sha256sum succeeded.
Installing Chef
installing with dpkg...
Selecting previously unselected package chef.
(Reading database ... 35468 files and directories currently installed.)
Unpacking chef (from .../chef_11.10.0-1.debian.6.0.5_amd64.deb) ...
Setting up chef (11.10.0-1.debian.6.0.5) ...
Thank you for installing Chef!
※ 建议您在 getchef.com 网站上查看 Chef 的安装代码。
封装用于Vagrant的 BASE BOX。
一旦到这里之后就很快了。轻轻敲入几个命令就结束了。
结束得太快了,感觉有点寂寞。
vagrant打包工具 –base <虚拟机名>
使用这个命令,就可以立即创建一个用于vagrant的box文件了。真是令人感觉有些寂寞呢。
vms名字,是指在VirtualBox中注册的虚拟机名称。就是当你启动VirtualBox时显示的那个。
如果你不太清楚的话,可以尝试输入VBoxManage list vms命令,就会明白了。
在我家里,情况差不多是这样的。
$ VBoxManage list vms
"Debian Wheezy" {37e03644-3540-4831-ad39-ab4c8114cec1}
"debian-7.4_c64" {5bb8d549-e721-4cde-a363-04c581f877b6}
"temp_default_1392080742549_89863" {8e410833-bd8c-4d7d-8685-8d6e666affe7}
此外,在此期间创建的虚拟机是“temp_default_1392080742549_89863”(实际上在中途进行了vagrant box化)。
所以我尝试一下,这样做
$ vagrant package --base temp_default_1392080742549_89863
[temp_default_1392080742549_89863] Clearing any previously set forwarded ports...
[temp_default_1392080742549_89863] Exporting VM...
[temp_default_1392080742549_89863] Compressing package to: /xxxxxx/package.box
我做到了!(´▽`)ノ
然后,只需使用此 package.box 文件将其注册到 vagrant 中即可。
另外,由于此框已公开,您可以完全省略上面的步骤,只需执行下面的命令即可添加该 vagrant box ,真棒!
我們將在以下3個步驟中啟動。
-
- 登记Vagrant Box vagrant box add <vms名> [box文件URL]
初始化Vagrant vagrant init <vms名>
启动目标Vagrant vagrant up
$ vagrant box add debian-7.4-c64 https://dl.dropboxusercontent.com/u/8506456/debian-7.4_c64.box
Downloading box from URL: file:/Volumes/WORKs/Vagrant/debian-7.4_c64/package.box
Extracting box...te: 137M/s, Estimated time remaining: --:--:--)
Successfully added box 'debian-7.4_c64' with provider 'virtualbox'!
$ vagrant init debian-7.4_c64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'debian-7.4_c64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
嗨嗨!(´ー`)ノ