3.6. 配置智能变量
以下流程配置智能变量以覆盖 Puppet 类中的值。
配置智能变量
- 单击 Configure > Puppet Classes。
 - 从列表中选择一个类。
 - 点 Smart Variables 选项卡。这将显示一个新屏幕。left 部分包含类支持的可能参数列表。right 部分包含选择的参数的配置选项。点 Add Variable 添加新参数。否则,从左侧列表中选择参数。
 - 在 Key 字段中输入参数的名称。
 - 编辑 Description 文本框,以添加任何纯文本注释。
 - 选择要 传递的数据的参数类型。这是最常见的字符串,但支持其他数据类型。
 - 如果发生主机匹配,则输入要发送到 Puppet master 的参数的 Default Value。
 - 可选: 如果该字段包含您不想在操作时显示的数据,请选择 Hidden Value。
 - 使用 Optional Input Validator 部分来限制参数允许的值。在 Validator 规则字段中,选择以逗号分隔的值或正则表达式列表( regexp)并在 Validator 规则 字段中输入允许的值或正则表达式代码。
 Prioritize Attribute Order 部分提供了根据条件参数覆盖特定主机的值的选项。属性类型及其值称为
匹配程序。- 设置 要针对 匹配人员评估主机属性或事实(fact)顺序排列排列列表中的条目的优先顺序。您可以添加到默认列表中。要在匹配者间创建一个逻辑 AND 条件,将它们放在一行中,以逗号分隔列表。
 单击 Add Matcher 以添加条件参数。要匹配的属性应当对应于 Order 列表中的条目。如果没有配置 matcher,则只有默认值可用于覆盖功能。
例如,如果提供给 Puppet master 所需的参数值是
测试任何具有全限定域名server1.example.com的主机,则将 matcher 指定为fqdn=server1.example.com,值为test。匹配的优先级如下:
- 如果 matcher 是主机属性,请使用:
 - 如果没有具有该名称的属性,请查找匹配的 host 参数(这会根据参数层次结构进行继承)。
 如果仍没有匹配项,请检查主机事实。
建议您使用一个在 Facter 中存在的属性,且无法与 host 属性混淆。主机属性可以是主机参数,也可以是与主机关联,如主机组、域和组织。matcher 只能是主机 中的一个内容,例如 config 组不能被使用,因为主机可以有多个配置组,但主机只能有一个位置,因此位置是有效的匹配器。
可以使用 嵌入式 Ruby (ERB)模板语法中的 Value 字段中的参数和 Puppet 事实实现动态数据。例如,要将 Puppet 事实用作值的一部分:
<%= @host.facts['network_eth0'] %>
<%= @host.facts['network_eth0'] %>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 若要列出可用的 Puppet 事实,可导航到 Monitor > Facts。
- 点 Submit 保存您的更改。
 
如需有关 ERB 语法的更多信息,请参阅 管理主机 中的模板编写参考。