一 puppet简介 puppet是一种Linux、Unix平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。 puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息. 二 puppet安装测试环境介绍 虚拟机vmware 系统centos5.5 服务器端 192.168.2.113 centos113.sdj 客户端 192.168.2.114 centos114.sdj 安装puppet前的准备 在服务端和客户端都执行以下命令 添加puppet用户 # groupadd puppet # useradd -g puppet -s /bin/false -M puppet 修改Host文件;# echo "192.168.2.113 centos113.sdj">> /etc/hosts # echo "192.168.2.114 centos114.sdj">> /etc/hosts 安装ruby #yum -y install ruby 安装Facter 是用来搜集当前安装系统的环境变量信息的 # wget http://projects.puppetlabs.com/attachments/download/1101/facter-1.5.8.tar.gz # tar xf facter-1.5.8.tar.gz && cd facter-1.5.8/ # ruby install.rb && cd ~ # facter 执行这个命令就可以看到facter获取到的变量名和内容 现在开始安装puppet # wget http://projects.puppetlabs.com/attachments/download/1114/puppet-2.6.1.tar.gz # tar xzf puppet-2.6.1.tar.gz && cd puppet-2.6.1 # ruby install.rb # mkdir -p /etc/puppet &&cp conf/redhat/* /etc/puppet/ && cd ~ 验证安装成功 # puppet master # ps -ef|grep puppet |grep -v grep puppet 3247 1 0 23:02 ? 00:00:00 /usr/bin/ruby /usr/bin/puppet master # kill 1871 --------------------------------- 接下来配置服务器端 将puppetmasterd设置为服务,并自启动 # cp /etc/puppet/server.init /etc/init.d/puppetmasterd # chmod 755 /etc/init.d/puppetmasterd # chkconfig --add puppetmasterd # chkconfig --level 35 puppetmasterd on 启动服务 #service puppetmasterd start 查看是否打开8140端口 # netstat -tnl Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 防火墙和端口设定。puppet服务器端默认使用8140端口监听服务,需要在iptables上开启该端口。 iptables -A INPUT -p tcp --dport 8140 -j ACCEPT 请在/etc/sysconfig/iptables 中加入上文的规则,并重启iptables。 审批证书 客户端申请证书 在客户端centos114执行 # puppetd --test --server centos113.sdj warning: peer certificate won't be verified in this SSL session info: Caching certificate for ca warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session info: Creating a new SSL certificate request for centos114.sdj info: Certificate Request fingerprint (md5): C5:5A:5E:A9:04:44:CF:A7:F3:46:14:6A:C7:C1:24:C8 warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session Exiting; no certificate found and waitforcert is disabled 出现上述类似信息说明成功 服务器接受申请 在服务器端centos113执行 # puppetca --list centos114.sdj 批准当前证书 # puppetca -s centos114.sdj notice: Signed certificate request for centos114.sdj notice: Removing file Puppet::SSL::CertificateRequest centos114.sdj at '/var/lib/puppet/ssl/ca/requests/centos114.sdj.pem' 客户端取回已经通过审批的证书 客户端执行 # puppetd --test --server centos113.sdj 重新审批旧机器的新证书。 当申请到证书以后我们对比下这两个文件,他们的MD5值是一样的 服务器端[root@centos113.sdj ~]# md5sum /var/lib/puppet/ssl/ca/signed/centos114.sdj.pem 客户端 [root@centos114.sdj ~]# md5sum /var/lib/puppet/ssl/certs/centos114.sdj.pem 功能测试 在服务器端新建一个/etc/puppet/manifests/site.pp文件,大意是在/tmp下创建caotest.txt测试文件。 [root@centos113.sdj ~]# vi /etc/puppet/manifests/site.pp node default { file {"/tmp/caotest.txt": #这是文件路径名,后面是冒号 content=>"I'm Caotest PUPPET"; } #这是文件的内容 后面是分号 } #初次创建这个文件需要重启服务 # service puppetmasterd restart 在客户端执行命令 # puppetd --test --server centos113.sdj # ls -l /tmp 查看/tmp目录下是否有caotest.txt文件如果有说明测试成功 客户端设置守护进程 # puppetd --server caotest-1.cym --verbose --waitforcert 60 # --server 告诉它master结点的ip,--waitforcert是说每60秒去server检查,--verbose是可选的输出冗余信息 (责任编辑:IT) |