免费预览已结束,剩余3页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Puppet安装与配置一、 介绍:1. Puppet可以实现如下功能:随着服务器的增加,传统的系统维护方法有点捉襟见肘,于是出现了配置管理软件,利用配置管理,可以把整个公司的服务器的所有配置内容管理起来,方便大规模的管理以及快速的部署。Puppet就是一个为实现数据库中心自动化管理而设计的C/S模式配置管理软件。2. Puppet的几个概念:服务器端和客户端:服务器端保存和推送配置到客户端;清单(manifest):服务器端保存的客户端配置文件,客户端下载了manifest以后就可以应用;资源:客户端配置中,能管理到的对象被称为资源,常见(但不限于下文)的资源有 文件 用户组 用户 软件包 yum库 服务 crontab任务 文件系统挂载 zfs hosts主机管理 exec3. Puppet实现条件:首先安装建立一个puppet的C/S模型;在两台或多台服务器上分别安装puppet,其中一个是服务器端,其他是客户端(被管理者)。待到服务器端和客户端都安装完成,客户端可以从服务器端获得一个Manifest,并依此修改这个文件。4. 本文约定:黑色文字为一般描述或文件内容、绿色文字为系统运行指令、灰色底衬为系统返回信息、蓝色文字为注释说明、红色文字为特殊强调的部分。二、 环境搭建:1. 环境的介绍服务端:1 客户端:2 client. OS/Kernal:CentOS 5.4(Final)2.6.18-164.el5 #1 SMP关闭Selinux,精简系统启动服务。2. 安装Puppet前的软件准备(此步服务端、客户端配置一样)a. 添加Puppet用户rootmaster # groupadd puppetrootmaster # useradd -g puppet -s /bin/false -M puppetb. 首先要确保客户端和服务端时间同步,可以在服务端建立ntp服务端,然后让客户端做时间同步,也可直接设置服务端与客户端日期,相差不要太大就可以。否则当客户端向服务端提交认证时总提示错误,切记。c. 修改Host文件,因为puppet的服务端和客户端的认证是靠主机来生成认证文件的,所以主机名的设置很重要。rootmaster # echo 1 /etc/hostsrootmaster # echo 2 /etc/hostsd. Puppet是基于ruby开发的,所以必须安装ruby,可以使用yum或rpm安装ruby。rootmaster # rpm -qa|grep rubyruby-libs-1.8.5-5.el5_3.7ruby-1.8.5-5.el5_3.7e. Facter是官方wiki上提到必须要安装的一个包,它是用来搜集当前安装系统的环境变量信息, 然后puppetd 把这些信息发送到服务器端.rootmaster # wget /facter/facter-1.6.0.tar.gzrootmaster #tar zxvf facter-1.6.0.tar.gzrootmaster #cd facter-1.6.0/& ruby install.rb & cd . #这个包并不需要make,用ruby就可以安装;rootmaster # facter #执行以下这个命令就可以看到facter获取到的变量名和内容;3. 安装Puppet(此步服务端、客户端配置一样)rootmaster #wget /downloads/puppet/puppet-2.6.9.tar.gzrootmaster #tar zxvf puppet-2.6.9.tar.gz & cd puppet-2.6.9/ & ruby install.rb#安装完成后我们要拷贝默认的配置文件到/etc/puppet;rootmaster # mkdir -p /etc/puppet &cp conf/redhat/* /etc/puppet/ & cd 4. 验证安装是否成功(此步服务端、客户端配置一样)rootmaster # puppet masterrootmaster # ps -ef|grep puppet|grep -v greppuppet 10298 1 0 10:06 ? 00:00:00 /usr/bin/ruby /usr/bin/puppet masterrootmaster # kill 10298 #10298是正在运行puppet的pid。5. 服务端设置a. 将puppetmasterd设为服务,并自启动。rootmaster # cp /etc/puppet/server.init /etc/init.d/puppetmasterd#这个文件最早在源码包/conf/redhat/里,刚被我们拷贝到了/etc/puppet目录下。rootmaster # chmod 755 /etc/init.d/puppetmasterdrootmaster # chkconfig -add puppetmasterdrootmaster # chkconfig -level 35 puppetmasterd on#将puppetmasterd服务脚本添加为服务,并在3、5级别启动。rootmaster # service puppetmasterd xxxUsage: /etc/init.d/puppetmasterdstart|stop|status|restart|reload|force-reload|condrestart|genconfig#现在我们就可以跟其他服务一样用service命令来启动、关闭服务了。rootmaster # service puppetmasterd start启动 puppetmaster: 确定b. Puppet服务端默认端口8140端口侦听服务,需要在iptables上开启该端口。rootmaster #iptables -A INPUT -p tcp -dport 8140 -j ACCEPT#请在/etc/sysconfig/iptables 中加入上文的规则,并重启iptables。6. 客户端设置将puppetd设为服务,并自启动。rootclient # cp /etc/puppet/client.init /etc/init.d/puppetd#这个文件最早在源码包/conf/redhat/里,刚被我们拷贝到了/etc/puppet目录下。rootclient # chmod 755 /etc/init.d/puppetdrootclient # chkconfig -add puppetdrootclient # chkconfig -level 35 puppetd on#将puppetd服务脚本添加为服务,并在3、5级别启动。rootclient # service puppetd xxxUsage: /etc/init.d/puppetmasterdstart|stop|status|restart|reload|force-reload|condrestart|genconfig#现在我们就可以跟其他服务一样用service命令来启动、关闭服务了。rootclient # service puppetd start启动 puppetd: 确定7. 审批证书a. 客户端申请证书rootclient # telnet 8140 #验证解析和链接是否正常Trying 1.Connected to (1).Escape character is .Connection closed by foreign host.rootclient # puppetd -test -server #向服务器端申请证书info: Creating a new SSL key for warning: peer certificate wont be verified in this SSL sessioninfo: Caching certificate for cawarning: peer certificate wont be verified in this SSL sessionwarning: peer certificate wont be verified in this SSL sessioninfo: Creating a new SSL certificate request for info: Certificate Request fingerprint (md5): 69:BE:01:74:06:FF:42:BB:78:59:29:F6:09:AA:14:BBwarning: peer certificate wont be verified in this SSL sessionwarning: peer certificate wont be verified in this SSL sessionwarning: peer certificate wont be verified in this SSL sessionExiting; no certificate found and waitforcert is disabledb. 服务端接受申请rootmaster # puppetca -list#查看当前待批准证书列表rootmaster # puppetca -s #批准当前证书notice: Signed certificate request for notice: Removing file Puppet:SSL:CertificateRequest at /var/lib/puppet/ssl/ca/requests/.pemc. 客户端取回已经通过审批的证书rootclient # puppetd -test -server warning: peer certificate wont be verified in this SSL sessioninfo: Caching certificate for info: Caching certificate_revocation_list for cainfo: Caching catalog for info: Applying configuration version 1315491634notice: Finished catalog run in 0.02 seconds注意:上文中的红色粗体部分,生成证书时主机名会写入证书,如果生成证书后再更改主机名证书就失效了。而且请不要用client这类简写名字,而应该用这类全名申请证书.d. 重新审批旧机器的新证书。当申请到证书以后我们对比下这两个文件,他们的MD5值是一样的;rootmaster # md5sum /var/lib/puppet/ssl/ca/signed/.pem #这是服务器端8a9f9c36926745ea49b93a1a1b629ed3 /var/lib/puppet/ssl/ca/signed/.pemrootclient # md5sum /var/lib/puppet/ssl/certs/.pem #这是客户端8a9f9c36926745ea49b93a1a1b629ed3 /var/lib/puppet/ssl/certs/.pem其实申请证书的过程就是服务器端生成证书,并发送到客户端的过程。如果因为意外要重新给旧机器审批证书,我们需要做以下两点才可以重新注册。rootmaster # puppetca -clean #清除服务端的证书。或者rm -rf /var/lib/puppet/ssl/ca/signed/.pem删除已经注册给客户机“”的证书;rootclient # rm -rf /var/lib/puppet/ssl/ #客户端要删掉ssl目录。然后执行a、b、c三步。8. 功能测试在服务器端新建一个/etc/puppet/manifests/site.pp文件,大意是在/tmp下创建Puppet_test.txt测试文件。rootmaster #vi /etc/puppet/manifests/site.ppnode default file /tmp/Puppet_test.txt: #这是文件路径名;content=This is test of PUPPET; #这是文件的内容;rootmaster #service puppetmasterd restart #初次创建这个文件需要重启服务;rootmaster #puppet /etc/puppet/manifests/site.pp #执行此命令使site.pp配置生效;notice: /Stagemain/Nodedefault/File/tmp/test.txt/ensure: defined content as md50d31f0cb46dc51da999298473d3d26a3notice: Finished catalog run in 0.10 seconds在客户端执行命令会得到如下提示信息:rootclient #puppetd -test -server info: Caching catalog for info: Applying configuration version 1287350100notice: /Stagemain/Nodedefault/File/tmp/ Puppet_test.txt/ensure: defined content as md5366e5662f290439eef7b150b2b0228d1notice: Finished catalog run in 0.07 secondsrootclient #cat /tmp/Puppet_test.txtThis is test of PUPPET9. 客户端设置守护进程rootclient #service puppetd stoprootclient #puppetd -server -verbose -waitforcert 60#-server告诉它master结点的ip,-waitforcert是说每60秒去server检查,-verbose是可选的输出冗余信息。部分情况下puppet服务会无法启动,且提示puppet已经启动,这个时候需要删除一个文件:rootclient #/usr/sbin/puppetd -test -server notice: Run of Puppet configuration client already in progress; skippingrootclient #rm /var/lib/puppet/state/puppetdlock至此,Puppet C/S环境搭建完毕。三、 配置文件语法说明:1. 最简单的mainfest;下面就以刚才的示例文件来举例说明puppet的配置文件语法;node default #节点设置,default是所有节点都会应用的设置;file #file定义了资源的类型是文件;/tmp/Puppet_test.txt:#资源的title,在未设置文件名时兼职做文件名;content=This is test of PUPPET; #content是定义内容的动作,引号里是具体的内容;#这个中括号内的设置都会应用到default节点上。2. 接下来举个稍微有些变化的例子,让我们复习一下puppet;node web,db #现在我只指定web和db两个节点会执行下面的操作(注意单引号和逗号);file #file定义了资源的类型是文件;Puppet_test2: #这次资源title不兼职做文件名了;name =/tmp/Puppet_test2.log,#这是上次例子中被省略掉的name项;content=This is Puppet_test2 PUPPET. #这次我故意将1行内容扩展为三行;Welcome to Zhengzhou!test 1234. #这里才是文件的结尾;Service #这是另一种资源类型“service”;cups: #资源title和name都是cups;ensre =stopped; #执行关闭服务的命令;xfs: #在同一资源类型里定义另一个资源;ensure =stopped; #实际上好几种服务(如蓝牙)并不支持这样关闭,这个例子是为了说明语法; #上文中的引号和扩号已经标识的很清楚了,但是诸如冒号(资源名后面)、逗号(资源内属性区分); #分号(同一类型内不同资源区分)都很容易被忽略导致语法错误,特用红色加粗字体注明;Import “idctest/sky.pp” #这个设置类似apache的include,可以用相对路径和绝对路径。在接下来的实际配置中,你会发现puppet的实际配置语法并不是太严格,比如说在某些不会引起歧义的地方少个逗号或者分号,在做部分资源定义的时候并不要都加上引号。四、 File资源:1. 配置puppet文件服务:配置puppet文件服务很简单,修改下文配置文件并重启服务。rootmaster #egrep -v #|$ /etc/puppet/fileserver.conftest #我们设置这个模块的名字为“test”;path /etc/puppet/client_conf/test#这是实际上这个模块的路径;allow *#我们可以用allow、deny来限制使用者的资格,现在设置为*是允许所有人访问;code#我们设置这个模块的名字为“code”;path /etc/puppet/client_conf/code#这是实际上这个模块的路径;allow *#我们可以用allow、deny来限制使用者的资格,现在设置为*是允许所有人访问。rootmaster #/etc/init.d/puppetmasterd restart#重启服务2. File资源的几个主要属性:下面是我截取的一段manifests,以对节点“client”进行的配置为例讲解一下常用的file资源属性.node client #下文的配置只对节点名为C的服务器生效;file /etc/hosts: #定义同步hosts文件;资源title和path二合一的表示方法;source = puppet://test/host1, #数据来源自puppet文件服务器,其中test是上文文件服务器中设置的模块名,源文件在服务器端的绝对路径是/etc/puppet/client_conf/test/host1;backup = .bak_$uptime_seconds; file /tmp/testfile1:source = /etc/sysconfig/i18n, #注意,这里的文件取自客户机本机的绝对路径,并非服务器!backup = .bak_$uptime_seconds,#这是可选项,在替换文件时可以对源文件进行备份,.bak以点开头说要通过原名加后缀名的方式做备份,$uptime_seconds是前文安装的facter软件提取的变量,选开机秒数做命名是考虑到不易重名,假设当前开机了15554秒,备份后的/tmp/testfile1的全名应该为“/tmp/testfile1.bak_15554”;group = daemon, #设置文件属组;owner = daemon, #设置文件属主;mode = 600; #设置文件权限;$abc = Test Variable#这里也可以给变量赋值,我们随意设定变量abc;file /tmp/testfile2:content = $abc;#变量的内容可以直接导入到文件内;file #接下来,我们要测试一个叫做ensure的资源属性;/tmp/testfile3 :ensure = /etc/sysconfig/network;#这就是将/etc/sysconfig/network做个软链接;/tmp/testfile4 :ensure = absent; #absent就是检测文件是否存在,如果存在则删除;/tmp/testfile5 :ensure = present; #present正好相反,如果不存在则创建;/tmp/testdir1 :ensure = directory; #这是创建一个目录的方法;/tmp/testdir2/ :#可以看到,资源定义里写不写最后一个斜杠都没关系;ensure = absent, #这是删除一个目录的方法;force = true; #删除目录必须加上这个参数,目录下的文件、子目录都被强制删除;file /tmp/testdir3: #下面我们尝试整目录内的内容复制,跟rsync差不多;ensure = directory, #定义这是个必须存在的目录;source = puppet://code,#指定数据的来源可以是客户机本地也可以是服务器;ignore = *log*, #排除不同步的log目录和文件,支持shell下常用的通配符;recurse = true, #是否递归到子目录,该选项必须选;purge = true, #是否要删除服务器端没有而客户端有的文件,(可选项);force = true; #配合上文,如果要删除的是子目录就需要加上force参数;#整个节点的括号,一定不要忘记了。3. 在客户端执行一次“puppetd -test -server ”,检查以下要点:a. 服务器端的host1文件内容是否同步到了本机,且改名为hosts了;b. /tmp/testfile1是否创建了,且内容和本机/etc/sysconfig/i18n一致,属主、属组、权限是否符合设定要求;c. /tmp/testfile2的文件内容是否是“Test Variable”;d. /tmp/testfile3是不是一个连接到network的软连接;e. /tmp/testfile5是否被创建;f. /tmp/testdir1是否被创建,且是一个目录;g. /tmp/testdir3目录是否被创建,文件、子目录是否被创建,按文件名匹配是否排除了log?4. 二次调试。刚才只是创建了一些文件,我们模拟一下这些文件的维护工作;首先我们在服务器端更改一些文件:a. 修改host1,在文尾加入“#test 111”,请注意不要忽略井号。b. 模拟更新代码,修改并添加几个code目录下不会被排除的文件;然后在客户端做如下设置:a. 修改/etc/hosts,在文尾加入“#test 222”;b. 给/etc/sysconfig/i18n在文尾加入“#test 333”;c. 手工创建/tmp/testfile4;d. 手工创建/tmp/testdir2,并在该目录下新建一些子文件夹和文件;e. 模拟程序运行过程中会产生一些临时文件,在/tmp/testdir3下改动新建一个叫做client_log的文件;f. 模拟骇客入侵恶意修改主页,修改/tmp/testdir3/codea;5. 再次在客户端执行同步命令,同步完成后检查如下要点:a. /etc/hosts中客户端修改的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预应力结构加固技术要点
- 加拿大中文发展概况
- 2025版老年性白内障病常见症状及护理指南
- 反思异化确立发展新理念
- 2025年低压电工资格考试模拟试卷及答案
- 2025hsk考试试题及答案
- 员工财务制度培训
- 考施工电梯操作证的试卷及答案
- 2024年民航职业技能竞赛必考题库及答案
- 口腔病人的护理查房培训课件
- 图文广告服务投标方案(技术方案)
- 第3章(2) VFP的常用函数
- 诉讼代理人委托书
- DBJ∕T15-234-2021 广东省绿色建筑检测标准
- 2022秋季教科版2017版六年级 上册《科学》全册期末复习 知识总结 背诵归纳
- 统编版《复活》教学课件(共33张)
- 保安队排班表
- 超滤膜技术介绍及应用课件(PPT 36页)
- 矫正教育学习题集(DOC)
- 眼镜项目规划设计方案
- 第四章 质谱分析法
评论
0/150
提交评论