搜索

3.8. 使用智能变量工具

download PDF

智能变量是为 Puppet 宿主提供全局参数的工具,可用于包含智能类参数。智能变量和智能类参数使用相同的智能匹配规则。

注意

智能变量工具在 Puppet 模块支持智能类参数之前作为内期测量进行介绍。如果您没有使用智能清单的具体原因,红帽建议使用智能类参数,如 第 3.3 节 “配置智能类参数” 所述。

在引入智能类参数前,希望覆盖一个参数的用户(需要重写其 Puppet 代码以使用全局参数)。例如:

class example1 {
  file { '/tmp/foo': content => $global_var }
}

对于上例,在 Web UI 的 Smart Variables 部分中设置了 $global_var,其值与 "example1" 类相关联。虽然建议在全局变量前面带有 :: 以限制 Puppet 搜索全局范围,但它们没有表示变量不是全局变量。

在引入 Smart Class Parameters 时,可以使用以下格式:

class example2($var="default") {
  file { '/tmp/foo': content => $var }
}

在上例中,web UI 的 Smart Class Parameters 部分中设置了 $var,其值与 "example2" 类关联。如果您看到类标头中定义的变量,如上面的 类 example2($var="default") 中所述,您可以确定 $var 是一个类参数,且您应该使用 Smart Class Parameter 功能覆盖变量。

如上所示,智能变量需要使用全局命名空间参数来自定义模块,而不是来自 Puppet 社区的标准模块,其结果与上述示例中的"/tmp/foo"中放入的文本相同。因此,除了支持旧模块外,不再使用智能卡验证。

虽然智能变量是全局变量,但它们与 Puppet 类关联,并且仅发送到在卫星中分配了特定 Puppet 类的主机。您可以使用任何名称创建智能变量,不会在卫星中执行验证,除非应用的 Puppet 模块在其代码中具有匹配的变量,否则不会使用智能变量。

Satellite 将您在 Satellite 中创建的变量添加到 Host YAML 文件中。可在 Web UI 中查看此文件,方法是导航到 Hosts > All Hosts,选择主机的名称,然后单击 YAML 按钮。卫星将主机 YAML 文件发送到 外部节点分类器 (ENC),这是 Puppet 宿主中包含的功能。当 Puppet 宿主查询有关主机的 ENC 时,ENC 会返回描述主机状态的 YAML 文档。此 YAML 文档基于从 Puppet 清单获取的数据,但受智能类参数覆盖和任何智能清单。

将智能变量应用到主机

由于智能变量应仅用于支持之前修改的自定义 Puppet 模块以包含全局参数,以下示例使用一个名为 anothermodule 的简单示例。另一模块 Puppet 清单如下所示:

class anothermodule {
   file { '/tmp/motd':
     ensure  => file,
     content => $::content_for_motd,
  }
}

本例将为 $::content_for_motd 参数提供值。

  1. 在 Web UI 中,导航到 Configure > Classes
  2. 从列表中选择 Puppet 类的名称。
  3. Smart Variables 选项卡。这将显示一个新屏幕。left 部分包含之前创建的参数的列表(若有)。right 部分包含配置选项。
  4. 点击 Add Variable 添加新参数。
  5. Key 字段中输入 参数。在本例中,content_for_motd
  6. 编辑 Description 文本框,如 Testing /tmp motd Text
  7. 选择要 传递的数据的参数类型。选择 字符串
  8. 为 参数输入 Default Value。例如,No Unauthorized Use
  9. 使用 Optional Input Validator 部分来限制参数允许的值。在 Validator 规则字段中,选择以逗号分隔的值或正则表达式列表( regexp)并在 Validator 规则 字段中输入允许的值或正则表达式代码。
  10. 使用 Prioritize Attribute Order 部分设置针对匹配者评估主机属性或事实的优先级顺序(配置如下)。您可以重新排列列表中的条目,并添加到默认列表中。要在匹配者间逻辑 AND 条件,将匹配者的名称放在一行中,以逗号分隔列表形式排列。
  11. Specify Matchers 部分,单击 Add Matcher 以添加一个条件参数。要匹配的属性应当对应于上述 Order 列表中的条目。如果没有配置 matcher,则只能使用默认值。例如,如果参数所需的值 server1.example.com 的任何主机的 Server1,则可将 Match 指定为 fqdn=server1.example.com,并将 Value 指定为 Server1
  12. Submit 保存您的更改。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.