Linux自动化运维之puppet介绍

  • A+
所属分类:Linux  自动化运维
摘要

puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.

puppet:是一个开源的新一代的集中化的配置管理工具。早期是由puppet labs公司研发于2005年正式面世早起的主要作者Luke Kanies。puppet是目前全球最流行的自动化运维管理工具。

从其主要目的和ansible是近似的,实现的主要功能是在 一个节点上为多个主机提供配置并且能保证每个主机处其事先定义好的目标状态。puppet本身所有功能由自己所声明的语言表达系统进行配置也就意味着puppet有自己的配置语言。能够通过客户端和服务端建立连接维持保证每个客户端处于事先在服务器端(master端)有配置语言所配置定义的目标状态(slave端)。puppet的master端和agent端是基于ssl的http/XMLRPC协议通信的,当agent启动后会去master端获取属于自己的证书,puppet自带CA自我独立工作因此只有在签署了这个agent端证书后后续通信才能进行。

程序版本:

0.2-->0.24.X-->0.25.X-->2.6.X(0.26)-->2.7.X(2.6&2.7的版本稳定性是经过多个大公司的生产环境所验证过的)-->3.0-->3.1....-->3.3.X(这是3系列比较稳定的版本)

Linux自动化运维之puppet介绍puppet是一个IT基础设置自动化管理工具,他能够帮助系统管理员管理基础设置的整个生命周期:供应(provisioning)、配置(configuration)(这是puppet目前最具竞争力的地方)、联动(orchestration)及报告(reporting)

基于puppet,可以实现自动化重复任务、快速部署关键性应用以及在本地或云端完成主动管理变更和快速扩展架构规模等

遵循GPL协议(这是在2.7.0-),基于ruby与facter开发

2.7.0以后使用Apache 2.0协议

对于系统管理员是抽象的,只依赖于ruby与facter

能管理多达40多种资源例如:file、user、group、host、package、service、cron、exec、yum repo等,适合整个软件生命周期管理


基本概念

资源:资源申报

定义好资源后每个agent都能到master端拿到属于自己的资源清单(配置文件)(资源定义在资源清单中)

资源清单:通常可以定义成单独的可被重复使用的代码片段称作为类

类:可以被继承甚至可以被重复继承可以被多级集成,另外我们还可以将具有相同功能的可以被重复使用的多个类文件组织在一起定义成类似与ansible角色的模块

模块:我们可以一个模块中可以包含类,类中可以包含资源清单,资源清单中包含了资源的申报资源的定义,由此我们可以把一个模块或多个模块应用在一个agent上,由此这个agent就能处于我们所期望所定义的目标状态了

 站点清单:所谓的站点清单就是以主机核心在这个主机上调用哪些模块


工作流程

1、使用puppet语言定义资源状态-->2、使用dry-run的方式在本地进行模拟(代码的无损运行测试)-->3、对比客户端状态和定义的资源状态是否一致然后强制执行-->4、给master端发送报告,master端会把这次应用的结果保存-->进入下一次的定义资源状态。

Linux自动化运维之puppet介绍


puppet的应用环境

1、开发环境:我们自己不断的去开发puppet的站点清单 资源等

2、测试环境:当开发完成后需要做测试的

3、生产环境:测试环境没有问题才会部署在生产环境中

我们在应用puppet时为了实现各种各样版本迭代的管理过程也需要用到SVN或GIT这样管理版本系统,一旦一个代码测试完成之后一个新版本没有问题了我们就可以checkeout出来,而后直接应用在生产环境中的master端而后这个puppet的master端就可以应用在各生成环境的agent端上了。事实上一个puppet环境就可以定义多个环境,它自己可以事先明确好什么样的环境是开发环境,什么样的环境是测试环境,什么样的环境是生产环境,而且只向特定的主机应用特定环境的配置。


puppet的三层模型

1、资源抽象层(资源本身要被抽象成能够通过配置语言定义的内容)

2、事务层(资源和资源之间可能有依赖关系,事务层就是来定义依赖关系 启动循序等定义的)

3、配置语言层(说白了就是我们的puppet自己提供的配置语言以及如何描述各可管理资源)

Linux自动化运维之puppet介绍


puppet的工作模型 

单机模型:

申报资源-->定义资源清单-->把资源组织成类-->把他们组织成模块-->然后只在一个主机上执行,就是在自己机器上运行

master/agent模型

这才是真正意义上集中式管理

Linux自动化运维之puppet介绍

Linux自动化运维之puppet介绍


puppet的认证机制:

每个master和agent端都有证书而且是双向认证,puppet通信都采用SSL加密协议来通信以此来保证数据传输的安全性,puppet的master端在启动后会自我管理一个证书颁发机构(内建CA)。首次启动master时他会给自己签署一个证书,每一个agent端装好后在首次启动之前先到master端申请证书,让master端给agent签署证书,这样双方才能进行通信。

证书都存放于/var/lib/puppet/ssl/下

lookback

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: