搜索

第 2 章 从调度构建 Puppet 模块

download PDF

本章介绍了如何构建和测试您自己的 Puppet 模块。这包括创建部署简单 Web 服务器配置的 Puppet 模块的基本教程。

2.1. 检查 Puppet 模块的 Anatomy

在创建模块之前,我们需要了解创建 Puppet 模块的组件。

Puppet 清单

不要与清单 (订阅清单) 混淆。Puppet 清单是包含用于定义一组资源及其属性的代码的文件。资源是系统的任何可配置部分。资源示例包括软件包、服务、文件、用户和组、SELinux 配置、SSH 密钥身份验证、cron 作业等。清单使用一组键值对为其属性定义各个所需的资源。例如:

package { 'httpd':
  ensure => installed,
}

此声明检查是否安装了 httpd 软件包。如果没有,清单将执行 yum 并安装它。

用于开始编译的 Puppet 清单称为"维护清单"或"站点清单"。

清单位于模块的 清单目录中

Puppet 模块也使用 测试 目录来测试清单。这些清单用于测试官方清单中包含的特定类。

静态文件

模块可以包含 Puppet 可以复制到您系统上的特定位置的静态文件。这些位置和其他属性(如权限)通过清单中的 文件 资源声明进行定义。

静态文件位于模块 的文件 目录中。

模板

有时配置文件需要自定义内容。在这种情况下,用户可以创建模板而不是静态文件。与静态文件一样,模板在清单中定义,复制到系统上的位置。不同之处在于,模板允许 Ruby 表达式定义自定义内容和变量输入。例如,如果要使用可自定义端口配置 httpd,那么配置文件的模板会包括:

Listen <%= @httpd_port %>

本例中的 httpd_port 变量在引用此模板的清单中定义。

模板位于模块的 templates 目录中。

插件

插件允许在 Puppet 的核心功能之外扩展方面。您可以使用插件来定义自定义事实、自定义资源或新功能。例如,数据库管理员可能需要 PostgreSQL 数据库的资源类型。这有助于数据库管理员在安装 PostgreSQL 后使用一组新数据库填充 PostgreSQL。因此,数据库管理员需要创建一个 Puppet 清单,以确保 PostgreSQL 安装和数据库之后创建。

插件位于模块的 lib 目录中。其中包括一组子目录,具体取决于插件类型。例如:

  • /lib/facter - 自定义事实的位置。
  • /lib/puppet/type - 自定义资源类型定义的位置,概述了属性的键值对。
  • /lib/puppet/provider - 自定义资源提供程序的位置,与资源类型定义一同使用来控制资源。
  • /lib/puppet/parser/functions - 自定义功能的位置。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.