服务器(物理机器和虚拟机)多了以后需要工具来管理,经常登陆系统后不知是在虚拟机上还是在物理机上?如果在虚拟机上这个虚拟机运行在哪个服务器节点(host)上?如果在物理机上运行在什么配置的物理机上?运行在 Dell 刀片服务器上还是 IBM 超级计算机上,SUN 服务器上还是普通 PC 上?这个系统 IP 是多少?域名是啥?有几个网卡?分别走的哪个交换机?有没有连到 SAN 存储等等?无数问题,我们需要一个统一查看和管理所有机器(物理机和虚拟机)的这么一套工具。Foreman 就是这么一个集成了 Puppet 的统一机器生命周期管理工具。
Foreman 功能很强大,可以解决硬件或虚拟机上线到运行 Puppet 之间的一切问题,比如安装操作系统、配置网络、配置 DNS、Puppet 客户端安装认证等等,完成必要的上线工作后,Foreman 就把剩下的工作交给了 Puppet,Puppet 完成剩下的服务器和服务配置工作,这样就完美的完成了从服务器上线到服务上线的全过程,而且是自动的。这里主要介绍用 Foreman 获取(配合 Puppet Facts)和查看服务器信息。
加入 foreman 官方源后安装软件包:
# cat > /etc/yum.repos.d/foreman.repo << EOF [foreman] name=Foreman Repo baseurl=http://yum.theforeman.org/stable gpgcheck=0 enabled=1 EOF # yum install foreman
拷贝 foreman 里面的 report 例子到 puppet 下,并更改 $foreman_url 指向这台安装 foreman 的服务器:
# cp /usr/share/foreman/extras/puppet/foreman/templates/foreman-report.rb.erb \ /usr/lib/ruby/site_ruby/1.8/puppet/reports/foreman.rb # vi /usr/lib/ruby/site_ruby/1.8/puppet/reports/foreman.rb ... $foreman_url='http://foreman.vpsee.com:3000/' ...
配置 puppetmaster 服务端,编辑 puppet.conf 配置文件:
# vi /etc/puppet/puppet.conf [main] ... reports=log, foreman ... # /etc/init.d/puppetmaster restart
配置 puppet 客户端,编辑 puppet.conf 配置文件,确保 report 是 true:
# vi /etc/puppet/puppet.conf ... report = true ...
初始化 foreman 数据库(这里 foreman 默认使用 sqlite,简单、不用任何配置,如果想用 mysql 的话可以参考官方帮助文件):
# cd /usr/share/foreman # RAILS_ENV=production rake db:migrate
启动 foreman:
# /etc/init.d/foreman start
我们把 foreman 和 puppetmaster 安装在同一个机器上,每次运行这个脚本都会导入新的 facts:
# cd /usr/share/foreman # rake puppet:import:hosts_and_facts RAILS_ENV=production (in /usr/share/foreman) Importing from /var/lib/puppet/yaml/facts Importing monitor.vpsee.com Importing dev.vpsee.com Importing intranet.vpsee.com Importing datasrv.vpsee.com Importing rocket.vpsee.com Importing grid.vpsee.com Importing proxy.vpsee.com Importing mail.vpsee.com
导入成功后打开浏览器访问 http://foreman.vpsee.com:3000 就可以看到 foreman 界面了: