puppet vagrant 管理VirtualBox 虛擬機
[說明]
本次是在ubuntu 11.10上進行測試的.其它操作系統(tǒng)可以參閱官方安裝文檔,基本步驟都差不多.
[vagrant 安裝過程]
1.安裝virtualbox
apt-get install virtualbox
2.安裝vagrant 和Veewee(veewee此為可選安裝)
gem install vagrant
gem install veewee
3.vagrant 增加要安裝的虛擬機
vagrant box add centos-5.7 http://packages.vstone.eu/vagrant-boxes/centos-5.8-64bit-latest.box
注意: vagrant box add
box 可以為本地文件,也可以為遠(yuǎn)程的文件,上面的命令會下載centos-5.8-64bit-latest.box .
box是保存在~/vagrant.d/boxes/ 目錄下.如果要存放在到其它目錄,可以將文件mv 到目標(biāo)目錄下,
并做個軟鏈接即可.
我們看下 ~/vagrant.d/boxes/目錄下有哪些文件?
ls /root/.vagrant.d/boxes/
centos-5.7
ls /root/.vagrant.d/boxes/centos-5.7/
box-disk1.vmdk box.ovf Vagrantfile
[vagrant 使用過程]
下載完成后,我們看下可用的box 有哪些?
#vagrant box list
centos-5.7
接下來我們創(chuàng)建工程目錄結(jié)構(gòu),用來保存puppet 的代碼,以及puppet 模塊目錄.
mkdir -p /root/example/{manifests,modules}
cd example
初始化box .
root@test1:~/example# vagrant init centos-5.7
如果我們不加參數(shù)centos-5.7,默認(rèn)名為base.
接下來我們配置相關(guān)環(huán)境:
cat Vagrantfile
將配置文件納入版本控制:
root@test1:~/example# git init
在manifests目錄下建立init.pp,可以將寫好的模塊,放到modules目錄下,簡單示例:
cat manifests/init.pp
group { "puppet":
ensure => "present",
}
File { owner => 0, group => 0, mode => 0644 }
file { ‘/etc/motd’:
content => “Welcome to sky grant-built virtual machine!
啟動box
root@test1:~/example# vagrant up
[default] VM already created. Booting if it's not already running...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- v-root: /vagrant
[default] -- manifests: /tmp/vagrant-puppet/manifests
[default] -- v-pp-m0: /tmp/vagrant-puppet/modules-0
[default] Running provisioner: Vagrant::Provisioners::Puppet...
[default] Running Puppet with /tmp/vagrant-puppet/manifests/init.pp...
notice: /Stage[main]//File[/etc/motd]/content: content changed '{md5}d41d8cd98f00b204e9800998ecf8427e' to '{md5}7162446602331ff93e480d67d604a701'
notice: /Stage[main]/Rsync/File[/etc/rsync]/ensure: created
notice: /Stage[main]/Rsync/Package[rsync]/ensure: created
大概就兩到三分鐘就好,我們現(xiàn)在連到虛擬機(box)
root@test1:~/example# vagrant ssh
Last login: Fri Apr 27 05:17:14 2012 from 10.0.2.2
Welcome to sky grant-built virtual machine!
這里如果我們修改了manifests下的init.pp文件,那要怎么執(zhí)行,可以使用如下命令!
root@test1:~/example# vagrant provision
[default] Running provisioner: Vagrant::Provisioners::Puppet...
[default] Running Puppet with /tmp/vagrant-puppet/manifests/init.pp...
notice: /Stage[main]/Rsync/Tidy[/etc/rsync]: Tidying File[/etc/rsync]
如果修改了Vagrantfile的其它配置可以使用vagrant reload 生效.
更多用法與參考,可以參閱官方文檔http://vagrantup.com/docs/provisioners/puppet.html
[vagrant 使用總結(jié)]
使用vagrant 可以快速構(gòu)建虛擬機,如果要大量的虛擬機,非常方便從本地文件重構(gòu),或者從網(wǎng)上下載.box文件.
配置比較簡單.可以節(jié)約大量時間和精力.vagrant的用法官網(wǎng)有詳細(xì)說明,至此我們可以使用VirtualBox 給
開發(fā)人員作為開發(fā)機.當(dāng)然你的宿主機NB 的話,可以開多個虛擬機.想怎么折騰就怎么折騰.感興趣的同學(xué)
可以比較Xen的用法與vagrant有用法,也可以比較虛擬機之間的性能差異.本文同步更新至
http://www.puppetfans.com/thread-270-1-1.html,歡迎討論!
【編輯推薦】