Puppent 介绍原理及安装

时间:2022-08-21 20:32:48

Puppet原理

  Puppet是一个或者多个master,众多client,所有的客户端都定期(默认为30分钟)使用facter工具把

客户端的基本信息,通过https的xmlrpc协议发送给服务器端,服务器端通过分析客户端主机名,找到该主机

的配置代码,然后编译配置代码,把编译好的配置代码发送回客户端,客户端执行代码完成配置,并且把代码

执行情况反馈给puppet服务器端。

注释:xmlrpc是使用http协议作为传输协议的rpc机制,使用xml文本的方式传输命令和数据。

安装配置

环境

系统版本

# cat /etc/redhat-release
CentOS release 6.6 (Final)

在Master和Client设置Hosts
Puppet要求所有机器有完整的域名,如果没有DNS服务器提供域名的话,可以在机器上设置主机名
(注意:要先安装Puppet之前设置主机名,因为安装Puppet时会把主机名写入证书,客户端和服务端通信需要这个证书),为了简化安装 直接配置/etc/hosts

#vim /etc/hosts

10.20.0.80 master01.test.com
10.20.0.81 client01.test.com

系统配置
在Master和Client上面均关闭selinux,iptables:
===================Stop Iptables========================

# service iptables stop
# chkconfig iptables off

关闭selinux

# sed -i 's/enforcing/disabled/g' /etc/selinux/config

NTP时间同步=====重要

#yum -y install ntp
#ntpdate pool.ntp.org
# chkconfig ntpd on
# chkconfig --list | grep ntp
ntpd :off :off :on :on :on :on :off
ntpdate :off :off :off :off :off :off :off =============Start NTP================
service ntpd start
Starting ntpd: [ OK ]、

创建组和用户

#groupadd puppet
#useradd -g puppet -s /sbin/nologin puppet

安装puppet

[root@master01 ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[root@master01 ~]# rpm -ivh puppetlabs-release--.noarch.rpm
[root@master01 ~]# yum update

Master服务端安装

#yum -y install ruby ruby-libs ruby-shadow puppet puppet-server facter

启动服务并且设置开机启动

########################Satrt Service#########################
[root@master01 ~]# service puppetmaster start
Starting puppetmaster: [ OK ] [root@master01 ~]# chkconfig puppetmaster on

检查是否启动成功

[root@master01 ~]# netstat -tunlp | grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /ruby
默认端口为8140
启动成功

客户端安装配置

[root@client01 ~]# yum -y install puppet

配置文件  添加一条内容

vim /etc/puppet/puppet.conf
[agent]
server = master01.test.com

启动客户端并添加开机启动

[root@client01 ~]# service puppet start
Starting puppet agent: [ OK ]
[root@client01 ~]# chkconfig puppet on

证书申请
client需要向服务器端发出请求, 让服务器对客户端进行管理. 这其实是一个证书签发的过程. 第一次运行puppet 客户端的时候会生成一个 SSL 证书并指定发给 Puppet 服务端, 服务器端如果同意管理客户端,就会对这个证书进行签发,可以用这个命令来签发证书,由于我们已经在客户端设置了server地址,因此不需要跟服务端地址。

Master 自动添加

# cat > /etc/puppet/autosign.conf <<EOF

> *.fisteam2.com

> EOF

agent端去请求证书

[root@client01]#puppet agent --no-daemonize --onetime --verbose --debug
[root@client01]#puppet agent --test

master查看客户端list

[root@master01]# puppet cert list -all
+ "client01.test.com" (SHA256) :A4:D8:3F:CC::4E:FB:4F::::B5::A3::B8:0C:E4:1E:7C:E3:EA:2B:D6:7A:A2:B5:8E:C0:1A:9B
+ "master01.test.com" (SHA256) ED:::9F:CC:A1:7D::0E::::CB::CD:::F9::1E:::::DE:::2D:::FE: (alt names: "DNS:master01.test.com", "DNS:puppet", "DNS:puppet.test.com")

+是已经签好了证书 如果没有+是没有签发成功的
如果没有添加到的话 可以使用

[root@master01]# puppet cert --sgin client01.test.com

puppet基本命令方法

删除证书或者所有

puppet cert clean client01.test.com
puppet cert clean --all

如果出现错误 可以重新来执行
1 在agent端执行

cd /var/lib/puppet
rm -rf ssl/
service puppet restart

2 master执行

cd /var/lib/puppet/ssl/ca/signed
rm -rf client01.test.com
service puppetmaster restart