第一,Puppet介绍:


1) 客户端通过facter收集客户端信息并发送至服务端2) 连接服务端并请求catalog日志3) 请求节点(node)的信息4) 从服务器端接收节点(node)的实例5) 编译代码(包括语法检查等工作)6) 查询是否有exported 虚拟资源7) 如有,则从数据库接收虚拟资源8) 接收完整的catalog日志9) 存储catalog日志到数据库10) 客户端接收完整的catalog日志
实现文件同步并修改文件所属帐户:测试环境:puppetserver : 10.0.3.170puppet1 : 10.0.3.171
两台机器都需要安装必要软件:yum install ntp vixie-cron wget vim-enhanced telnet软件的下载地址:facter是一个系统盘点工具,收集主机的一些资料,比如CPU,主机IP等,它收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件,安装puppet之前必须先安装facter。
1. 准备环境同步时间:ntpdate pool.ntp.org (如果时间不同步会有问题)由于puppet是由ruby语言编写,所以要安装ruby环境及库文件安装ruby:yum install ruby ruby-libs (也可以yun install ruby*)2. 修改HOSTS修改双方的/etc/hosts文件,添加各自的IP地址对应的主机名,生产环境做内部DNS比较好,不用修改每台服务器的hosts文件。10.0.3.170 puppetserver10.0.3.171 puppet13. 开放端口:8140(server服务器端口),8139(client服务器端口)/sbin/iptables -I INPUT -s * -p tcp --dport 8140 -j ACCEPT/sbin/iptables -I INPUT -s * -p tcp --dport 8139 -j ACCEPT或是干脆chkconfig iptables off 半闭防火墙4. 源码安装:安装facter和puppetwget http://downloads.puppetlabs.com/facter/facter-1.6.17.tar.gztar zxvf facter-1.6.17.tar.gzcd facter-1.6.17ruby install.rbcd ..wget https://downloads.puppetlabs.com/puppet/puppet-2.7.10.tar.gztar zxvf puppet-2.7.10.tar.gzcd puppet-2.7.10ruby install.rbcd ..5. 复制文件:cp conf/auth.conf /etc/puppet/cp conf/redhat/fileserver.conf /etc/puppet/cp conf/redhat/puppet.conf /etc/puppet/cp conf/redhat/server.init /etc/init.d/puppetmasterchmod +x /etc/init.d/puppetmasterchkconfig --add puppetmasterchkconfig puppetmaster onchkconfig --level 35 puppetmaster onmkdir -p /etc/puppet/manifests6. 生成pupput用户:puppetmasterd --mkusers7. 启动服务:/etc/init.d/puppetmaster restart
1. 环境准备:同步时间:ntpdate pool.ntp.org (如果时间不同步会有问题)安装ruby:yum install ruby ruby-libs添加用户:useradd puppet2. 修改HOSTS:修改双方的/etc/hosts文件,添加各自的IP地址对应的主机名,生产环境做内部DNS比较好,不用修改每台服务器的hosts文件。10.0.3.170 puppetserver10.0.3.171 puppet13. 开放端口:开放8140(server服务器端口),8139(client服务器端口)/sbin/iptables -I INPUT -s * -p tcp --dport 8140 -j ACCEPT/sbin/iptables -I INPUT -s * -p tcp --dport 8139 -j ACCEPT或是干脆chkconfig iptables off 半闭防火墙4. 安装facter和puppet:wget http://downloads.puppetlabs.com/facter/facter-1.6.17.tar.gztar zxvf facter-1.6.17.tar.gzcd facter-1.6.17ruby install.rbwget https://downloads.puppetlabs.com/puppet/puppet-2.7.10.tar.gztar zxvf puppet-2.7.10.tar.gzcd puppet-2.7.10ruby install.rb5. 复制文件:cp conf/auth.conf /etc/puppet/cp conf/namespaceauth.conf /etc/puppet/cp conf/redhat/puppet.conf /etc/puppet/cp conf/redhat/client.init /etc/init.d/puppetchmod +x /etc/init.d/puppetvi /etc/puppet/puppet.conf---内容如下[agent]Listen = trueServer = puppetserver---vi /etc/puppet/namespaceauth.conf----内容如下[fileserver]allow *[puppetmaster]allow *[puppetrunner]allow *[puppetbucket]allow *[puppetreports]allow *[resource]allow *
客户端发送请求:puppetd --server puppetserver --test服务器查看:puppetca --list并执行:puppetca -s -a
通过puppet可以向被管理机上推送文件,方法是使用file类型的source属性,并修改文件为puppet用户及组:实例:要把server服务器上/opt目录下的文件传输至client服务器的/opt目录下,文件名不变。第一步:Vi /etc/puppet/fileserver.conf[files]path /opt/allow 10.0.3.0/24第三步:vi /etc/puppet/manifests/site.ppfile{ "/opt/zhu.html":source => "puppet://$puppetserver/files/zhu.html",owner => "puppet",group => "puppet",mode => 777,}第四步:在/opt/目录下创建文件echo "this is puppet test page"> /opt/zhu.html第五步:client端执行puppetd --server puppetserver --test成功!
学习过程中,参考了庖丁解的技术博客,在此表示感谢,如有不正之处请网友指正,一起直步。总体感觉可以基于该平台做很多事,后续还有一些应用实例。参考puppet官方网站:http://www.puppetlabs.com/puppet中文wiki:http://puppet.chinaec2.com/