设为首页 收藏本站
查看: 1868|回复: 0

[经验分享] Puppet安装以及集成Dashboard手册

[复制链接]

尚未签到

发表于 2015-11-26 14:58:53 | 显示全部楼层 |阅读模式
  
Puppet安装以及集成Dashboard手册

  

Puppet简介

puppet是一种LinuxUnixwindows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端,
下载最新的配置文件,并且严格按照配置文件来配置服务器.
配置完成以后,puppet客户端可以反馈给服务器端一个消息.
如果出错,也会给服务器端反馈一个消息.


安装前准备

测试机环境
  系统
  角色
  IP
  主机名
  CentOS 6.5/CentOS 5.5
都是相同步骤
  Master
  10.2.180.183
  app180-183.test.com
  CentOS 5.5
  Client
  10.2.180.181
  app180-181.test.com
  CentOS 6.4
  Client
  10.2.180.184
  app180-184.test.com
  1.      
关闭selinux

  sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config;setenforce 0
  2.      
关闭iptable

  chkconfigiptables off;service iptables stop
  3.      
时间同步

  ntpdatetime.nist.gov;echo '*/10 * * * * ntpdate time.nist.gov' >>/var/spool/cron/root
  4.      
配置域名解析,或直接在hosts里配置主机名

  5.      
配置epolpuppet

  Enterprise Linux 6
  rpm -ivhhttp://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
  rpm -ivhhttp://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
  Enterprise Linux 5
  rpm -ivhhttp://yum.puppetlabs.com/puppetlabs-release-el-5.noarch.rpm
  rpm -ivhhttp://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
  保留yum下载的rpm
  sed -i s/keepcache=.*/keepcache=1/g /etc/yum.conf
  

安装masteragent

Master
  Puppet Master Server安装,安装时最新版服务端为3.6.1-1
  yum-y install puppet-server
  更新
  puppet resource package puppet-server ensure=latest
  配置
  chkconfigpuppetmaster on;service puppetmaster start
  启动后会自动在/var/lib/puppet/ssl下生成主机名.pemca文件。

Nodes
  Puppet Agent Nodes 安装,安装时最新版客户端为3.6.1-1
  yum-y install puppet
  更新
  puppet resource package puppet ensure=latest
  node配置连接到puppet-master
  sed -i 's/#PUPPET_SERVER=puppet/PUPPET_SERVER=app180-183.test.com/g' /etc/sysconfig/puppet
  sed -i 's/#PUPPET_PORT=8140/PUPPET_PORT=8140/g' /etc/sysconfig/puppet
  sed -i 's/#PUPPET_LOG=\/var\/log\/puppet\/puppet.log/PUPPET_LOG=\/var\/log\/puppet\/puppet.log/g' /etc/sysconfig/puppet
#runinterval = 60  //代表60秒跟服务器同步一次

  echo "   report = true" >> /etc/puppet/puppet.conf
  echo "   runinterval = 60" >> /etc/puppet/puppet.conf
  chkconfig puppet on;service puppet start
  
  还有一种同步方式节省内存,直接cron方式,定时调用。使用下面语句增加crontab任务
  puppet resource cron puppet-agent ensure=present user=root minute=30 command='/usr/bin/puppet agent --onetime --no-daemonize --splay'
  crontab -l
  
  启动后会自动在/var/lib/puppet/ssl下生成主机名.pemca文件。
  

CA认证

node
  启动agent后会生成主机名.pem的证书文件,自动向master要求签名的。
  如果node主机名改变了需要删除原证书文件,并在masterclean原客户端名字,然后重新生成证书并要求签名。
  删除证书文件
  rm -rf  /var/lib/puppet/ssl/*
  可以使用调试模式生成证书。
  puppet agent --no-daemonize --debug --onetime --verbose --server=app180-183.test.com

master
  列出需要签发的客户端
  puppet cert list
  
  签发指定客户端
  puppet cert sign app180-181.test.com
  
  签发所有客户端请求
  puppet cert sign --all
  注销客户端证书
  puppet cert revoke app180-181.test.com
  
  清除客户端证书
  puppet cert clean app180-181.test.com
  

master自动签名配置
  在服务器端的puppet.conf配置文件里面加上
  [main]
  autosign = true
  或直接建立文件
  echo "*.test.com" >> /etc/puppet/autosign.conf
  

puppet报告系统Dashboard部署
  Puppet Dasshboard是由支持Puppet开发的公司Puppetlabs创建的,是Ruby on Rails程序。可以作为一个ENC(外部节点分类器)以及一个报告工具,并且正在逐渐成为一个包含许多Puppet新功能的集成界面,例如审计和资源管理功能。 Puppet Dashboard是一个Ruby on Rails程序,用于显示Puppet masteragent的相关信息。它允许你查看从一个或多个Puppet master汇总的图形和报告数据。它同时从一个或者多个Puppet master上收集来自于Puppet agent的资产数据(主机的Fact和其他信息)。最后,它能作为一个ENC来配置Puppet节点,并指定这些节点上的类和参数。

安装软件包
  yum install ruby-mysqlmysql-server puppet-dashboard

配置数据库
  chkconfigmysqldon;servicemysqld start
  mysqladmin -uroot password 123456
  mysql建库脚本
CREATE DATABASE dashboard CHARACTER SET utf8;

CREATE USER 'dashboard'@'localhost' IDENTIFIED BY '123456';

  GRANT ALL PRIVILEGES ON dashboard.* TO 'dashboard'@'localhost';
  flush privileges;
  优化数据库
  [mysqld]
  # Allowing 32MB allows an occasional 17MB row with plenty of spare room

  max_allowed_packet = 32M  

  然后重启mysqld

修改dashboard链接数据库配置

vi /usr/share/puppet-dashboard/config/database.yml

  production段改为如下内容,其它段可不用改
  

建立 Schema
  cd /usr/share/puppet-dashboard/
  rake gems:refresh_specs  #修复什么东西
  rake RAILS_ENV=production db:migrate
  没有报错的话,数据库就建立完成了。

查看数据库
  mysql> show tables;
  +------------------------------+
  | Tables_in_dashboard          |
  +------------------------------+
  | delayed_job_failures         |
  | delayed_jobs                 |
  | metrics                      |
  | node_class_memberships       |
  | node_classes                 |
  | node_group_class_memberships |
  | node_group_edges             |
  | node_group_memberships       |
  | node_groups                  |
  | nodes                        |
  | old_reports                  |
  | parameters                   |
  | report_logs                  |
  | reports                      |
  | resource_events              |
  | resource_statuses            |
  | schema_migrations            |
  | timeline_events              |
  +------------------------------+
  18 rows in set (0.00 sec)
  

测试DashBoard是否工作
  cd /usr/share/puppet-dashboard/
  ./script/server -e production
  你可以直接使用http://dashboardserver:3000访问.

运行DashboardWEBrick方式)
  /etc/init.d/puppet-dashboard start
  访问http://dashboardserver:3000
  
  这种方式只是测试运行的时候使用,官方不推荐,不支持并发,只适合少量客户端。
  

安装配置Passenger方式
  yum install openssl-develzlib-devel curl-develgcc-c++httpdhttpd-develmod_ssl ruby-develrubygemsgcc

安装Rack/Passenger
  PassengerApache 2.x的一个扩展,用来在Apache中运行RailsRack应用。puppetmaster默认使用WEBrick提供文件服务,如果你的puppet客户端很多,puppetmaster的文件服务性能会很差,为了使puppetmaster更健壮,所以使用Apache提供文件服务。
  gem install rack passenger  #这个可以本地安装的
  通过下面脚本下载
  for i in daemon_controller-1.2.0 json-1.5.5 passenger-4.0.43 rack-1.5.2 rake-0.8.7
  do
      wget http://rubygems.org/downloads/$i.gem
  done
  然后
  gem install --local *.gem
  
  passenger-install-apache2-module
  

安装Puppet Master Rack Application
  mkdir -p /usr/share/puppet/rack/puppetmasterd
  mkdir/usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp
  cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/
  chownpuppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru
  

创建启用Puppet Master Vhost
  配置passenger模块
  vi /etc/httpd/conf.d/passenger.conf
LoadModulepassenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.42/buildout/apache2/mod_passenger.so

<IfModulemod_passenger.c>

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.42

PassengerDefaultRuby /usr/bin/ruby

</IfModule>

  配置vhost
  cp /usr/share/puppet/ext/rack/example-passenger-vhost.conf /etc/httpd/conf.d/passenger-vhost.conf
  [iyunv@app180-183 conf.d]# vi passenger-vhost.conf
# This Apache 2 virtual host config shows how to use Puppet as a Rack

# application via Passenger. See

# http://docs.puppetlabs.com/guides/passenger.html for more information.


# You can also use the included config.ru file to run Puppet with other Rack

# servers instead of Passenger.


# you probably want to tune these settings

PassengerHighPerformance on

PassengerMaxPoolSize 12

PassengerPoolIdleTime 1500

# PassengerMaxRequests 1000

PassengerStatThrottleRate 120

#RackAutoDetect Off

#RailsAutoDetect Off


Listen 8140


<VirtualHost *:8140>

SSLEngine on

SSLProtocol             ALL -SSLv2

SSLCipherSuite          ALL:!aNULL:!eNULL:!DES:!3DES:!IDEA:!SEED:!DSS:!PSK:!RC4:!MD5:&#43;HIGH:&#43;MEDIUM:!LOW:!SSLv2:!EXP

SSLHonorCipherOrder     on


SSLCertificateFile      /var/lib/puppet/ssl/ca/signed/app180-183.test.com.pem

SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/app180-183.test.com.pem

     SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem

     SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem


     # If Apache complains about invalid signatures on the CRL, you can try disabling

        # CRL checking by commenting the next line, but this is not recommended.

     SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem

SSLVerifyClient optional

SSLVerifyDepth  1

        # The `ExportCertData` option is needed for agent certificate expiration warnings

SSLOptions &#43;StdEnvVars &#43;ExportCertData


        # This header needs to be set if using a loadbalancer or proxy

RequestHeader unset X-Forwarded-For


RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e

RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e

RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e


DocumentRoot /usr/share/puppet-dashboard/public

RackBaseURI /

     PassengerAppRoot /usr/share/puppet/rack/puppetmasterd

<Directory /usr/share/puppet-dashboard/>

                Options None

AllowOverride None

                Order allow,deny

allow from all

</Directory>

</VirtualHost>


Listen 3001

NameVirtualHost *:3001

<VirtualHost *:3001>

DocumentRoot /usr/share/puppet-dashboard/public/

#  ErrorLog /var/log/httpd/dashboard_error.log

#  CustomLog /var/log/httpd/dashboard_access.log combined

#  RailsAutoDetect On

AddDefaultCharset UTF-8

RailsEnv production

<Location &quot;/&quot;>

                Options None

AllowOverride None

                Order allow,deny

allow from all  

</Location>

</VirtualHost>


关闭WEBrick,的puppetmaset,并启用 apache替代puppetmaset
  chkconfigpuppetmaster off ;service puppetmaster stop
  chkconfigpuppet-dashboardoff;service puppet-dashboard stop
  chkconfighttpdon;servicehttpd restart
  
  

导入报告(方式一)
  cd /usr/share/puppet-dashboard/
  rake RAILS_ENV=production reports:import  #导入已经存在的报告
  
  
  备注:默认节点报告会在/var/lib/puppet/reports/
产生,如果路径发生变化,导入报告时需要在后面加上“REPORT_DIR=report路径”,reports更改路径可在puppet.conf中设置参数“reportdir =
新路径”,这种方式不够实时。


配置自动导入汇总(方式二)

Node操作
  vim/etc/puppet/puppet.conf
# In the [agent] section


    server = puppet
#2.7.0版本开始,报告系统会默认开启,不需要配置

    report = true

    pluginsync = true


Master操作

[main]      

#定义为http报告处理器,除此之外还有storelogtagmailrrdgraph等报告处理器

reports = http  

#http报告处理器将puppet报告发送到一个HTTP URL和端口(Dashboard位置)。Puppet报告以被转储为HTTP
Poort
形式的YAML&#26684;式进行发送。

reporturl = http://10.2.180.183:3001/reports/upload

  
  开启后台处理报告进程
  cd /usr/share/puppet-dashboard/ && rake RAILS_ENV=production jobs:work&
  把这条加入/etc/rc.local
  
  修改dashboard时区
  Dashboard默认时区为UTC&#26684;式,我们这里需要更改为CSTAsia/Shanghai)&#26684;式
vim /usr/share/puppet-dashboard/config/settings.yml

time_zone: 'Asia/Shanghai'

  **备注**:设置的settings.yml会覆盖掉config/environment.rb中对应的配置项(config.time_zone
= 'UTC'

  
  

关于puppet3.6.1的备注:
  http://roidelapluie.be/tag/automation.html

Puppet 3.6.1 depreciation warning

Dear puppet users using a yum-based distribution1,
once you will upgrade to
puppet 3.6.1, you will notice the following warning message each time
you use a package type:


Warning: The package type's allow_virtual parameter will be changing its
default value from false to true in a future release. If you do not want to
allow virtual packages, please explicitly set allow_virtual to false.
(at /usr/lib/ruby/site_ruby/1.8/puppet/type.rb:816:in `set_default')
There is nothing you can do with that except setting a global parameter in your puppet tree, as stated in the release
notes
:

Package{
allow_virtual=>true,
}
I don't see any reason to have such a warning if enough information is given in the release
notes
. This disturbing behaviour is discussed in issue PUP-2650 and
in the
mailing list.
  

PUPPET bug列表
  配置正确的情况下出现报错,可以到下面网址去搜索,就像上面的错误问百度找不到,开google打不开,在bing.com上翻了好多页才找到一条,到下面网址直接就出来了。
  https://tickets.puppetlabs.com/browse/PUP
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-143981-1-1.html 上篇帖子: Puppet Installation Guide on Ubuntu12.04 下篇帖子: Puppet安装文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表