IT技术博客大学习 共学习 共进步

puppet vagrant 管理VirtualBox 虚拟机

MySQLOPS 数据库与运维自动化技术分享 2012-05-12 22:39:58 浏览 3,443 次

[导读]

运维人员经常需要给开发人员分配机器,搭建各种开发环境,还得维护开发机器,如果开发人员越多,

需要更多的开发机器,有没有简单的方案来解决这些问题.这里就是为大家vagrant.

vagrant大家可能不熟悉,vagrant 是使用的Oralce 公司的VirtualBox 建立快速,便携式,

动态配置的虚拟机.vagrant 可以给开发人员提供一个功能齐全的web开发环境,

vagrant 项目主页地址为:http://vagrantup.com,vagrant 可以和puppet ,chef等结合,

实现虚拟机管理自动化.

[说明]

本次是在ubuntu 11.10上进行测试的.其它操作系统可以参阅官方安装文档,基本步骤都差不多.

[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 可以为本地文件,也可以为远程的文件,上面的命令会下载centos-5.8-64bit-latest.box .
box是保存在~/vagrant.d/boxes/ 目录下.如果要存放在到其它目录,可以将文件mv 到目标目录下,
并做个软链接即可.
我们看下 ~/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

接下来我们创建工程目录结构,用来保存puppet 的代码,以及puppet 模块目录.

mkdir -p /root/example/{manifests,modules}
cd example

初始化box .

root@test1:~/example# vagrant init centos-5.7

如果我们不加参数centos-5.7,默认名为base.

接下来我们配置相关环境:

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

大概就两到三分钟就好,我们现在连到虚拟机(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文件,那要怎么执行,可以使用如下命令!

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 使用总结]

使用vagrant 可以快速构建虚拟机,如果要大量的虚拟机,非常方便从本地文件重构,或者从网上下载.box文件.

配置比较简单.可以节约大量时间和精力.vagrant的用法官网有详细说明,至此我们可以使用VirtualBox 给

开发人员作为开发机.当然你的宿主机NB 的话,可以开多个虚拟机.想怎么折腾就怎么折腾.感兴趣的同学

可以比较Xen的用法与vagrant有用法,也可以比较虚拟机之间的性能差异.本文同步更新至

http://www.puppetfans.com/thread-270-1-1.html,欢迎讨论!

建议继续学习

  1. 使用Apache 和Passenger来运行puppetmaster (阅读 8,165)
  2. Win7 + VirtualBox安装Mac OS X雪豹操作系统图文详解 (阅读 6,000)
  3. 自动化运维之企业实际案例分析 (阅读 4,623)
  4. puppet使用rsync来同步文件教程 (阅读 4,081)
  5. DevOps之Puppet (阅读 3,822)
  6. 如何有效运行puppet cron任务以及如何触发运行puppet (阅读 3,762)
  7. puppet运维之使用自定义函数 (阅读 3,302)
  8. puppet extlookup 和puppet hiera使用 (阅读 3,043)
  9. puppetmaster集群解决方案之puppet客户端共享一张证书 (阅读 2,781)
  10. puppet手册之建立软件安装源 (阅读 2,563)