Puppet.docx
- 文档编号:16392351
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:16
- 大小:367.94KB
Puppet.docx
《Puppet.docx》由会员分享,可在线阅读,更多相关《Puppet.docx(16页珍藏版)》请在冰点文库上搜索。
Puppet
Puppet+dashboard+passenger搭建与维护
2016-01-21
耿业浩
Puppet简介:
(详细的网上很多,可以查阅。
)
一个开源的集中化配置管理工具。
Puppet由自己所声明的语言表达系统配置,通过客户端与服务器之间的连接来维护系库。
Puppet的设计目的是让它成为一个由富有表现力的语言支撑的足够的强大的库。
Puppet可以容易的自动化重复任务,快速部署关键应用,主动的管理变化。
Puppet的目的是帮助IT运维实现环境标准化,流程化,自动化和规模化。
Puppet的客户端支持多种OS主流的由RedHat、CentOs、Geetoo、FreeBSD、Debian、OpenBSD、Macosx、Ubuntu、SuSE、Solaris、Windows等。
Puppet所支持的资源有:
File、package、Host、Group、Service、Exec。
支持的类型有限
Puppet工作原理:
1.客户端puppet向master发起认证请求,或是拥带签名的证书。
2.master告诉客户端是合法的。
3.客户端puppet调用facter,facter探测出主机的一些变量,如:
主机名、内存大小、ip地址等。
Puppet通过ssl把facter探测到的信息发送给master。
4.服务器端的pupetmaster检测客户端的主机名,然后找到manifest里面对应的node配置,并对该部分对应的内容进行解析,facter发送过来的信息可作为变量处理,node涉及的代码才进行解析。
(解析分为3个阶段1.语法检测,如果语法正确则进行解析2.解析的结果生成一个中间的“伪代码”(catalog)3.把catalog发送给客户端)
5.客户端接执行接收到的catalog
6.客户端执行时判断有无file文件,如果有则向fileserver发起请求
7.客户端判断是否配置report,如果配置则把执行执行结果发送给master。
8.master把客户端的执行结果写入日志文件,并发送给Dashboard(报告系统)。
Puppet与ruby的版本兼容性:
建议使用ruby1.8.7,他可以支持puppt2.6、puppt2.7、puppet3.0.
Ruby1.9.3支持puppet3.0
以上版本对应关系来自《Puppet实战》,我在搭建的过程中也遇到过版本问题,和之前搭建的Redmine类似。
所以需要注意下自己系统的ruby版本号和puppet-server的版本号。
在做puppet之前我先做了一个DNS负责解析各个主机的主机名。
配置DNS主配置文件
[root@master~]#yuminstallbind
[root@master~]#vim/etc/named.conf
options{
listen-onport53{192.168.1.123;};##注意大括号中ip左右两边有空格,且ip后边有分号
directory"/var/named";
dump-file"/var/named/data/cache_dump.db";
statistics-file"/var/named/data/named_stats.txt";
memstatistics-file"/var/named/data/named_mem_stats.txt";
allow-query{any;};##允许查询
######配置正向解析区域
41zone""IN{
42typemaster;
43file".zone";
44
45};
配置正向解析文件
[root@master~]#vim/var/named/.zone
$TTL3H
@INSOA..(
2013012001;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
@INNS.;;此处以.结尾
masterINA192.168.1.123;;puppet主服务器
clientINA192.168.1.124;;客户端
c1INA192.168.122.205;;客户端
系统及版本选定
Centos6.5Ruby1.8.7Puppet-server3.6.0-rc1
Master服务器端配置
配置ruby环境
[root@master~]#yuminstallrubyruby-libsruby-libs
配置puppet源
[root@master~]#wget
[root@master~]#yum-yinstallpuppetlabs-release-6-1.noarch.rpm
[root@master~]#yum-yisntallpuppet-server
此处可能会提示报错有几个包需要用gem在线安装一下
解决方法:
[root@master~]#yuminstallrubgems
[root@master~]#gemsource-ahttps:
//ruby.taobao.org添加国内淘宝镜像源
###有时候很慢基本需要这几包
ruby-augeas-0.5.0-7.fc23.x86_64.rpm
ruby-shadow-1.4.1-9.1.x86_64.rpm
rubygem-json-1.4.6-1.el6.i686.rpm
ruby-rgen-0.6.5-2.el6sat.noarch.rpm
如果gem安装过慢可以使用下载在我的XX云分享已经下载好rpm包
客户端安装
配置ruby环境
[root@client~]#yuminstallrubyruby-libsruby-libs
配置puppet源
[root@client~]#wget
[root@client~]#yum-yinstallpuppetlabs-release-6-1.noarch.rpm
[root@client~]#yum-yisntallpuppet
Puppet客户端与服务器端安装完成后进行配置
在客户端和服务器端同时指定DNS服务器
以master为例,client相同
[root@master~]#vim/etc/resolv.conf
#GeneratedbyNetworkManager
#nameserver202.106.0.20
#nameserver123.126.61.6
nameserver192.168.1.123
服务器端的配置不需要修改,只需要对客户端主配置文件指定服务器是哪个即可
[root@client~]#vim/etc/puppet/puppet.conf
14[agent]
15#Thefileinwhichpuppetdstoresalistoftheclasses
16#associatedwiththeretrievedconfiguratiion.Canbeloadedin
17#theseparate``puppet``executableusingthe``--loadclasses``
18#option.
19#Thedefaultvalueis'$confdir/classes.txt'.
20classfile=$vardir/classes.txt
21
22#Wherepuppetdcachesthelocalconfiguration.An
23#extensionindicatingthecacheformatisaddedautomatically.
24#Thedefaultvalueis'$confdir/localconfig'.
25localconfig=$vardir/localconfig
26server=##再文件末尾添加仅此一行
启动服务程序
Master服务器端
[root@master~]#/etc/init.d/puppetmasterrestart
停止puppetmaster:
[确定]
启动puppetmaster:
[确定]
[root@master桌面]#chkconfigpuppetmasteron
client客户端
[root@client桌面]#/etc/init.d/puppetrestart
Stoppingpuppetagent:
[确定]
Startingpuppetagent:
[确定]
[root@client桌面]#chkconfigpuppetmasteron
[root@clientcerts]#puppetagent--no-daemonize--onetime--debug--verbose
--no-daemonize前台日志输出
--verbose输入更加详细的日志
--debug更加详细的日志,方便排错。
xt]:
ThecontainerNode[]willpropagatemyrefreshevent
Debug:
Node[]:
ThecontainerClass[Main]willpropagatemyrefreshevent
Debug:
Class[Main]:
ThecontainerStage[main]willpropagatemyrefreshevent
Debug:
Finishingtransaction69996811934820
Debug:
Storingstate
Info:
Creatingstatefile/var/lib/puppet/state/state.yaml
Debug:
Storedstatein0.03seconds
Notice:
Finishedcatalogrunin0.11seconds
客户端puppet服务启动后向master申请证书
Maste端查看证书是否认证通过
[root@master桌面]#puppetcertlist--all
+""(SHA256)##’+’代表签发成功C9:
AA:
BB:
E0:
D4:
49:
06:
6A:
94:
EC:
93:
25:
D4:
75:
69:
AD:
98:
06:
97:
95:
8F:
0B:
2E:
17:
AF:
EE:
BA:
31:
36:
77:
81:
0A
+""(SHA256)E7:
1F:
DB:
A4:
2E:
EA:
F3:
E4:
FD:
A0:
80:
00:
54:
EC:
A2:
6E:
82:
F2:
63:
F2:
58:
C2:
B5:
12:
F3:
A0:
27:
7B:
95:
83:
94:
79(altnames:
"DNS:
","DNS:
puppet","DNS:
")
Master上做一个测试文件供客户端client测试
[root@master桌面]#vim/etc/puppet/manifests/site.pp
node''{
file{
'/opt/123.txt':
content=>"hello________________>";
}
##目的是在client的/opt下创建123.txt文件内容为hello________________
##File为一种资源类型,在上边的puppet简介中提到过
[root@client~]#ls/opt/123.txt
ls:
无法访问/opt/123.txt:
没有那个文件或目录
[root@client~]#
[root@client~]#puppetagent--test--server=
Info:
Retrievingpluginfacts
Info:
Retrievingplugin
Info:
Cachingcatalogfor
Info:
Applyingconfigurationversion'1453435847'
Notice:
/Stage[main]/Main/Node[]/File[/opt/123.txt]/ensure:
definedcontentas'{md5}81e662de9279f558e68a6cfbb1954f7b'
Notice:
Finishedcatalogrunin0.10seconds
[root@client~]#ll/opt/123.txt
-rw-r--r--1rootroot231月2113:
08/opt/123.txt
[root@client~]#cat/opt/123.txt
hello________________>[root@client~]#
在client上测试:
在puppet服务器端安装dashboard工具
PuppetDashboard是由支持Puppet开发的公司Puppetlabs创建的,是RubyonRails程序。
可以作为一个ENC(外部节点分类器)以及一个报告工具,并且正在逐渐成为一个包含许多puppet新功能的集成界面,例如审计和资源管理功能。
PuppetDashboard是一个RubyonRails程序,用与显示Puppetmaster和agent的相关信息。
它允许你查看一个或者多个Puppetmaster汇总的图形和报告数据。
她同时从一个或者多个Puppetmaster上手机来自Puppetagent的资源数据。
最后,它能做为一个ENC来配置Puppet节点,并指定这些节点上的类和参数。
准备工作:
PuppetDashboard(1.2.3)程序目前版本只能安装在Ruby1.8.x(Dashboard还不能工作在1.9.x下或者更新的版本下),只支持MySQL作为数据库后端。
安装Mysql数据库并为dashboard建立bashboard库
[root@master~]#yuminstallruby-mysqlmysql-server
[root@master~]#/etc/init.d/mysqldrestart
[root@master~]#chkconfigmysqldon
[root@master~]#mysqladmin-urootpassword'123'#设置初始密码
[root@c1~]#mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis5
Serverversion:
5.1.73Sourcedistribution
Copyright(c)2000,2013,Oracleand/oritsaffiliates.Allrightsreserved.
OracleisaregisteredtrademarkofOracleCorporationand/orits
affiliates.Othernamesmaybetrademarksoftheirrespective
owners.
Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
mysql>
mysql>createdatabasedashboardcharactersetutf8;
QueryOK,1rowaffected(0.00sec)
mysql>createuser'dashboard'@'localhost'identifiedby'123';
mysql>grantallondatabash.*todashboard@'localhost';
QueryOK,0rowsaffected(0.00sec)yOK,0rowsaffected(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
mysql>exit
Bye
[root@c1~]#
安装Puppet-dashboard
Centos自带的源里没有puppet-dashboard和mod_passenger安装包,需要添加epel的源可是我在实验的过程中epel源里也没有mod_passenger,后来我在网上down了一个,大家可以通过我的链接下载或者通过gem安装passenger。
[root@master~]#wgethttp:
//dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@master~]#rpm-ivhepel-release-6-8.noarch.rpm
[root@master~]#yum-yinstallpuppet-dashboard
[root@master~]#rpm-ivhmod_passenger-3.0.21-4.fc17.x86_64.rpm
配置Dashboard
[root@master~]#vim/usr/share/puppet-dashboard/config/database.yml
production:
database:
dashboard#库名
username:
dashboard#用户名
password:
123#密码
encoding:
utf8
adapter:
mysql
:
wq
#修改时区
[root@master~]#vim/usr/share/puppet-dashboard/config/environment.rb
50#Theusercanoverridethisinconfig/settings.yml.
51#config.time_zone='UTC'
52config.time_zone='Beijing'##修改为北京时间
53
#初始化数据库
[root@master~]#cd/usr/share/puppet-dashboard/
[root@masterpuppet-dashboard]#rakeRAILS_ENV=productiondb:
migrate
###初始化数据库的命令
[root@master桌面]#geminstallpassenger
Buildingnativeextensions.Thiscouldtakeawhile...
Successfullyinstalledpassenger-5.0.23
1geminstalled
Installingridocumentationforpassenger-5.0.23...
InstallingRDocdocumentationforpassenger-5.0.23...
[root@master桌面]#passenger-install-apache2-module
###配置过程如下图1-4
(图1)
(图2)
(图3)##根据提示需要安装gcc-c++
(图4)
安装完毕后将LoadModulepassenger_module这段代码复制到Apache的httpd.conf主配置文件中。
wq!
保存退出
[root@master~]#cp/usr/share/puppet/ext/rack/example-passenger-
vhost.conf/etc/httpd/conf.d/passenger.conf
修改/etc/httpd/conf.d/passenger.conf中的证书位置,
[root@masterpuppet-dashboard]#find/|grepca_crt.pem
/var/lib/puppet/ssl/ca/ca_crt.pem
不知道的话可以通过find查找
启动服务:
[root@masterpuppet-dashboard]#/etc/init.d/puppet-dashboard-workersrestart
停止puppet-dashboard-workers:
[确定]
正在启动puppet-dashboard-workers:
/usr/bin/dirname:
额外的操作数"-p"
请尝试执行"/usr/bin/dirname--help"来获取更多信息。
[确定]
[root@master~]#chkconfigpuppet-dashboard-workerson
[root@master~]#chkconfigpuppet-dashboard-workers--list
puppet-dashboard-workers0:
关闭1:
关闭2:
启用3:
启用4:
启用5:
启用6:
关闭
[root@master~]#servicepuppetmasterrestart
停止
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Puppet