9.2. 参数
Red Hat Satellite 参数定义在置备主机时要使用的键值对。它们与 Puppet 的默认范围参数概念类似。您可以使用 Puppet 设置主机时定义参数。
参数类型
Red Hat Satellite 有两种类型的参数:
- 简单参数
- 定义键值对之间的关系的字符串参数。它们不能被用户配置覆盖,但它们会根据 Satellite 的参数层次结构覆盖。以下参数是 Red Hat Satellite 中的简单参数: Global, organization-level, location-level, domain-level, operating system level, host group, 和 host 参数。
- 智能参数
- 为键定义值但允许条件参数、验证和覆盖特定对象类型的复杂参数。智能参数使 Puppet 类能够获取外部数据。它们在 Puppet 术语中称为 参数化类的 Puppet 类中 使用。这些参数的层次结构可以在 Web UI 中配置。
以下参数层次结构适用于简单参数:
- 全局参数
- 应用到 Satellite 中每一主机的默认参数。在
中配置。 - 机构级别参数
- 影响给定机构中所有主机的参数。机构级参数会覆盖全局参数。在管理
。 - 位置级别参数
- 影响给定位置中的所有主机的参数。位置级别参数覆盖机构级别和全局参数。在管理
- 域参数
- 影响给定域中的所有主机的参数。域参数覆盖位置级别及更高的参数。在
. - 操作系统级别参数
- 影响给定操作系统的所有主机的参数。操作系统级别参数覆盖域和更高的参数。在主机操作系统中配置
. - 主机组参数
- 影响给定主机组中的所有主机的参数。主机组参数覆盖操作系统级别及更高的参数。在
中配置。 - 主机参数
- 影响特定主机的参数。所有之前继承的参数都会在参数子选项卡上可见,并可覆盖。在
。
在 Puppet 类中使用参数
Red Hat Satellite 有两种方法为 Puppet Master 提供值,供主机用于 Puppet 类:
- 智能变量
- 对于没有智能参数的类,一种向 Puppet Master 提供全局参数的工具,以键值形式提供。它们在 Puppet 清单中启用覆盖参数值。当类没有智能参数或需要全局参数时,它们会被用来使用。它们可以有多个可能的值,它们都取决于用户可以应用的分层上下文或各种条件。在 Puppet 具有参数化类之前,它们就存在,以便实现向后兼容性,或使用您想要验证的全局参数,仅与特定 Puppet 类一起使用,以及字符串以外的类型(因为您也可以使用简单参数)。
- 参数化类
- 包含智能参数的 Puppet 类.类从 Puppet Master 和参数名称导入,如
$::name(首选)或$名称,由编写该类且无法更改的人员定义。它们允许您决定特定类的 变量的值,而不是全局设置。
配置的参数包含在每个主机对应的 YAML 文件中,并发送到 Puppet Master。可以在特定主机页面的 Web UI 中查看 YAML 文件。您不应该手动更改
/etc/foreman/settings.yaml 配置文件,因为它们在下次运行 satellite-installer 命令时会覆盖。
重要
Satellite 6 中默认启用参数化类支持。如果需要确保它为,请导航到 ,选择 Puppet 选项卡,然后确保
Parametrized_Classes_in_ENC es 设置为 True。
9.2.1. 创建全局简单参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
此流程演示了如何在 Satellite 中添加新的 global 参数。
过程 9.2. 要创建全局简单参数:
- 单击
。 - 。
- 输入参数 密钥的名称。
- 为参数输入 Value。
- (可选)如果您希望在 web UI 中隐藏该值,请选择此项。
- 单击 Submit。
9.2.2. 配置智能变量 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下流程将 Smart Variables 配置为覆盖 Puppet 类中的值。
过程 9.3. 配置智能变量:
- 单击
。 - 从列表中选择一个类。
- 点 Smart Variables 选项卡。这将显示一个新屏幕。left 部分包含类支持的可能参数列表。right 部分包含所选参数的配置选项。单击 以添加新参数。否则,从左侧列表中选择一个参数。
- 在 Key 字段中,输入参数的名称。
- 编辑 Description 文本框,以添加任何纯文本注释。
- 选择 要传递的 Key 类型。这通常是字符串,但支持其他数据类型。
- 如果没有主机匹配,输入要发送到 Puppet Master 的参数的 Default Value。
- 如果字段包含您正在使用的数据,可以选择 Hidden 值。
- 使用 Optional Input Validator 部分限制 参数允许的值。选择一个 Validator 类型 (以逗号分隔的 值列表 或正则表达式、regexp),并在 Validator 规则 字段中输入允许的值或正则表达式代码。
- Prioritize attribute order 部分提供了根据条件参数覆盖特定主机的值的选项。属性类型和其值称为 匹配器。
- 通过安排列表中的条目,设置要针对匹配者评估主机属性或事实的优先顺序。您可以添加到默认列表中。要在匹配器之间创建逻辑 AND 条件,请将它们放在一行中以逗号分隔的列表。
- 点 添加条件参数。要匹配的属性应与 Order 列表中的条目对应。如果没有配置 matcher,则只有默认值可用于覆盖功能。例如,如果要向 Puppet Master 提供所需的参数值,则针对完全限定域名为
server1.example.com的任何主机进行测试,然后将匹配器指定为fqdn=server1.example.com,并将 Value 指定为。test匹配的优先级如下:建议您使用 Facter 中存在的属性,且无法与主机属性混淆。主机属性可以是主机参数,也可以是与主机(如主机组、域和组织)关联。匹配器只能是主机中的一个内容,如配置组无法使用,因为主机可以有多个配置组,但主机只有一个位置,因此位置是有效的匹配者。- 如果匹配器是主机属性,则使用它。
- 如果没有具有该名称的属性,请查找匹配的主机参数(根据参数层次结构继承)。
- 如果仍没有匹配项,请检查主机事实。
通过在 嵌入式 Ruby (ERB)模板语法中的 Value 字段中使用参数和 Puppet Facts,可以动态数据。例如,要使用 Puppet Facts 作为值的一部分:要列出可用的 Puppet 事实,请导航到。
- 点 保存您的更改。
有关使用 Puppet 模块的更多信息,请参阅 将 Puppet 模块添加到红帽卫星 6 中。有关 ERB 语法的详情请参考 附录 A, 模板编写参考。
9.2.3. 从 Puppet Master 导入参数类 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下流程从您的 Puppet Master 导入参数化类。
注意
如果您的 Puppet 模块通过产品和内容视图管理,则会自动进行参数化类导入。
过程 9.4. 要导入参数类:
- 在卫星 Web UI 中,从上下文菜单中选择 Any Organization 和 Any Location。
- 单击
。 - 单击 Import from Host Name,以从您的 Puppet Master 导入参数化类。
- Puppet Classes 页面显示有列出的新类。
9.2.4. 配置智能类参数 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下流程在类中配置参数。包含参数的类称为 参数化类。
过程 9.5. 配置智能类参数:
- 单击
。 - 从列表中选择一个具有参数的类,如 Parameters 列所示。
- 单击 Smart Class Parameter 选项卡。这将显示一个新屏幕。left 部分包含类支持的可能参数列表。right 部分包含所选参数的配置选项。
- 从左侧列表中选择一个参数。
- 编辑 Description 文本框,以添加任何纯文本注释。
- 选择 Override 以允许 Satellite 控制此变量。如果未选中复选框,卫星不会将新变量传递给 Puppet。
- 选择 要传递的 Key 类型。这通常是字符串,但支持其他数据类型。
- 如果没有主机匹配,输入要发送到 Puppet Master 的参数的 Default Value。
- (可选)选择 Use Puppet Default 不向 Puppet Master 发送值,除非发生覆盖匹配。
- 如果字段包含您正在使用的数据,可以选择 Hidden 值。
- 使用 Optional input validator 部分限制 参数允许的值。选择一个 Validator 类型 (以逗号分隔的 值列表 或正则表达式、regexp),并在 Validator 规则 字段中输入允许的值或正则表达式代码。
- 如果选择了 Override 选项,则会显示 Prioritize attribute order 部分。这提供了根据条件参数覆盖特定主机的值的选项。属性类型和其值称为 匹配器。
- 通过安排列表中的条目,设置要针对匹配者评估主机属性或事实的优先顺序。您可以添加到默认列表中。要在匹配器之间创建逻辑 AND 条件,请将它们放在一行中以逗号分隔的列表。
- 点 添加条件参数。要匹配的属性应与 Order 列表中的条目对应。如果没有配置 matcher,则只有默认值可用于覆盖功能。例如,如果要向 Puppet Master 提供所需的参数值,则针对完全限定域名为
server1.example.com的任何主机进行测试,然后将匹配器指定为fqdn=server1.example.com,并将 Value 指定为。test匹配的优先级如下:建议您使用 Facter 中存在的属性,且无法与主机属性混淆。- 如果匹配器是主机属性,则使用它。
- 如果没有具有该名称的属性,请查找匹配的主机参数(根据参数层次结构继承)。
- 如果仍没有匹配项,请检查主机事实。
通过在 嵌入式 Ruby (ERB)模板语法中的 Value 字段中使用参数和 Puppet Facts,可以动态数据。例如,要使用 Puppet Facts 作为值的一部分:要列出可用的 Puppet 事实,请导航到。
- 点 保存您的更改。
有关使用 Puppet 模块的更多信息,请参阅 将 Puppet 模块添加到红帽卫星 6 中。有关 ERB 语法的详情请参考 附录 A, 模板编写参考。