
- Puppet 教程
- Puppet - 首页
- 基础 Puppet
- Puppet - 概述
- Puppet - 架构
- Puppet - 安装
- Puppet - 配置
- Puppet - 环境配置
- Puppet - Master
- Puppet - Agent 设置
- Puppet - SSL 证书设置
- 安装和配置 r10K
- Puppet - 验证设置
- Puppet - 编码风格
- Puppet - 清单文件
- Puppet - 模块
- Puppet - 文件服务器
- Puppet - Facter 和事实
- 高级 Puppet
- Puppet - 资源
- Puppet - 资源抽象层
- Puppet - 模板
- Puppet - 类
- Puppet - 函数
- Puppet - 自定义函数
- Puppet - 环境
- Puppet - 类型和提供程序
- Puppet - RESTful API
- Puppet - 实时项目
- Puppet 有用资源
- Puppet - 快速指南
- Puppet - 有用资源
- Puppet - 讨论
Puppet - 概述
Puppet 是一款由 Puppet Labs 开发的配置管理工具,用于自动化基础设施管理和配置。Puppet 是一款非常强大的工具,有助于实现基础设施即代码的概念。此工具使用 Ruby DSL 语言编写,有助于将完整的基础设施转换为代码格式,可以轻松地进行管理和配置。
Puppet 遵循客户端-服务器模型,其中任何集群中的一个机器充当服务器,称为 puppet master,其他机器充当客户端,称为节点上的从属服务器。Puppet 能够从头开始管理任何系统,从初始配置到任何特定机器的生命周期结束。
Puppet 系统的功能
以下是 Puppet 最重要的功能。
幂等性
Puppet 支持幂等性,这使其独一无二。与 Chef 类似,在 Puppet 中,可以安全地对同一台机器多次运行相同的配置集。在此流程中,Puppet 检查目标机器的当前状态,并且仅在配置有任何特定更改时才会进行更改。
幂等性有助于在整个生命周期中管理任何特定机器,从机器的创建、机器的配置更改到生命周期结束。Puppet 的幂等性功能非常有助于保持机器多年更新,而不是在配置发生任何更改时多次重建同一台机器。
跨平台
在 Puppet 中,借助使用 Puppet 资源的资源抽象层 (RAL),可以定位系统的指定配置,而无需担心实现细节以及配置命令如何在系统内部工作,这些细节在底层配置文件中定义。
Puppet - 工作流程
Puppet 使用以下工作流程将配置应用于系统。

在 Puppet 中,Puppet master 首先要做的是收集目标机器的详细信息。使用存在于所有 Puppet 节点上的因素(类似于 Chef 中的 Ohai),它获取所有机器级配置详细信息。这些详细信息被收集并发送回 Puppet master。
然后,puppet master 将检索到的配置与定义的配置详细信息进行比较,并根据定义的配置创建目录并将其发送到目标 Puppet 代理。
然后,Puppet 代理应用这些配置以使系统处于所需状态。
最后,一旦将目标节点置于所需状态,它就会向 Puppet master 发送报告,这有助于 Puppet master 了解系统当前状态在哪里,如目录中定义的那样。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
Puppet - 关键组件
以下是 Puppet 的关键组件。

Puppet 资源
Puppet 资源是建模任何特定机器的关键组件。这些资源有自己的实现模型。Puppet 使用相同的模型来获取任何特定资源的所需状态。
提供程序
提供程序基本上是 Puppet 中使用的任何特定资源的执行者。例如,包类型“apt-get”和“yum”都适用于包管理。有时,在特定平台上可能有多个提供程序可用。尽管每个平台始终都有一个默认提供程序。
清单
清单是资源的集合,这些资源在函数或类中耦合以配置任何目标系统。它们包含一组 Ruby 代码以配置系统。
模块
模块是 Puppet 的关键构建块,可以定义为资源、文件、模板等的集合。它们可以轻松地分发到正在定义的各种操作系统中,前提是它们是相同的类型。由于它们可以轻松分发,因此可以多次使用同一个模块和相同的配置。
模板
模板使用 Ruby 表达式来定义自定义内容和变量输入。它们用于开发自定义内容。模板在清单中定义,并复制到系统上的某个位置。例如,如果要使用可自定义的端口定义 httpd,则可以使用以下表达式。
Listen <% = @httpd_port %>
在这种情况下,httpd_port 变量在引用此模板的清单中定义。
静态文件
静态文件可以定义为有时需要执行特定任务的一般文件。它们可以使用 Puppet 从一个位置简单地复制到另一个位置。所有静态文件都位于任何模块的 files 目录中。清单中对文件的任何操作都是使用 file 资源完成的。