Puppet

1.Puppet简介

Puppet使用一种描述性语言来定义配置项,配置项中被称为“资源”,描述性语言可以声明用户的配置状态,比如声明一个软件包应该被安装或一个服务应该被启动等。
Puppet可以运行在一台服务器端,每个客户端通过SSL证书连接到服务端,得到本机器的配置列表,然后根据列表来完成配置工作,所以如果硬件性能比较高,维护管理上千上万台机器是非常轻松的,前提是客户端的配置、服务器路径、软件需要保持一致。
在企业级大规模的生产环境中,如果只有一台Puppet master,压力会非常大,因为Puppet是用Ruby语言编写的,Ruby是解析型语言,每个客户端来访问都要解析一次,当客户端访问服务器次数很多,会造成服务器端压力很大,所以需要扩展成一个服务器集群组。
Puppet master可以看作一个Web服务器,实际上也是由Ruby提供的Web服务器模块来做的。因此可以利用Web代理软件来配合Puppet master做集群设置,一般使用Nginx+Puppet master整合构建大型企业自动化运维管理工具,Puppet项目主要开发者是Luke Kanies,目前为Puppet labs CEO,Puppet遵循GPLv2版权协议。
Kanies从1997年开始参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快Reductive实验室发布了他们新的旗舰产品。
Puppet是开源的基于Ruby的系统配置管理工具,Puppet工作流程为Puppet是一个C/S结构,所有的Puppet客户端与同一个服务器端的Puppet通信,每个Puppet客户端每半小时(可以设置)连接一次服务器端,下载最新的配置文件,并且严格按照配置文件来配置服务器,配置完成以后Puppet客户端可以反馈给服务器端一个消息,如果报错会给服务器端反馈一个消息。

二、Puppet工作原理

要熟练掌握Puppet在企业生产环境中的应用,需要深入理解Puppet服务端与客户端详细的工作流程及原理,如图所示为Puppet master与agent完整工作流程图。
Puppet_第1张图片
Puppet工作原理详解如下:
·□ 客户端Puppetd调用本地facter,facter会探测出该主机的常用变量,例如主机名、内存大小、IP地址等。然后Puppetd把这些信息发送到Puppet服务端;
·□ Puppet服务端检测到客户端的主机名,然后会检测manifest中对应的node配置,并对这段内容进行解析,facter发送过来的信息可以作为变量进行处理;
·□ Puppet服务端匹配Puppet客户端相关联的代码才能进行解析,其他的代码不解析,解析分为几个过程,首先是语法检查,然后会生成一个中间的伪代码,之后再把伪代码发给Puppet客户端;
·□ Puppet客户端接收到伪代码之后就会执行,执行完后会将执行的结果发送给Puppet服务端;
·□ Puppet服务端再把客户端的执行结果写入日志

三、Puppet安装配置

Puppet工作为C/S模式,构建Puppet平台需安装Puppet server端和client端,安装之前准备好系统环境,说明如下:
·□ 操作系统版本:CentOS 6.10 x64;
·□ 服务端ip:192.168.0.140 hostname:192-168-0-140-dzqc.net;
·□ 客户端ip:192.168.0.139 hostname:192-168-0-139-dzqc.net。
(1)Puppet服务端安装。
Puppet服务器端需修改主机名称为192-168-0-140-dzqc.net,并且在hosts文件添加主机名和本机IP的对应关系,如果本地局域网有DNS服务器,可以无须修改hosts文件,修改主机名及配置hosts代码如下:
hostname ifconfig eth0|grep Bcast|awk '{print $2}'|sed 's/addr://g'|sed 's/\./-/g'-dzqc.net
在/etc/hosts 中添加以下内容
192.168.0.139 192-168-0-139-dzqc.net
192.168.0.140 192-168-0-140-dzqc.net

Puppet客户端除了需要安装Puppet外,还需要Ruby的支持,需要安装Ruby相关软件包,默认YUM安装Puppet,会自动下载并安装Ruby相关软件,代码如下,
安装服务器端
rpm -Uvh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
安装puppet服务器端
yum install puppet-server -y
启动puppet服务器端
/etc/init.d/puppetmaster start
关闭防火墙
service iptables stop
修改SELINUX
sed -i ‘/SELINUX/ s/enforcing/disabled/g’ /etc/selinux/config
setenforce 0
Puppet客户端安装
Puppet客户端也需要修改主机名称为192-168-0-139-dzqc.net,并且在hosts文件添加主机名和本机IP的对应关系,如果本地局域网有DNS服务器,可以无须修改hosts文件,修改主机名及配置hosts代码如下:
hostname ifconfig eth0|grep Bcast|awk '{print $2}'|sed 's/addr://g'|sed 's/\./-/g'-dzqc.net
在/etc/hosts 中添加以下内容
192.168.0.139 192-168-0-139-dzqc.net
192.168.0.140 192-168-0-140-dzqc.net

客户端安装
rpm -Uvh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
安装puppet客户端
yum install puppet -y
启动puppet客户端
/etc/init.d/puppet start
关闭防火墙
service iptables stop
修改SELINUX
sed -i ‘/SELINUX/ s/enforcing/disabled/g’ /etc/selinux/config
setenforce 0

Puppet客户端申请证书

Puppet客户端与Puppet服务端是通过SSL隧道通信的,客户端安装完成后,首次使用需向服务器端申请Puppet通信证书,Puppet客户端第一次连接服务器端会发起证书申请,在Puppet客户端执行命令如下,返回结果如图所示。
puppet agent --server 192-168-0-140-dzqc.net --test==
Puppet_第2张图片

Puppet服务端颁发证书
Puppet客户端向服务器发起证书申请,服务器端必须审核证书,如果不审核,客户端与服务器端无法进行后续正常通信,Puppet服务端颁发证书命令代码详解如下,返回结果如下所示。Puppet_第3张图片
puppet cert --list:查看申请证书的客户端主机名;
puppet cert -s 192-168-0-139-dzqc.net:颁发证书给客户端;
puppet cert -s:为特定的主机颁发证书;
puppet cert -s and-a:给所有的主机颁发证书;
puppet cert --list --all:查看已经颁发的所有证书。

你可能感兴趣的:(自动化运维,运维,自动化)