Puppet - 概述

Puppet是由Puppet Labs开发的配置管理工具,用于自动化基础架构管理和配置. Puppet是一个非常强大的工具,它有助于将基础结构概念作为代码.这个工具是用Ruby DSL语言编写的,有助于以代码格式转换完整的基础设施,可以轻松管理和配置.

Puppet遵循客户端 - 服务器模型,其中任何一台机器都在cluster充当称为puppet master的客户端,另一个充当节点上称为slave的服务器. Puppet能够从头开始管理任何系统,从初始配置到任何特定机器的使用寿命.

Puppet系统的功能

以下是Puppet最重要的功能.

Idempotency

Puppet支持Idempotency,使其独一无二.与Chef类似,在Puppet中,可以在同一台机器上安全地多次运行同一组配置.在此流程中,Puppet会检查目标计算机的当前状态,并且只会在配置发生任何特定更改时进行更改.

Idempotency有助于在整个生命周期内管理任何特定计算机从机器的创建,机器的配置变化开始,直到寿命结束. Puppet Idempotency功能非常有助于保持机器多年更新,而不是在有任何配置更改时多次重建同一台机器.

跨平台

在Puppet中,借助使用Puppet资源的资源抽象层(RAL),可以针对系统的指定配置,而不必担心实现细节以及配置命令在系统内部如何工作,这些都是定义的在底层配置文件中.

Puppet : 工作流程

Puppet使用以下工作流程在系统上应用配置.

工作流程

  • 在Puppet中,Puppet master的第一件事就是收集目标机器的详细信息.使用所有Puppet节点上的因子(类似于Chef中的Ohai),它获取所有机器级配置详细信息.收集这些详细信息并将其发送回Puppet master.

  • 然后,puppet master将检索到的配置与已定义的配置详细信息进行比较,并将其创建的已定义配置进行比较目录并将其发送给目标Puppet代理.

  • 然后,Puppet代理应用这些配置以使系统进入所需状态.

  • 最后,一旦目标节点处于所需状态,它就会将报告发送回Puppet master,这有助于Puppet master了解系统的当前状态是,如目录中所定义.

Puppet : 关键组件

以下是Puppet的关键组件.

Key组件

Puppet资源

Puppet资源是建模任何特定计算机的关键组件.这些资源有自己的实现模型. Puppet使用相同的模型来获得所需状态的任何特定资源.

提供者

提供者基本上是Puppet中使用的任何特定资源的履行者.例如,包类型'apt-get'和'yum'都对包管理有效.有时,在特定平台上可以使用多个提供程序.虽然每个平台总是有一个默认提供者.

清单

清单是一组资源,它们耦合在一个或多个函数内部以配置任何目标系统.它们包含一组Ruby代码以配置系统.

模块

模块是Puppet的关键构建块,可以定义作为资源,文件,模板等的集合.它们可以容易地分布在被定义为具有相同风格的不同类型的OS中.由于它们可以轻松分发,因此可以使用相同的配置多次使用一个模块.

模板

模板使用Ruby表达式定义自定义内容和变量输入.它们用于开发自定义内容.模板在清单中定义,并复制到系统上的某个位置.例如,如果想要使用可自定义的端口定义httpd,则可以使用以下表达式来完成.

 
 Listen<%= @httpd_port%>

在这种情况下,httpd_port变量在引用此模板的清单中定义.

静态文件

静态文件可以定义为执行特定任务有时需要的常规文件.可以使用Puppet将它们从一个位置复制到另一个位置.所有静态文件都位于任何模块的files目录中.清单中文件的任何操作都是使用文件资源完成的.