9.4. 存储和维护主机信息
Red Hat Satellite 6 使用应用程序组合来收集有关受管主机的信息,并确保这些主机在所需状态中维护。这些应用程序包括:
- Foreman:提供物理和虚拟系统的调配和生命周期管理。Foreman 使用各种方法(包括 Kickstart 和 Puppet 模块)自动配置这些系统。
- Puppet:用于配置主机的客户端/服务器架构,由 Puppet Master (服务器)和 Puppet 代理(客户端)组成。
- Facter:Puppet 的系统库存工具.Facter 收集主机的基本信息(事实),如硬件详情、网络设置、操作系统类型和版本、IP 地址、MAC 地址、SSH 密钥等。这些事实随后在 Puppet 清单中作为变量提供。
以下更为详细地讨论了 Puppet、Facter 和事实的使用。
9.4.1. Puppet 架构 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Puppet 通常在代理/主控机(也称为客户端/服务器)架构中运行,其中的 Puppet 服务器控制重要配置信息,而受管主机(客户端)仅请求自己的配置目录。Puppet 在两个步骤中配置主机:
- 它编译目录
- 它将该目录应用到适当的主机
在 agent/master 设置中,Puppet 客户端会向 Puppet Master 发送由 Facter 和其他信息收集的事实。Puppet Master 根据这些事实编译目录,然后将此目录发送到客户端。客户端将对其所做的所有更改发送报告,或者如果已使用了-
noop
参数,则将发出的报告到 Puppet Master,后者后者后者后者后者将结果发送到 Foreman。此目录描述了特定主机的所需状态。它列出要在该主机上管理的资源,包括这些资源之间的所有依赖项。代理将目录应用到主机。
默认情况下,master 和代理之间的这个通信每 30 分钟发生。您可以使用
runinterval
参数在 /etc/puppet/puppet.conf
文件中指定不同的值。您还可以运行 puppet 代理应用来 手动启动通信。
9.4.2. 使用 Facter 和 Facts 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Facter 是 Puppet 的系统库存工具,包含大量内置事实。您可以在本地主机上的命令行中运行 Facter,以显示事实名称和值。您可以使用自定义事实扩展 Facter,然后使用它们将主机的特定站点详情公开给您的 Puppet 清单。您还可以使用 Facter 提供的事实来通知 Puppet 中的条件表达式。
Puppet 根据资源确定系统状态;例如,您可以告知 Puppet
httpd
服务应始终处于运行状态,并且 Puppet 知道如何处理它。如果您要管理不同的操作系统,您可以使用 osfamily
事实创建条件表达式,以告知 Puppet 哪个服务监视或要安装的软件包。您可以使用 operatingsystemmajrelease
和 versioncmp
参数,根据同一操作系统的不同版本创建条件表达式。有关使用条件表达式的示例,请参阅 例 9.1 “将条件表达式与事实搭配使用”。
例 9.1. 将条件表达式与事实搭配使用
注意
这个示例使用表达式 "versioncmp ($::operatingsystemmajrelease, '7')>= 0" 来测试 Red Hat Enterprise Linux 版本 7 或更高版本。不要使用 "$::operatingsystemmajrelease >= '7'" 表达式来执行此测试。有关此内容和其他 Puppet 功能的更多信息,请参阅 https://docs.puppetlabs.com/references/latest/function.html#versioncmp。
Puppet 还设置行为类似于事实的其他特殊变量。请参阅 Puppet 添加的 Special 变量 和 Core Facts 更多信息。
9.4.2.1. 显示父主机的事实 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Puppet 可以访问 Facter 的内置核心事实,以及 Puppet 模块中存在的任何自定义或外部事实。您可以从命令行(facter -p)以及 Web UI ( 。您可以浏览事实列表,或者 使用搜索框 搜索特定事实。例如,键入 "
facts.
" 以显示可用事实的列表。
注意
可用事实列表非常长。UI 一次仅显示 20 个事实。在输入更多详细信息时,事实列表会逐渐过滤。例如,键入 "facts.e" 以显示以字母"e"开头的所有事实。
过程 9.19. 查看参与主机的事实:
- 在主菜单中,单击
,然后单击您要检查的主机的名称。 - 在 Details 窗格中,单击 以显示主机的所有已知事实。
注意
- 对于此页面中列出的任何事实,您可以单击以显示此事实名称在所有受管主机上分布的图表。
- 您可以为搜索添加书签,以便以后更轻松地使用。优化搜索后,点按钮旁边的下拉箭头,然后单击 。书签的搜索会出现在 下拉列表中,以及主菜单上的
下。
9.4.2.2. 根据事实搜索主机 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以使用 Facter 信息来搜索特定主机。这意味着,您可以搜索符合特定事实条件的所有主机,如
facts.architecture = x86_64
。
过程 9.20. 根据事实搜索主机:
- 在主菜单中,单击
以显示 Fact Values 页面。 - 在 Search 字段中,开始输入您要过滤的事实名称。您可以根据特定名称、名称/值对进行搜索,等等。
- 单击以检索匹配主机的列表。
9.4.2.3. 自定义事实报告 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Red Hat Satellite 6 完全支持从受管主机获取自定义信息。本节演示了使用从 Puppet Forge 获取的 Puppet 模块,但其原则对于 Puppet 模块的其他来源同样应用。
通过标准 Facter 接口报告的事实数量可以扩展。例如,要收集模块中用作变量的事实:如果有描述安装的软件包的事实,您可以搜索此数据并根据信息做出明智的配置管理决策。
要获取在主机上安装的软件包的报告,如下所示:
- 清单
pkginventory
从 Puppet Forge 获取,并保存到基础系统中。 - Puppet 模块添加到内容视图中,然后这会提升到系统并部署到该系统。
- 然后,使用软件包名称查询系统的事实。在本例中,对于名为 hostname 的主机,并使用具有凭证 用户名和密码的 Satellite 用户,以下 API 查询将返回与搜索字符串 "bash" 匹配的事实:
curl -u username:password -X GET http://localhost/api/hosts/:hostname/facts?search=bash {"hostname":{"pkg_bash":"4.2.45-5.el7_0.4"}}
curl -u username:password -X GET http://localhost/api/hosts/:hostname/facts?search=bash {"hostname":{"pkg_bash":"4.2.45-5.el7_0.4"}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索返回软件包版本。然后,这可用于填充外部数据库。
添加 pkginventory Puppet 模块
要将
pkginventory
Puppet 模块添加到 Red Hat Satellite Server 应用程序,请将模块从 https://forge.puppetlabs.com/ody/pkginventory 下载到安装 Satellite 服务器应用程序的基本系统,然后按照以下步骤操作。
Puppet 模块通常存储在名为 Puppet 模块的自定义存储库中。以下流程假设您已创建了带有该名称的自定义存储库。如果您还没有为 Puppet 模块创建自定义存储库,请参阅 Red Hat Satellite 快速入门指南 中的创建自定义产品 和 启用存储库。
过程 9.21. 将 Puppet 模块上传到存储库:
- 将 Puppet 模块下载到基础系统。下载的模块将有一个
.tar.gz
扩展。 - 单击
,然后单击与 Puppet 模块存储库关联的 Name 字段中的产品名称。例如,自定义产品。 - 在 Repositories 选项卡上,选择您要修改的 Puppet 模块存储库。例如,Puppet 模块。
- 在 Upload Puppet Module 部分中,单击 ,再导航到您下载的模块。
- 点。
若要将 Puppet 模块分发给客户端,内容主机必须应用到内容视图和发布模块。按照以下步骤将模块添加到内容视图中。
过程 9.22. 要在内容视图中添加模块:
- 单击
,然后从 菜单中选择内容视图。 - 在 Puppet 模块 选项卡上,单击 。此时会出现安装模块列表。
- 在 Actions 列中,单击 以选择您要添加的模块。此时会出现可用版本表。
- 单击您要添加的模块版本旁边的。
- 单击以创建新的内容视图。
- (可选)添加描述信息并点。