puppet的generate函数
这个函数不能直接执行shell脚本,需要/usr/bin/env等做为第一个参数,如:
$hostalias = generate("/usr/bin/env", "/tmp/genhname.sh", "172.16.0.133")
其次,这个函数的执行的是master上的脚本,它仅仅是将client上的变量拿回来,在本地执行;也就是说/tmp/genhname.sh要位于master的相应路径上,且有执行权限,不需要将脚本文件分发到client。
这个函数不能直接执行shell脚本,需要/usr/bin/env等做为第一个参数,如:
$hostalias = generate("/usr/bin/env", "/tmp/genhname.sh", "172.16.0.133")
其次,这个函数的执行的是master上的脚本,它仅仅是将client上的变量拿回来,在本地执行;也就是说/tmp/genhname.sh要位于master的相应路径上,且有执行权限,不需要将脚本文件分发到client。
以下过程基于debian:
系统要求:
ruby >= 1.8.1
rake >= 0.8.3 (在lenny里版本不够,需要squeeze,不过我觉得使用gem应该也能装)
mysql
ruby mysql bindings(我个人觉得对应的包为libmysql-ruby,不过网上的另一个deb包依赖的是dbconfig-common libdbd-mysql-ruby)
安装过程:
1. 获得最新源码:
git clone git://github.com/reductivelabs/puppet-dashboard.git
2. 设置数据库:
cd puppet_dashboard/config cp database.yml.example database.yml
编辑database.yml,在development域中加入数据库用户名、密码,然后进行数据库初始化(确保mysql服务已经启动):
rake install
(中间可能需要运行rake gem:install)
3.设置puppetmaster:
部署lib文件:
cp puppet_dashboard/lib/puppet/puppet_dashboard.rb /usr/lib/ruby/1.8/puppet/reports/
这点和readme中描述不符,不过作者的方法怎么实验都不成功。:(
然后在/etc/puppet/puppet.conf的puppetmasterd域中加入:
reports = puppet_dashboard
可以写多种方法,用逗号分隔,比如:
reports = puppet_dashboard, log, store
最后重启服务端
4.运行dashboard server
script/server
5.设置puppet client:
在/etc/puppet/puppet.conf的puppetd域加入:
report = true
重启客户端
如果没有意外,dashboard将会接收到新的report,访问http://localhost:3000/进入web界面。
如果想将以前的report导入,在dashboard目录运行:
rake reports:import
如果reportdir不是/var/lib/puppet/reports则运行:
rake reports:import REPORT_DIR=/path/to/your/reports
如果时区显示有问题,在config/enviroment.rb文件中修改:
config.time_zone = 'Beijing'
参考:
1. http://docs.puppetlabs.com/guides/installing_dashboard.html
2.http://zcentric.com/2010/03/11/install-puppet-dashboard-on-redhatcentos-5/
import "autofs" import "autofs/init.pp" import "autofs/util/stuff.pp"
第一句与第二句会在模块路径中寻找autofs/manifests/init.pp并载入。
第三句只载入autofs/util/stuff.pp文件。
puppet 0.23.1之后的版本,位于modulepath下(默认是/etc/puppet/modules)的模块会被自动载入,所以不需要手动载入此目录下的各个模块了。
当你引用autofs模块中的craziness类时,puppet会自动在autofs模块下寻找craziness.pp文件中的这个类。使用这个技巧就可以不在模块的init.pp中写入额外的import了。
近期评论