puppet部署步骤、遇到的问题及解决办法

puppet安装配置:

1、 安装ruby、hiera、ntp、facter、puppet及其相关依赖包

tar xvJf down.tar.xz

yum localinstall ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm

yum localinstall ruby-shadow-1.4.1-23.el7.x86_64.rpm

yum localinstall hiera-1.3.4-5.el7.noarch.rpm

yum localinstall ruby-augeas-0.5.0-1.el7.x86_64.rpm

yum localinstall facter-2.4.1-1.el7.x86_64.rpm

yum localinstall rubygem-rgen-0.6.6-2.el7.noarch.rpm

yum localinstall puppet-3.6.2-3.el7.noarch.rpm

2、安装NTP Server
由于Puppet需要使用SSL证书,依赖时间同步,所有需要搭建NTP服务器。
(1)关闭所有服务器的防火墙和安全性策略
systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0

(2)启动ntp服务

service ntpd start #启动ntp服务

chkconfig ntpd on

(3)查看同步状态`
ntpstat #查看同步状态

(4)同步时间

在master端和agent端执行:ntpdate 22.5.225.0

  1. 配置puppet master

(1)规划主机名
vi /etc/hostname master01.test.cn #修改相应的主机名

vi /etc/hosts #添加

28.4.174.33 master01.test.cn

28.4.174.34 agent01.test.cn

(2)修改hostname:hostname master01.test.cn
然后重启,将安全性策略再关一下
setenforce 0

(3)启用puppet:puppet master start

验证puppet是否启用:netstat -tunlp |grep “8140”

(4)编辑puppet配置文件
vi /etc/puppet/puppet.conf

server端 [main]"

server = master.test.cn

certname = master.test.cn

pluginsync = false

  1. 配置puppet agent

(1)规划主机名
vi /etc/hostname agent01.test.cn #修改相应的主机名

vi /etc/hosts #添加

28.4.174.33 master01.test.cn

28.4.174.34 agent01.test.cn

(2)修改hostname:hostname agent01.test.cn
然后重启,将安全性策略再关一下
setenforce 0

(3)启用puppet:puppet agent start

验证puppet是否启用:ps -ef | grep puppet

(4)编辑puppet配置文件
vi /etc/puppet/puppet.conf

client端

[agent]:

server = master.test.cn

pluginsync = false

certname = client1.test.cn

report = true

4、agent端申请证书

puppet agent --server=master01.test.cn --no-daemonize --verbose

5、回到Puppet Master端查看申请信息
(1)查看申请证书的客户端
puppet cert list
(2)将未申请的客户端进行授权
puppet cert sign --all
(3)通过目录查看已经申请注册的客户端
ll /var/lib/puppet/ssl/ca/signed/

6、demo:批量修改客户端ssh端口
master端配置:
(1)创建ssh模块,模块下面有3个文件:manifests、templates和files
mkdir -p /etc/puppet/modules/ssh/{manifests,templates,files} #模块信息

mkdir /etc/puppet/manifests/nodes #节点信息

mkdir /etc/puppet/modules/ssh/files/ssh #模块的文件发布目录

chown -R puppet /etc/puppet/modules/ #修改权限
(2)创建模块配置文件install.pp
vi /etc/puppet/modules/ssh/manifests/install.pp #新建文件(首先确定客户端安装ssh服务)

class ssh::install{ package{“openssh”: ensure => present, } }
(3)创建模块配置文件config.pp
vi /etc/puppet/modules/ssh/manifests/config.pp #新建模块配置文件,配置需要同步的文件

class ssh::config{ file {

“/etc/ssh/sshd_config”: #配置客户端需要同步的文件

ensure => present, #确定客户端中此文件存在

owner => “root”, #文件所属用户

group => “root”, #文件所属组

mode => “0600”, #文件属性

source => “puppet://$puppetserver/modules/ssh/ssh/sshd_config”, #从服务端同步文件

require => Class[“ssh::install”], #调用install.pp确定ssh已安装

notify => Class[“ssh::service”], #如果config.pp发生变化,则通知service.pp } }

(4)创建模块配置文件service.pp
vi /etc/puppet/modules/ssh/manifests/service.pp #新建server模块文件

class ssh::service { service

{“sshd”: ensure=>running, #确定ssh已运行

hasstatus=>true, #puppet服务支持status命令

hasrestart=>true, #puppet服务支持restart命令

enable=>true, #服务器是否开机启动

require=>Class[“ssh::config”] #确认config.pp调用 } }

(5)创建模块主配置文件init.pp
vi /etc/puppet/modules/ssh/manifests/init.pp #新建模块主配置文件

class ssh{ include ssh::install,ssh::config,ssh::service #将以上配置文件加载进去 }
此时/etc/puppet/modules/ssh/manifests目录下有四个文件
(6)建立服务端ssh统一维护文件
将服务端ssh配置文件sshd_config复制到模块默认路径
cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/

chown -R puppet /etc/puppet/modules/ssh/files/ssh/sshd_config #修改权限
(7)创建测试节点配置文件,并将ssh加载进去
vi /etc/puppet/manifests/nodes/ssh.pp

node ‘agent01.test.cn’ { include ssh }

(8)将测试节点载入puppet,创建站点文件site.pp
vi /etc/puppet/manifests/site.pp //将测试节点载入puppet//

import “nodes/ssh.pp”
(9)修改服务端维护的sshd_cofig配置文件

(10)重新启动puppet
puppet master restart
下面就是介绍客户端怎么获取到服务器端的资源的方式:
(1)一般在小规模自动化集群中,客户端主动拉取
puppet agent -t
在客户端查看/etc/ssh/sshd_config的内容
查看服务器ssh服务是否重启,端口是否生效
(2)当大规模部署时,采用服务器推送
client端为例:
1)修改配置文件
vi /etc/puppet/puppet.conf #最后一行添加监听8139端口

listen = truevi /etc/puppet/auth.conf #最后一行添加允许任何服务器推送 allow *
2)启动puppet客户端
systemctl start puppetagent
在客户端查看/etc/ssh/sshd_config的端口内容
查看服务器ssh服务是否重启,端口是否生效
master端:
3)修改服务端维护的sshd_cofig配置文件
vi /etc/puppet/modules/ssh/files/ssh/sshd_config #修改19行 Port 8822
4)开始往客户端推送
puppet kick client2.test.cn
在客户端查看/etc/ssh/sshd_config的内容
在客户端查看ssh服务是否重启,端口是否生效

问题及解决:

1、【问题】Warning: Unable to fetch my node definition, but the agent run will continue: Warning: getaddrinfo:
【原因】PuppetMaster端和PuppetClient的证书不匹配
【解决方法】清除Master和客户端的SSl证书:

                      Master:puppet cert --clean --all

                      Client:rm -rf /var/lib/puppet/ssl/

                      重启解决               

2、【问题】vsftpd: warning: can’t get client address: Bad file descriptor
【原因】这是REDHAT9中VSFTP的一个BUG
【解决方法】把/etc/vsftpd/vsftpd.conf中的tcp_wrappers=YES改为tcp_wrappers=NO

3、【问题】err: Could not request certificate: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key

 【原因】获取到的证书和key不匹配

 【解决方法】

a.在客户端删除ssl证书 rm -rf /var/lib/puppet/ssl/,
b.在puppetmaster端,执行 puppetca -c 客户端主机名
c. 客户端在重新生成证书请求: puppet –test –server puppetmaster主机名
d.在puppetmaster端,执行 puppetca -s 客户端主机名

4、【问题】puppet 认证错误:Could not request certificate: unknown message digest algorithm

 【解决办法】

    问题原因:根据日志提示:是算法有问题,根据 https://serverfault.com/questions/660649/puppet-master-3-6-2-error-on-signing-puppet-client-2-7-25 网站提出的解决方案 需要修改 ruby代码,

    解决方式:修改 /usr/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_request.rb文件的 71行 把 MD5 修改成SHA256 解决

                    sed -i 's#MD5#SHA256#' /usr/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_request.rb

                    运行 puppet 测试命令 puppetd --test --debug 在服务端进行查看 问题得以解决。

5、【问题】

    1)启动puppet master服务,提示:Could not run:Could not create PID file:/var/lib/puppet/run/master.pid

    2)执行命令 netstat -tunlp |grep "8140",结果为 tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      - ,8140端口应监听ruby

  【解决办法】

    问题原因:上述两个问题是由于master.pid 已有pid占用导致

    解决方式:cat master.pid #查看pid,比如10805

                     kill -9 10805 #   删除该pid

                     ps -ef | grep 10805 #查看该id是否删除成功

                     puppet master #启动master

                    netstat -tunlp |grep "8140" #结果为 tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN       15815/ruby 说明master启动成功

6、【问题】

    第一次启动master端时,puppet服务会在本地创建认证中心,给自己授权证书和key,但通过 tail -f /var/log/messages 查看日志,发现证书未授权成功:Could not request certificate: getaddrinfo: Temporary failure in name 

【解决方法】

检查 /etc/hosts 和 /etc/puppet/puppet.conf 与 /etc/hostname 文件的 主机名与 IP 是否匹配

【安装依赖包】

1、先安装依赖包yum-plugin-downloadonly
[root@node1 ~]# yum install yum-plugin-downloadonly

2、安装软件

方法一:
[root@node1 ~]# yum install --downloadonly nano
[root@node1 ~]# ll /var/cache/yum/x86_64/7/base/packages
-rw-r–r-- 1 root root 450136 Jul 4 2014 nano-2.3.1-10.el7.x86_64.rpm
不加–downloaddir参数,下载的依赖包会放在默认路径/var/cache/yum/x86_64/7/base/packages下。
方法二:
[root@node1 ~]# yum install --downloadonly --downloaddir=/root keepalived
[root@node1 ~]# ll
-rw-------. 1 root root 1259 Jul 7 18:43 anaconda-ks.cfg
-rw-r–r-- 1 root root 339344 Aug 23 2019 keepalived-1.3.5-16.el7.x86_64.rpm
-rw-r–r-- 1 root root 42784 Aug 23 2019 lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm
-rw-r–r-- 1 root root 724340 Jun 24 01:36 net-snmp-agent-libs-5.7.2-48.el7_8.1.x86_64.rpm
-rw-r–r-- 1 root root 769104 Jun 24 01:36 net-snmp-libs-5.7.2-48.el7_8.1.x86_64.rpm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值