📅  最后修改于: 2020-10-31 13:59:17             🧑  作者: Mango
Puppet是Puppet Labs开发的配置管理工具,用于自动化基础架构管理和配置。 Puppet是一个非常强大的工具,有助于将基础架构作为代码的概念。该工具使用Ruby DSL语言编写,可帮助以代码格式转换完整的基础架构,可以轻松地对其进行管理和配置。
Puppet遵循客户机-服务器模型,其中任何群集中的一台计算机充当服务器,称为puppet master,另一台计算机充当客户端,称为节点上的slave。 Puppet具有从头开始管理任何系统的能力,从初始配置到任何特定机器的寿命终止。
以下是Puppet的最重要功能。
木偶支持幂等性,这使其具有独特性。与Chef相似,在Puppet中,可以在同一台计算机上安全地多次运行同一组配置。在此流程中,Puppet检查目标计算机的当前状态,并且仅在配置中有任何特定更改时才进行更改。
幂等性有助于在整个生命周期中管理任何特定的机器,从创建机器,机器中的配置更改到使用寿命终止。当配置发生任何更改时,Puppet Idempotency功能对于使计算机保持多年更新而不是多次重建同一台计算机非常有用。
在Puppet中,借助使用Puppet资源的资源抽象层(RAL),可以针对指定的系统配置,而不必担心实现细节以及配置命令在系统内部的工作方式,这些在底层配置中定义文件。
Puppet使用以下工作流程在系统上应用配置。
在Puppet中,Puppet管理员要做的第一件事是收集目标计算机的详细信息。使用所有Puppet节点上存在的因子(类似于Chef中的Ohai),它将获取所有计算机级别的配置详细信息。这些详细信息将收集并发送回Puppet主数据库。
然后,人偶主服务器将检索到的配置与定义的配置详细信息进行比较,并使用定义的配置创建目录,并将其发送给目标人偶代理。
然后,Puppet代理应用这些配置以使系统进入所需状态。
最后,一旦目标节点处于所需状态,它就会将报告发送回Puppet主节点,这有助于Puppet主节点了解目录中定义的系统当前状态的位置。
以下是Puppet的关键组件。
人偶资源是对任何特定机器进行建模的关键组件。这些资源具有自己的实现模型。 Puppet使用相同的模型来获取处于所需状态的任何特定资源。
提供者基本上是Puppet中使用的任何特定资源的实现者。例如,包类型“ apt-get”和“ yum”都对包管理有效。有时,在特定平台上可以使用多个提供商。尽管每个平台始终都有默认提供程序。
清单是资源的集合,这些资源在函数或类内部耦合以配置任何目标系统。它们包含一组Ruby代码以配置系统。
模块是Puppet的关键构建块,可以将Puppet定义为资源,文件,模板等的集合。它们可以轻松地分布在定义为具有相同风格的各种OS中。由于它们可以轻松分发,因此一个模块可以以相同的配置多次使用。
模板使用Ruby表达式定义自定义内容和变量输入。它们用于开发自定义内容。模板在清单中定义,然后复制到系统上的某个位置。例如,如果要使用可自定义的端口定义httpd,则可以使用以下表达式来完成。
Listen
在这种情况下,httpd_port变量在引用此模板的清单中定义。
静态文件可以定义为常规文件,有时执行特定任务需要使用这些文件。可以使用Puppet将它们简单地从一个位置复制到另一位置。所有静态文件都位于任何模块的文件目录内。使用清单资源对清单中的文件进行任何操作。