当前位置:首页 > Puppet初级入门
庖丁解Puppet之
操作记实
Date:2012-02-20
Webside1:www.liuguohua.com Webside2:369369.blog.51cto.com QQ:59966284
系统环境: 服务器 nfstest testsns 软件包 软件包外 facter Puppet 环境安装:
Puppet 是用ruby语言写的,所以要安装ruby环境,服务器端与客户端都要安装,我这的环境是尽量最小化安装,都没有装ruby。要精细化安装的话,需要安装4个包。 [root@testsns ~]# yum –y install ruby*
精细化安装Ruby环境
1.puppet是基于ruby开发。所以要安装ruby语言环境。 找到相应版本对应的ruby的rpm包(下以redhat 5.4为例) rpm –ivh ruby-libs-1.8.5-5.el5_2.3.i386.rpm rpm –ivh ruby-1.8.5-5.el5_2.3.i386.rpm 2.Rdoc的安装。
如果需要查看帮助文档,需要安装此包。有一点特殊说明,此包在AS4上未找到相关的rpm。所以建议服务端使用5.0以上的版本。 rpm –ivh ruby-irb-1.8.5-5.el5_2.3.i386.rpm rpm –ivh ruby-rdoc-1.8.5-5.el5_2.3.i386.rpm
Server端安装 时间同步:
Ntpdate ntp.api.bz // time.nist.gov 192.168.133.10
安装Facter用来获取客户端系统信息(如hostname,ip,OS-Version,fqdn等)
下载地址 http://downloads.puppetlabs.com/facter/facter-1.6.5.tar.gz http://downloads.puppetlabs.com/puppet/puppet-2.6.13.tar.gz 备 注 OS系统 centos5.5 X64 centos5.5 X64 IP地址 192.168.133.42 192.168.133.44 备 注 Puppet client Puppet Server [root@testsns opt]# tar zxvf facter-1.6.5.tar.gz [root@testsns opt]# cd facter-1.6.5
[root@testsns facter-1.6.5]# ruby install.rb [root@testsns facter-1.6.5]# cd ..
[root@testsns opt]# tar zxvf puppet-2.6.13.tar.gz [root@testsns opt]# cd puppet-2.6.13
[root@testsns puppet-2.6.13]# ruby install.rb
[root@testsns puppet-2.6.13]# cp conf/auth.conf /etc/puppet/
[root@testsns puppet-2.6.13]# cp conf/redhat/fileserver.conf /etc/puppet/ [root@testsns puppet-2.6.13]# cp conf/redhat/puppet.conf /etc/puppet/
[root@testsns puppet-2.6.13]# cp conf/redhat/server.init /etc/init.d/puppetmaster [root@testsns puppet-2.6.13]# chmod +x /etc/init.d/puppetmaster [root@testsns puppet-2.6.13]# chkconfig --add puppetmaster [root@testsns puppet-2.6.13]# chkconfig puppetmaster on [root@testsns puppet-2.6.13]# mkdir -p /etc/puppet/manifests 生成pupput用户
[root@testsns opt]# puppetmasterd --mkusers 启动
[root@testsns opt]# /etc/init.d/puppetmaster start
Slave端安装 时间同步:
Ntpdate ntp.api.bz
和服务器端安装方法一样,先安装ruby环境,再安装facter和puppet,只是在puppet拷贝配置文件时要注意。
安装Facter用来获取客户端系统信息(如hostname,ip,OS-Version,fqdn等) [root@testsns opt]# tar zxvf facter-1.6.5.tar.gz [root@testsns opt]# cd facter-1.6.5
[root@testsns facter-1.6.5]# ruby install.rb [root@testsns facter-1.6.5]# cd ..
[root@testsns opt]# tar zxvf puppet-2.6.13.tar.gz [root@testsns opt]# cd puppet-2.6.13
[root@nfstest puppet-2.6.13]# ruby install.rb
[root@nfstest puppet-2.6.13]# cp conf/auth.conf /etc/puppet/
[root@nfstest puppet-2.6.13]# cp conf/namespaceauth.conf /etc/puppet/ [root@nfstest puppet-2.6.13]# cp conf/redhat/puppet.conf /etc/puppet/ [root@nfstest puppet-2.6.13]# cp conf/redhat/client.init /etc/init.d/puppet [root@nfstest puppet-2.6.13]# chmod +x /etc/init.d/puppet [root@nfstest puppet-2.6.13]# vi /etc/puppet/puppet.conf --- [agent]
Listen = true
Server = testsns ---
[root@nfstest puppet-2.6.13]# vi /etc/puppet/namespaceauth.conf ----
[fileserver] allow * [puppetmaster] allow * [puppetrunner] allow * [puppetbucket] allow * [puppetreports] allow * [resource]
allow * ----
[root@nfstest puppet]# puppetmasterd --mkusers [root@nfstest puppet]# /etc/init.d/puppet start
修改双方的/etc/hosts文件,添加各自的IP地址对应的主机名,生产环境做内部DNS比较好,不用修改每台服务器的hosts文件。 192.168.133.42 nfstest 192.168.133.44 testsns
关闭双方的防火墙及selinux,或开放8140(server服务器端口),8139(client服务器端口)。相互作ping hostname telnet hostname 8140 test hostname 8139等,看网络及hosts是否正常
认证:
客户端发送请求
Puppeted --test –server testsns
服务器查看 Puppetca –list 服务器端签名
Puppetca –s –a //对所有客户端全部签名 Puppetca –s nfstest //只签名某个客户端
功能模块介绍及实例操作
文件传输:
文件分发:
通过puppet可以向被管理机上推送文件,方法是使用file类型的source属性
第一步:修改/etc/puppet、fileserver.conf 第二步:修改/etc/puppet/manifests/ site.pp 实例:要把server服务器上/opt目录下的mysql-5.1.49-linux-i686-icc-glibc23.tar.gz传输至client服务器的/opt目录下,文件名不变。 第一步:Vi /etc/puppet/fileserver.conf [files] path /opt/
allow 192.168.133.0/24
第二步:vi /etc/puppet/manifests/site.pp file
{ \
source => \}
第三步:
在client客户端执行更新命令 puppetd --test --server testsns
此处“$puppetserver”是puppet Server端的名称,即hostname,网上教程都是在hosts里指定,生产环境下用内部的DNS上作解析,像我公司一个www平台就有70台linux服务器,一个个添加hosts,不搞死人去。
修改文件属性:
目的:把/tmp/dd142/ puppet-2.6.13.tar.gz文件的权限改为puppet用户,并设置权限为666 第一步:编辑Server端的site.pp vi /etc/puppet/manifests/site.pp --- file
{ \ owner => \ group => \ mode => 666, } ----
第二步:在client端执行命令 puppetd --test --server testsns
执行SHELL命令或shell脚本:
实例:通过puppet分发执行shell脚本,在客户端的opt目录下新建一目录shelldir。 第一步:编辑Server端的site.pp vi /etc/puppet/manifests/site.pp
exec { \cwd => \
command => %user => \
path => \}
第二步:在client端编辑一shell脚本 Vi /opt/lgh.sh #!/bin/bash
mkdir /opt/shelldir
第三步:在client端执行命令 puppetd --test --server testsns
在/opt目录下查看shelldir有没有建立。
服务检查及修改:
可以通过puppet对一些服务进行检查。puppet是通过service命令操作的。所以,只能针对在/etc/init.d/目录下的服务
实例:把客户端的防火墙起来(原来是关闭的)
vi /etc/puppet/manifests/site.pp //清空site.pp,再新建
service
{ iptables:
ensure => \
}
cron计划任务:
接上面的shell程序实例,在17:30执行/opt/lgh.sh。
cron { \部分,可用来作为注释。 command => \ #要执行的命令
user => \#添加到root用户下的crontab中 minute => \ #即第一个星号 hour => \ #即第二个星号 }
共分享92篇相关文档