puppet 工作原理:
puppet 的目的是让管理员只集中于要管理的目标, 而忽略实现的细节 puppet 既可以在单机上使用, 也可以以 C/S 结构使用在大规模使用 puppet 的情况下, 通常使用 C/S 结果, 在这种结构中 puppet 客户端只运行 puppetclient,puppet 服务器只运行 puppetmaster
puppet 工作流程:
1)客户端 puppet 调用 facter(facter 是通过 ssl 加密收集及检测分析客户端配置信息的一个工具),facter 探测出主机的一些变量, 如主机名, 内存大小, ip 地址等 Puppet 把这些信息通过 ssl 连接发送到服务器器端
2)服务器端的 puppetmaster 通过 facter 工具分析检测客户端的主机名, 然后找到项目主配置文件 mainfest 里面对应的 node 配置, 并对该部分内容进行解析 Facter 发送过来的信息可以作为变量处理, node 牵扯到的代码才解析, 其他没牵涉的代码不解析, 解析分为几个阶段, 首先进行语法检查, 如果语法没错, 就继续解析, 解析的结果生成一个中间的伪代码, 然后把伪代码发送给客户端
3)客户端接收到伪代码并执行, 客户端把执行的结果发送给服务器
4)服务器把客户端的执行结果写入日志
puppet 工作流程中以下两点值得注意:
1)为了保证安全, client 和 master 之间是基于 ssl 和证书的, 只有经 master 证书认证的 client 可以与 master 通信
2)Puppet 会让系统保持在人们所期望的某种状态并一直维持下去, 例如: 检测某个文件并保证其一直存在, 保证 ssh 服务始终开启, 如果文件被删除了或者 ssh 服务被关闭了, puppet 下次执行时(默认 30 分钟), 会重新创建该文件或者启动 ssh 服务
案例环境:
主机 < br ow="0" oh="0"> | 操作系统 < br ow="0" oh="0"> | IP 地址 < br ow="0" oh="0"> | 主要软件 < br ow="0" oh="0"> |
puppetmaster | CentOS 6.5x86-64 | 192.168.1.10 | ruby-rdoc-1.8.7.352-13.el6.x86_64 ruby-libs-1.8.7.352-13.el.x86_64 ruby-irb-1.8.7.352-13.el6.x86_64 ruby-1.8.7.352-13.el6.x86_64 puppet-2.7.21.tar.gz facter-1.7.1.tar.gz |
puppetclient1 | CentOS 6.5x86-64 | 192.168.1.20 | |
puppetclient2 | CentOS 6.5x86-64 | 192.168.1.30 | |
NTP Server | CentOS 6.5x86-64 | 192.168.1.40 |
1. 搭建 NTP Server
(1)安装 NTP
(2)修改配置文件
(3)启动服务, 设置防火墙规则
2. 搭建 puppetmaster
(1)规划服务器主机名
小规模可以修改 / etc/hosts 文件, 服务器多的时候我们需要搭建 dns 服务器来实现服务通过主机名进行通信, 这里就以 / etc/hosts 文件来实现
(2)puppetmaster 作为 NTP 客户端的配置
(3)安装 ruby
一定安装一下先后顺序安装, 先安装 compat-readline5, 也可以一并安装
安装完之后检查 ruby 版本
(4)创建用户
(5)安装 facter
(6)安装 puppet
复制配置文件
修改文件属性
创建 puppet 主目录
(7)puppet 服务证书请求与签名
生产环境中 iptables 默认是全部关闭的
修改配置文件
在 [main] 标题下添加一下一行, 配置服务器模块路径
启动 puppet 主程序
3. 搭建 puppetclient (注意: puppetclient2 的配置过程与 puppetclient1 类似, 主机名改为 client2.itzhushou.cn 即可, 其他都一样)
(1)规划服务器主机名
vim /etc/sysconfig/network
vim /etc/hosts
(2)服务器时间同步
(3)安装 ruby
安装完成后检查 ruby 版本
(4)创建用户
(5)安装 facter
(6)安装 puppet
复制配置文件
修改文件属性
(7)puppet 服务证书请求与签名
生产环境中 iptables 默认是全部关闭的 service iptables stop
修改 client 文件
在 [main] 标题下添加以下一行, 设置服务器的域名
申请与注册
client 端:
分别在 puppetclient1 和 puppetclient2 上进行注册
此时可以按 Ctrl+C 结束, 因为 puppet 一直在等待任务, 但是已经从 server 查看到申请信息
master 端:
查看申请注册的客户端
将未注册的客户端进行注册
可以通过目录去查看已经注册的客户端
此时客户端已经完成证书的请求与签名
来源: http://www.bubuko.com/infodetail-2525878.html