3

我在以下习惯事实方面遇到了困难;详情如下。

json自定义事实需要在以下文件夹中查找某个文件。这会在清单中使用时显示信息。但是,当我将它添加到自定义事实时,它不起作用。

"/opt/${::hostname}/${::custom_variable}_${::fqdn}.json"

但是,如果我硬编码如下所示的值,它可以正常工作。

"/opt/host1.domain.com/mycompany_host1.json"

请注意,自定义变量是在 Puppet 控制台上针对“分类”定义的。

4

1 回答 1

3

如果您需要在自定义事实中使用事实,则必须使用 Facter 的.value方法访问它们。当事实作为该方法的符号参数引用时(例如Facter.value(:hostname)),它们的值是可访问的。为了能够使用 Facter 类,您必须在 Ruby 文件中为自定义事实要求它:

require 'facter'

然后,您可以通过字符串插值以正常方式使用上述示例中的变量:

"/opt/#{Facter.value(:hostname)}/#{Facter.value(:custom_variable)}_#{Facter.value(:fqdn)}.json"

请注意,custom_variable在此自定义事实中使用之前,需要在插件同步期间在系统上分配事实。此外,您在上面的示例中切换了主机名和 fqdn,因此在实施此操作时请确保它们正确对齐。

https://docs.puppet.com/facter/3.6/custom_facts.html#using-other-facts

于 2017-05-11T02:02:28.950 回答