puppet是一种Linux、Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系

Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppetmaster)。在需要管理的目标主机上安装puppet客户端软件(被称作PuppetClient)。当客户端连接上Puppetmaster后,定义在Puppetmaster上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况。如果有新的配置信息或者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信息被改变了,它可以从服务器获得原始配置进行校正。


puppet安装配置

yum install ruby ruby-rdoc  #安装ruby语言环境

安装puppet软件仓库

rpm -ivh https://yum.puppetlabs.com/el/6.5/products/x86_64/puppetlabs-release-6-10.noarch.rpm    (centos 6.5)

rpm -ivh https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-10.noarch.rpm    (centos7)

服务器端:

yum install puppet-server     #安装puppet

service puppetmaster start    #启动服务

chkconfig puppetmaster on    #开机启动


修改防火墙

centos6:

/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT  


centos7:

firewall-cmd --permanent --zone=public --add-port=8140/tcp

firewall-cmd --reload


修改/etc/hosts文件,添加各客户端信息

192.168.80.210 agent01.sleeper.com

192.168.80.217 master.sleeper.com


客户端:

yum install puppet

chkconfig puppet on

修改/etc/hosts文件

192.168.80.210    master.sleeper.com

192.168.80.211    agent01.sleeper.com


修改/etc/puppet/puppet.conf

在 [agent]项中添加puppet服务器地址

server=master.sleeper.com


修改/etc/sysconfig/puppet

PUPPET_SERVER=master.sleeper.com


service puppet start        #启动puppet客户端

puppet agent --test        #使agent01客户端在服务器端登记


puppet cert list        #服务器端查看证书请求

puppet cert sign agent01        #对客户端agent01进行签名


至此puppet客户端设置完毕


客户端默认每30分钟更新一次配置,如果需要使修改强制生效,使用以下命令

puppet agent -t


修改客户端默认刷新时间,可以编辑客户端节点的/etc/puppet/puppet.conf

runinterval=


值可以是秒(格式:30或者30s),分(30m),小时(1h),天(1d),年(3y).

当值为0时表示立即执行


调试

你免不了会提交错误的配置,然后不得不通过调试判断问题出现在哪儿。一般来说,你要么通过查看日志文件 /var/log/puppet 着手解决问题,要么手动执行查看输出:

puppet agent -t --debug


使用“-t”选项,你可以看到 Puppet 的详细输出。这条命令还有额外的选项可以帮你定位问题。首先要介绍的选项是:debug 选项会显示 Puppet 本次运行时的差不多每一个步骤,这在调试非常复杂的问题时很有用。


puppet agent -t --noop


这个选项让 puppet 工作在 dry-run(译注:空转模式,不会对真实环境产生影响)模式下,不会应用任何修改。Puppet 只会把其工作内容输出到屏幕上,不会写到磁盘里去。