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

[经验分享] puppet应用原理及安装部署

[复制链接]

尚未签到

发表于 2018-8-2 13:27:55 | 显示全部楼层 |阅读模式
  
  一、简介及系统架构
  二、环境介绍
  三、安装Puppet
  四、配置Puppet-dashboard
  五、配置Puppet Kick
  puppet简介
  
  puppet官方网站:http://www.puppetlabs.com/
  puppet中文wiki:http://puppet.chinaec2.com/
  puppet中文论坛:http://www.puppetfans.com/
  http://lansgg.blog.51cto.com
  参考:http://www.itmin.cn/archives/category/yunweijichu/zidonghua
  http://my.oschina.net/fufangchun/blog?catalog=478855
  Puppet是一个基于Ruby语言所研发的一款开源软件,Puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的Puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。Puppet把这些系统实体称之为资源,Puppet的设计目标是简化对这些资源管理以及妥善处理资源间的依赖关系.puppetmaster可以看作一个web服务器,实际上也是由ruby提供 的web服务器模块来做的。因此可以利用web代理软件来配合puppetmaster做集群设置.
  puppet 系统架构
  
  Puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。Puppet通常可以用来管理一台主机的整个生命周期:从初始化到安装、升级、维护以及后续将服务迁移并下架。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个Puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,Puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.
  下图展示了一个典型的puppet配置的数据流动情况:
DSC0000.jpg

  1)客户端通过facter收集客户端信息并发送至服务端
  2)连接服务端并请求catalog日志
  3)请求节点(node)的信息
  4)从服务器端接收节点(node)的实例
  5)编译代码(包括语法检查等工作)
  6)查询是否有exported 虚拟资源
  7)如有,则从数据库接收虚拟资源
  8)接收完整的catalog日志
  9)存储catalog日志到数据库
  10)客户端接收完整的catalog日志
  实验效果图:
DSC0001.jpg

  二、环境介绍
  系统版本:Centos-6.4-x86_64
  Puppet版本:puppet-2.7.23 下载地址
12345678910111213141516171819主机规划------------------------------------------------------------------------######Master主机[root@master ~]# hostnamemaster.allen.com[root@master ~]# cat /etc/hosts172.16.14.1 master.allen.com172.16.14.2 client.allen.com[root@master ~]# ifconfig eth0 | awk '/inet addr:/{print $1,$2}'inet addr:172.16.14.1------------------------------------------------------------------------######Client主机[root@client ~]# hostnameclient.allen.com[root@client ~]# cat /etc/hosts172.16.14.1 master.allen.com172.16.14.2 client.allen.com[root@client ~]# ifconfig eth0 | awk '/inet addr:/{print $1,$2}'inet addr:172.16.14.2  三、安装Puppet
  安装前请确认SELinux与Iptables已经处于关闭状态
  1、配置好YUM源;并做时间同步
12# wget http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm# rpm -ivh epel-release-6-8.noarch.rpm  2、安装Puppet软件
  由于puppet是由ruby语言编写,所以要安装ruby环境及库文件,命令帮助文件
  [root@puppet soft]# yum install ruby ruby-libs ruby-rdoc
  facter是一个系统盘点工具,收集主机的一些资料,比如CPU,主机IP等,它收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件
  安装puppet之前必须先安装facter,这里采用yum安装。
注释:以下软件压缩成一个软件包,下载解压出来即可获得所有软件------------------------------------------------------------------------######在Master主机上安装[root@master ~]# yum -y --nogpgcheck localinstall puppet-server-2.7.23-1.el6.noarch.rpm facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm------------------------------------------------------------------------######在Client主机上安装[root@client ~]# yum -y --nogpgcheck localinstall facter-1.7.3-1.el6.x86_64.rpm puppet-2.7.23-1.el6.noarch.rpm  3、修改Master主机上的主配置文件
1234[root@master ~]# puppet master --genconfig > /etc/puppet/puppet.conf  #重新生成配置文件[root@master ~]# vim /etc/puppet/puppet.conf    #修改如下两项配置rundir = /var/run/puppetpidfile = $rundir/master.pid  4、启动Puppet服务端进程
DSC0002.gif

注释:按"Ctrl+C"组合键结束上面启动的进程,以守护进程方式启动并设置为开机自启动[root@master ~]# service puppetmaster start[root@master ~]# chkconfig puppetmaster on  5、修改Client主机上的主配置文件
12注释:在[main]段添加如下配置server = master.allen.com    #指定puppet服务器主机名,要能正常解析  6、启动Puppet客户端服务
DSC0003.gif

  7、在第6个步骤中客户端创建过证书申请后,此时可以在Puppet服务器端查看并签署证书。
DSC0004.gif

  如果服务器相当多的话,这样签署证书效率相当的低,而且还会签证书签到手抽筋;有什么方法可以让服务器自动签署证书呢?答案是当然有了...
12注释:在服务器端Puppet配置文件目录下添加如下文件并写入如下信息;表示服务器将会自会签署来自"allen.com"这个域中主机的所有证书申请# echo "*.allen.com" > /etc/puppet/autosign.conf  8、此时,客户端会显示证书成功签署并成功启动服务
DSC0005.gif

  9、再次测试Puppet客户端连接服务器;然后启动Puppet客户端服务。
DSC0006.gif

DSC0007.gif

  10、测试客户端是否能成功从服务端获取到文件
  Master主机:
1234[root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/puppet.txt":content => "puppet test\n",}  Client主机:
123[root@client ~]# puppet agent --server=master.allen.com --no-daemonize --verbose --test[root@client ~]# service puppet restart注释:执行以上两条命令任务一条即可;这里使用第一条便于查看是否同步成功
DSC0008.gif

  到此Puppet的基本安装与测试已完成。
  四、配置Puppet-dashboard
  1、安装数据库;这里为了方便就安装在Master主机上了
123456789  [root@master ~]# yum -y install mysql-server mysql mysql-devel
  优化mysql设置
  编辑 /etc/my.cnf, 在[mysqld]字段,增加最后一行
  
cat/etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0max_allowed_packet = 32M[mysqld_safe]log-error=/var/log/mysqld.log  pid-file=/var/run/mysqld/mysqld.pid
  启动mysql服务
[root@master ~]# service mysqld start[root@master ~]# mysqlmysql> create database dashboard character setutf8;mysql> grant all privileges on dashboard.* to 'dashboard'@'172.16.%.%'identified by'password';mysql> flush privileges;------------------------------------------------------------------------注释:执行授权用户命令上面或下面其中一条即可mysql> grant all privileges on dashboard.* to 'dashboard'@'master.allen.com'identified by'password';  2、安装其它的工具
1[root@master ~]# gem install rake  3、在Master主机上安装puppet-dashboard
1[root@master ~]# yum -y --nogpgcheck localinstall puppet-dashboard-1.2.23-1.el6.noarch.rpm  4、导入Dashboard所依赖的数据库
12345678[root@master ~]# cd /usr/share/puppet-dashboard #切换到dashboard安装目录[root@master ~]# rake RAILS_ENV=production db:migrate #导入数据库rake aborted!No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)(See full trace by running task with --trace)[root@master puppet-dashboard]# rake gems:refresh_specs #如果出现如上错误;执行此命令然后重新导入数据库即可[root@master puppet-dashboard]# rake RAILS_ENV=production db:migrate------------------------------------------------------------------------  5、修改"database.yml"文件中的"production"段如下:
12345678[root@master ~]# vim /usr/share/puppet-dashboard/config/database.ymlproduction:host : 172.16.14.1database: dashboardusername: dashboardpassword: passwordencoding: utf8adapter: mysql  5.5 修改时区
vi/usr/share/puppet-dashboard/config/environment.rb#config.time_zone = 'UTC'config.time_zone = 'shanghai'  6、测试"Dashboard"服务是否工作正常
1234######测试dashboard服务是否能正常启动;出现如下信息说明已经成功,然后按"Crtl+C"组合键结束进程[root@master ~]# /usr/share/puppet-dashboard/script/server -e production=> Booting WEBrick=> Rails 2.3.17 application starting on http://0.0.0.0:3000  7、修改Master主机的"puppet.conf"文件如下:
1234[root@master ~]# vim /etc/puppet/puppet.conf[master]    #在"master"段修改或添加如下内容reports = store, httpreporturl = http://172.16.14.1:3000/reports/upload  8、修改Client主机的"puppet.conf"文件如下:
123[root@client ~]# vim /etc/puppet/puppet.conf[agent]    #在"agent"段添加如下内容report = true  9、启动服务器端"puppet-dashboard"服务并重启"puppetmaster"服务;然后重启客户端"puppet"服务使配置生效
12345678######在服务端执行[root@master ~]# /usr/share/puppet-dashboard/script/server -e production -d[root@master ~]# ss -tanlp | grep 3000LISTEN     0      5       *:3000       *:*      users:(("ruby",30611,5))[root@master ~]# service puppetmaster restart------------------------------------------------------------------------######在客户端执行[root@client ~]# service puppet restart  10、访问dashboard服务,验证是否正常
DSC0009.gif

  
  11.导入报告
  ?
12cd/usr/share/puppet-dashboardrake RAILS_ENV=production reports:import  
  执行导入的reports
  ?
12cd/usr/share/puppet-dashboardrake jobs:work RAILS_ENV="production"  五、配置Puppet Kick
  简介:
  Puppet客户端默认每30分钟跟服务器通讯一次,但是有时,我们希望服务端能给客户端紧急推送一些任务,于是就有了Puppet kick(Puppet 2.6以前叫 puppetrun)
  1、编辑客户端主配置文件
123[root@client ~]# vim /etc/puppet/puppet.conflisten = true注释:在"[agent]"段添加如上内容  2、编辑或新建文件"/etc/puppet/namespaceauth.conf"
1234[root@client ~]# vim /etc/puppet/namespaceauth.conf[puppetrunner]allow *.allen.com注释:添加如上内容  3、编辑文件"/etc/puppet/auth.conf"
123456789[root@client ~]# vim /etc/puppet/auth.confpath /runmethod saveauth anyallow master.allen.com# this one is not stricly necessary, but it has the merit# to show the default policy which is deny everything else注释:如上在这段注释上面添加如上内容[root@client ~]# service puppet restart    #重启服务使配置生效  4、在服务端修改前面创建的"site.pp"文件
1234[root@master ~]# vim /etc/puppet/manifests/site.ppfile{"/tmp/allen.txt":content => "ALLEN TEST\n",}  5、在服务端执行推送命令测试是否能成功推送
123# puppet kick -p 10 --host client.allen.com# puppetrun -p 10 --host client.allen.com  注释:在服务端执行如上两条命令任意一个即可;这里使用第一条命令。
DSC00010.gif

  6、在客户端验证
DSC00011.gif

  到此;Puppet的安装部署已全部完成,后期会学习Puppet的其他相关内容;如:file,service,exec等管理模块。
  
  可以参考:http://www.cnblogs.com/songmingming/p/3506918.html

运维网声明 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-545431-1-1.html 上篇帖子: 深度分析puppet自带filebucket的备份恢复功能 下篇帖子: 集中管理利器-puppet快速入门-上
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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