设为首页 收藏本站
查看: 1330|回复: 0

[经验分享] puppet yum安装配置,简单证书维护

[复制链接]

尚未签到

发表于 2015-9-16 11:15:25 | 显示全部楼层 |阅读模式
Puppet学习之puppet的安装和配置

  一、Puppet简介
  Puppet基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,最新版本也开始支持对Windows操作系统有限的一些管理。Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。
  二、Puppet的安装
  Puppet的安装方式支持源码安装、yum安装以及ruby的gem安装。官网推荐使用yum来安装puppet,方面以后的升级、管理、维护。Centos可以采用yum来安装,但是Centos的默认源中没有puppet包,因此需要先安装epel包。Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOS、Scientific Linux)的一个高质量附加软件包项目。
  1. Master的安装

  yum -y install ruby ruby-libs ruby-shadow
  wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
  rpm -Uvh epel-release-5-3.noarch.rpm
  yum -y install puppet puppet-server facter
  2. Agent的安装

  yum install ruby ruby-libs ruby-shadow
  wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
  rpm -Uvh epel-release-5-3.noarch.rpm
  yum -y install puppet facter
  Ruiy tips:
  puppet C/S 同一台Server上测试获取离线部署包文件名for rpm
http://www.cnblogs.com/ruiy/p/data:image/png;base64,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
http://www.cnblogs.com/ruiy/p/data:image/png;base64,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
  至此如果安装过程不报错的话,puppet已经安装成功了。
  三、Puppet的简单配置
  1. Master的配置
  先来看看puppet主目录下都有什么文件已经每个文件是做什么用的:
  ls -1 /etc/puppet/

  auth.conf       #定义puppet master的acl文件
  fileserver.conf   #定义puppet master文件服务器的配置文件
  manifests        #puppet脚本主文件目录,site.pp文件必须存在
  modules            #puppet模块目录
  puppet.conf     #puppet主配置文件
  ssl                     #存放ssl证书的目录
  刚开始的话, puppet.conf不需要配置就可以满足。
  需要更改hosts文件,注意hosts要和主机名对应。
  vim  /etc/hosts添加如下内容:

  10.1.4.218 puppet.zhang.com puppet
  10.1.4.213 node1.zhang.com node1
  10.1.4.214 node2.zhang.com node2
  大家要根据实际情况加,我这里是一个master,两个agent。
  2. Agent的配置
  Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。
  在agent上vim /etc/puppet/puppet.conf 添加如下配置

  server = puppet.zhang.com        #master服务器的地址
  runinterval = 3600                       #每隔多久的时间进行自动更新,时间单位为秒
  listen = true                         #客户端作为一个服务进行监听,允许其它的机器触发puppet运行允许远程触发puppet的节点配置
  
  四、puppet的启动和停止
  1. Master的启动和停止
  Master的启动

  /etc/rc.d/init.d/puppetmaster start
  也可以以采用 service puppetmaster start启动
  第一次启动建议采用puppet master --verbose --no-daemonize方式启动,有助于测试和调试错误,如果采用后面这种方式,你可以看到启动的整个过程,启动过程会做一些初始化的工作,为master创建本地证书认证中心,证书和key。并打开socket等待client的连接。你可以在/etc/puppet/ssl目录看到相关的文件和目录。
  Master的停止

  /etc/rc.d/init.d/puppetmaster stop
  也可以以采用 service puppetmaster stop停止
  更改多选项可以使用/etc/rc.d/init.d/puppetmaster –h查看
  2. Agent的启动和停止
  Agent的启动

  /etc/rc.d/init.d/puppet start
  也可以采用service puppet start来启动
  调试的时候可以采用

  puppet agent --server=puppet.zhang.com --no-daemonize –verbose
  的方式来启动,这样启动我们可以看到agent是如何和master建立连接的。
  Agent的停止

  /etc/rc.d/init.d/puppet stop
  也可以采用service puppet stop来停止。
  
  五、FAQ

  • 连接master的时候出现如下报错:

  dnsdomainname: Unknown host
  解决办法:检查机器主机名的设置,以及是否添加进hosts。

  • 连接master的时候出现如下报错:

  err: Could not request certificate: getaddrinfo: Name or service not known
  解决办法:服务器端没有配置hosts域名绑定,在hosts中添加。

  • 连接master的时候出现如下报错:

  warning: peer certificate won't be verified in this SSL session
  解决办法:服务端还没有返回签发证书,使用puppet cert --list查看

  • 连接master的时候出现如下报错:

  err: Could not retrieve catalog from remote server: certificate verify failed
  解决办法:客户端和服务器端时间不同步,SSL连接需要依赖主机上的时间是否正确。执行更新时间的命令:/sbin/ntpdate asia.pool.ntp.org
  
  简单证书维护
  一、    关于证书在master的认识
  我们知道puppet为了安全,采用ssl隧道通信,因此需要申请证书来验证的,当puppet master第一次启动的时候,可以查看/var/log/message有类似如下的信息:

  Jul 25 03:14:01 localhost puppet-master[25011]: Signed certificate request for ca
  Jul 25 03:14:01 localhost puppet-master[25011]: Rebuilding inventory file
  Jul 25 03:14:01 localhost puppet-master[25011]: puppet.zhang.com has a waiting certificate request
  Jul 25 03:14:01 localhost puppet-master[25011]: Signed certificate request for puppet.zhang.com
  Jul 25 03:14:01 localhost puppet-master[25011]: Removing file Puppet::SSL::CertificateRequest puppet.zhang.com at '/etc/puppet/ssl/ca/requests/puppet.zhang.com.pem'
  Jul 25 03:14:01 localhost puppet-master[25011]: Removing file Puppet::SSL::CertificateRequest puppet.zhang.com at '/etc/puppet/ssl/certificate_requests/puppet.zhang.com.pem'
  从日志中我们可以看出第一次启动的时候,puppet master创建本地认证中心,给自己签发证书和key,你可以在/etc/puppet/ssl看到那些证书和key。这个目录和/etc/puppet/puppet.conf文件中配置的ssldir路径有关系。
  ll /etc/puppet/ssl/   ssl目录的内容如下:

  drwxrwx--- 5 puppet puppet 4096 Jul 25 03:01 ca
  drwxr-xr-x 2 puppet root   4096 Jul 25 03:01 certificate_requests
  drwxr-xr-x 2 puppet root   4096 Jul 25 03:01 certs
  -rw-r--r-- 1 puppet puppet  398 Jul 25 03:01 crl.pem
  drwxr-x--- 2 puppet root   4096 Jul 25 03:01 private
  drwxr-x--- 2 puppet root   4096 Jul 25 03:01 private_keys
  drwxr-xr-x 2 puppet root   4096 Jul 25 03:01 public_keys
  
  二、    关于证书在agent的认识
  puppet agent在第一次连接master的时候会向master申请证书,如果没有master没有签发证书,那么puppet agent和master的连接是否建立成功的,agent会持续等待master签发证书,并会每隔2分钟去检查master是否签发证书。
  通过puppet agent --server= puppet.zhang.com --no-daemonize –verbose启动的时候能很清楚的查看到agent申请证书的过程

  puppet agent --server=puppet.zhang.com --no-daemonize --verbose
  info: Creating a new SSL key for node1.zhang.com
  info: Caching certificate for ca
  #申请证书
  info: Creating a new SSL certificate request for node1.zhang.com
  info: Certificate Request fingerprint (md5): 54:11:FB:75:87:94:AF:6B:D1:6B:AD:6B:44:3E:74:A0
  #等待证书签发
  warning: peer certificate won't be verified in this SSL session
  #2分钟检查一次,如果没有签发就显示如下信息
  notice: Did not receive certificate
  #证书签发成功后,顺利建立连接
  info: Caching certificate for node1.zhang.com
  notice: Starting Puppet client version 2.6.16
  info: Caching certificate_revocation_list for ca
  info: Caching catalog for node1.zhang.com
  info: Applying configuration version '1344943902'
  notice: Finished catalog run in 0.11 seconds
  类似于上面的就是去申请证书了。当master签发证书以后就可以顺利建立连接了。
  
  三、    Master端证书的管理

  • 在master上查看申请证书请求

  puppet cert --list

  • 签发证书

  puppet cert --sign node1.zhang.com
  如果一次性签发所有的证书,采用如下命令:

  puppet cert --sign –all
  也可以设置自动签发证书。

  • 让证书过期

  puppet cert -revoke puppet-test
  删除证书

  puppet cert --clean puppet-test
  证书签名的过期或删除需要重启puppetmaster服务。

  • 可以通过/etc/puppet/auth.conf文件配置签名的ACL列表。
  
  四、    Agent端证书的管理

  • 删除已有的证书
  清空 /etc/puppet/ssl(这个目录和你的/etc/puppet/puppet.conf文件中配置的ssldir路径有关系)下的文件和目录

  • 重启申请证书

  puppet agent --server puppet.zhang.com --test
  在客户端与服务端签名不能正常进行的时候,请删除后重新签名

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-114397-1-1.html 上篇帖子: puppet&mcollective客户端安装 下篇帖子: puppet完全攻略(一)puppet应用原理及安装部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表