CentOS安装Puppet

环境介绍:


系统:Centos6.2_x86_64 基于最小化安装
puppet版本:puppet-server-3.0.2


服务器端: monitor.yooke.com   192.168.56.101
客户端: node1.yooke.com   192.168.56.102
node2.yooke.com   192.168.56.103


安装前的环境配置:
1、服务器端和客户端主机名必须为FQDN格式域名,并添加hosts解析
2、服务器端和客户端的时间同步
3、uname -r 命令执行结果与主机名相同
4、为避免不必要的麻烦,关闭selinux和iptables,或设置好相关规则

一、服务器端安装


1、安装官方yum源包后就可以通过yum自动解决依赖关系
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm 


2、通过yum安装puppet-server
yum -y install puppet-server


3、启动服务并设置开机启动
service puppetmaster start
chkconfig puppetmaster on


二、客户端的安装配置


1、安装官方yum源包后就可以通过yum自动解决依赖关系
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm 
rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-6.noarch.rpm
2、通过yum安装puppet
yum -y install puppet


3、修改puppet配置文件
vi /etc/puppet/puppet.conf ==>   在[agent]段内添加

server = monitor.yooke.com

4、启动服务并设置开机启动
service puppet start
chkconfig puppet on


三、证书申请与配置自动签署


1、如果按照上面客户端的安装步骤来安装的话,在客户端启动puppet服务时,会自动向服务端发送证书申请,可在服务端通过如下命令查看:
[root@monitor ~]# puppet cert list --all
XXXXXXXXX1XXXXXXXXXXXXXXX
可以看到有两个证书申请,一个是monitor.yooke.com即服务端自己的,另一个是node1.yooke.com即客户端的,服务端的证书前边有个“+”说明该证书已经签署给该主机,服务端会在第一次启动服务时生成一个自签证书。


如果没有查看到客户端的证书申请,可在客户端手动执行:puppet agent --server monitor.yooke.com 提交证书申请。


2、给客户端签署证书
在服务端执行如下命令:
[root@monitor ~]# puppet cert --sign node1.yooke.com
XXXXXXXXXXXXXX2XXXXXXXXXXXXXXXXX
也可以通过:puppet cert --sign --all 来签署所有的未签署的证书申请


再次执行查看证书命令;
[root@monitor ~]# puppet cert list --all
XXXXXXXXXXXXXXX3XXXXXXXXXXXXXXXXXXXXXX
可以看到node1.yooke.com的证书已经成功签署


3、配置自动签署证书
自动签署证书只需要在/etc/puppet目录下创建autosign.conf文件即可
[root@monitor ~]# vi /etc/puppet/autosign.conf      ==>  添加如下


*.yooke.com


这样就可以自动签署来自于yooke.com域的证书申请


4、删除已签署的证书
可能在现实环境中由于种种原因,原来的证书无法使用时,需要删除证书从新申请,可通过以下步骤删除
A> 在服务端执行:puppet cert --clean node1.yooke.com 
B> 在服务端执行:service puppetmaster restart
C> 在客户端执行:rm -rf /var/lib/puppet/ssl


四、测试客户端


1、现在可以测试下客户端与服务端的通信了
[root@node1 ~]# puppet agent --test
XXXXXXXXXXXXXX4XXXXXXXXXXXXXXXXXXXXXXXX
可以看到成功通过测试,现在还没有执行具体的内容。


2、测试下和服务端同步文件
A>在服务端创建资源定义文件:
[root@monitor ~]# vi /etc/puppet/manifests/site.pp    ==>  内容如下
XXXXXXXXXXXXXXXX5XXXXXXXXXXXXXXXXXXXXXX
B>创建相关目录和文件:
[root@monitor ~]# mkdir -p /etc/puppet/modules/test/files
[root@monitor ~]# cp /etc/fstab /etc/puppet/modules/test/files
C>在客户端执行同步:
[root@node1 ~]# puppet agent --test
XXXXXXXXXXXXXXXXXXXXX6XXXXXXXXXXXXXXXXXXXXXX
D>验证结果:
[root@node1 ~]# ll /tmp/
XXXXXXXXXXXXXXXXXXXXXX7XXXXXXXXXXXXXXXXXXXXXX
成功通过测试!


说明:资源文件的语法等其他内容会在后续的其他文章中解释,现在只做下基本的测试。


五、配置由服务端发起同步


1、在客户端修改配置文件/etc/puppet/puppet.conf使puppet能够监听端口
[root@node1 ~]# vi /etc/puppet/puppet.conf    ==> 在[agent]段添加如下行

listen = true


2、编辑认证配置文件/etc/puppet/auth.conf
[root@node1 ~]# vi /etc/puppet/auth.conf     ==>  在path / 之前添加如下


path /run
method save
allow monitor.yooke.com


添加在最后两行path /  之前。


3、在客户端重启puppet服务
[root@node1 ~]# service puppet restart 


通过命令可以查看到监听了8139端口
[root@node1 ~]# netstat -tnlp
XXXXXXXXXXXXXXXX8XXXXXXXXXXXXXXXXXXXXXXXX


4、新增个资源文件测试
A>在服务端编译资源定义文件:
[root@monitor ~]# vi /etc/puppet/manifests/site.pp   ==>  内容如下:
XXXXXXXXXXXXXXXXXXXXX9XXXXXXXXXXXXXXXXXXXXXXXX
B>在服务器端执行同步命令
[root@monitor ~]# puppet kick --host node1.yooke.com   
XXXXXXXXXXXXXXXXXXXXXX10XXXXXXXXXXXXXXXXXXXXXX
最上边的两条警告可以暂时不用管他,其他的输出可以看到成功完成
C>在客户端验证
XXXXXXXXXXXXXXXXXXXXXXX11XXXXXXXXXXXXXXXXXXXXX
成功通过测试!


六、其他


1、puppet的3.0以后的版本与之前的版本命令差别很大,下边给出一个与之前版本命令的参照表:
+-----------------------------------+
|     旧命令   |      新命令 |
|puppetmasterd | puppet master |
|puppetd | puppet agent |
|puppet | puppet apply |
|puppetca | puppet cert |
|ralsh | puppet resource |
|puppetrun | puppet kick |
|puppetqd | puppet queue |
|filebucket | puppet filebucket |
|puppetdoc | puppet doc |
|pi | puppet describe |
+-----------------------------------+
这样看起来也比较清晰统一。

2、puppet的工作完全是基于主机名的, 所以在环境配置完成后不要随便更改主机名。


3、通信的报错大部分都是因为证书不匹配、时间同步或者主机名的问题,排错时一定要细心查看。


4、由于客户端可能要安装很多,所以我自己写了个客户端的安装脚本,服务端的主机名定义为一个变量,可根据自己情况进行修改,我这里安装客户端时使用了yum -y localinstall packages/*.rpm ,是提前把安装客户端时依赖的软件都放在与脚本同一目录的叫packages的目录中,这样即时客户端不能联网也可以顺利安装,脚本内容如下:


#!/bin/bash
# install the puppet client


SERVER=monitor.yooke.com
#HNAME=node2.yooke.com
read -p "Please input the hostname for FQDN format: " HNAME
echo -e "You are input the hostname is: \033[31m$HNAME\033[0m ,are you sure?"
read -p "Input [y|n]: " COS
[[ $COS != "y" ]] && echo "Exit install ..." && exit 


# sync time
echo -e "\nStarting sync the time,please wait ...\n"
for I in {1..3};do
if /usr/sbin/ntpdate 210.72.145.44 &> /dev/null ;then
echo -e  "\033[32mntpdate sync success!\033[0m"
break
elif [ $I -eq 3 ];then
echo "ntpdate sync failed!"
else
echo "sync time failed,try agin ...$I"
fi
let I++
done


# configure hostname
sed -i "s/HOSTNAME=.*/HOSTNAME=$HNAME/" /etc/sysconfig/network


# install packages
echo -e "\nStarting install puppet client,please wait ...\n"
mv /etc/yum.repos.d /etc/yum.repos.d.temp &> /dev/null
yum -y localinstall packages/*.rpm &> /dev/null &&
chkconfig puppet on 
if [ $? -eq 0 ];then
echo -e "\033[32mpuppet client already install complete!\033[0m" 
mv /etc/yum.repos.d.temp /etc/yum.repos.d &> /dev/null
else
echo -e "\033[31mpuppet install failed!\033[0m"
mv /etc/yum.repos.d.temp /etc/yum.repos.d &> /dev/null
exit
fi


# configure puppet client
cat >> /etc/puppet/puppet.conf << EOF
    server = $SERVER
    listen = true
EOF


cat >> /tmp/temp_puppet.txt << EOF
path /run
method save
allow $SERVER
EOF


sed -i '/^# of/r/tmp/temp_puppet.txt' /etc/puppet/auth.conf
rm -f /tmp/temp_puppet.txt


# end
cat << EOF


+---------------------------------------+
|     Script run end,if no error        |
|       Please reboot system ...        |
+---------------------------------------+


EOF


执行脚本注意:1、安装客户端需要的软件包放在与脚本相同目录的packages目录中。
 2、脚本没有修改hosts文件,因此应根据实际情况添加hosts文件解析。


 
添加自定义的挂载点:
编辑fileserver.conf文件添加:
[san]
path /mnt/san/data
使用方法:
source => "puppet:///san/XXX"   实际路径:/mnt/san/data/XXX"
还可以添加allow、deny参数来拒绝或允许某些客户端从这里获取数据。

使用httpd+passenger处理客户端请求


创建httpd的配置文件:
cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/rack.conf
编辑该文件修改如下内容:
        SSLCertificateFile      /var/lib/puppet/ssl/certs/puppet.server.cihi.cn.pem        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet.server.cihi.cn.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem

二猛原创

你可能感兴趣的:(CentOS安装Puppet)