puppet dashboard是GUI(图形用户界面)方式管理puppet,可以分析puppet运行日志。
一、安装:
   1、添加第三方包仓库EPEL:
       rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
   2、安装ruby环境:
        yum -y install  ruby ruby-devel ruby-irb ruby-rdoc ruby-ri  ruby-libs ruby-rdoc openssl-devel
   3、安装dashboard依赖包:
       yum install -y mysql mysql-devel mysql-server ruby-mysql
   6、安装dashboard
       wget http://downloads.puppetlabs.com/dashboard/puppet-dashboard-1.2.23.tar.gz
       tar xf puppet-dashboard-1.2.23.tar.gz
       mv puppet-dashboard-1.2.23 /usr/local/dashboard
   7、启动mysql
       service mysqld start
二、配置dashboard:
   1、编辑database.yml来指定数据库:
       cd /usr/local/dashboard
       vim config/database.yml
production:
 database: dashboard
 username: dashboard
 password: dashboard
 encoding: utf8
 adapter: mysql
   2、使用rake命令基于database.yml来创建数据库dashboard:
       rake RAILS_ENV=production db:create
(如果报错,就手动创建数据库)
注:如果使用rake报错:
rake aborted!
undefined method `source_index' for Gem:Module
可能是gem版本过高或者过低导致,解决办法:gem update --system 1.8.25

mysql -uroot -p
mysql> create database dashboard default charset utf8;
mysql>use dashboard;
mysql>grant all on dashboard.* to dashboard@localhost identified by 'dashboard' ;
mysql>flush privileges;
mysql>exit
   3、填充数据库:
       rake RAILS_ENV=production db:migrate

   4、修改dashboard的显示时区,默认为UTC,改为北京:
vim config/environment.rb
config.time_zone = "Beijing"
三、启动dashboard:
   1、启动dashboard日志分析进程
       env RAILS_ENV=production /usr/local/dashboard/script/delayed_job -p dashboard -n 4 -m start  
   2、检查分析进程是否启动
       ps -ef|grep delayed_job|grep -v grep
   3、启动dashboard的GUI界面webrick (注:此方法不被推荐,建议使用apache+passenger或nginx+passenger来运行)
        /usr/local/dashboard/script/server -e production
       通过http://ip:3000访问测试。
四、使用apache+Passenger运行puppet-dashboard:
   passenger比webrick复杂很多,也比webrick具有更好的性能,还能和apache或nginx组合在一起。
   1、安装apache:
       yum install -y httpd httpd-devel
   2、安装rubygems
       tar xf rubygems-1.8.25.tgz
       cd rubygems-1.8.25
       ruby setup.rb
   3、修改gem的源仓库
       gem sources -l  查看gem源
       gem sources -a http://ruby.taobao.org/  添加国内镜像源
       gem sources --remove http://rubygems.org/   删除国外源
   4、安装passenger:
       gem install passenger
   5、创建apache passenger模块:
       passenger-install-apache2-module
  6、配置apache主配置文件httpd.conf,添加如下内容:
       LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.10/buildout/apache2/mod_passenger.so
       PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.10
       PassengerRuby /usr/bin/ruby
       PassengerHighPerformance on
       #PassengerUseGlobalQueue on    #该选项在已被废弃
       PassengerMaxPoolSize 6               #passenger启动的线程数,通常为cpu核心个数的1.5倍
       PassengerMaxRequests 4000        #passenger接受的最大请求数
       PassengerPoolIdleTime 1800        #关闭空闲超过1800秒的passenger实例
<VirtualHost *:80>
     ServerName dashboard.cmmobi-wh.com
     DocumentRoot  /usr/local/dashboard/public/
     <Directory /usr/local/dashboard/public/>
        # This relaxes Apache security settings.
        AllowOverride all
        # MultiViews must be turned off.
        Options -MultiViews
     </Directory>
</VirtualHost>


   7、启动apache:
       service httpd restart
五、使用Nginx+Passenger运行puppet-dashboard:
   1、编译安装nginx,加上passenger模块:
   ./configure --add-module=/usr/lib64/ruby/gems/1.8/gems/passenger-4.0.10/ext/nginx
   2、修改nginx配置文件如下:
 http {
     ...
     passenger_root /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.10;
     passenger_ruby /usr/bin/ruby;
     ...
 }
  server {
     listen 80;
     server_name www.dashboard.com;
     root /usr/local/dashboard/public;
     passenger_enabled on;
  }
六、汇总显示报告:
   1、导入现有report:
       cd /usr/local/dashboard
       rake RAILS_ENV=production reports:import
   2、实时导入report:
       puppet client端编辑/etc/puppet/puppet.conf
           [agent]
           report = true
   puppet master端编辑/etc/puppet/puppet.conf
           reports = http,store
           reporturl = http://172.16.5.156:80/reports
       service puppetmaster restart
       service puppet restart
七、数据库维护:
   1、当puppet dashboard数据量过多的时候,需要优化数据库,可使用命令:
        rake RAILS_ENV=production db:raw:optimize
   2、清理dashborad一个月之前的数据:
       rake RAILS_ENV=production reports:prune upto=1 unit=mon
   3、备份puppet dashborad数据库:
       rake RAILS_ENV=production FILE=/my/backup/file.sql db:raw:dump
   4、恢复数据:
rake RAILS_ENV=production FILE=production.sql db:raw:restore



linux交流群:22346652。欢迎Linux爱好者加入,一起学习,一起进步。