0

我希望能够为 puppet 设置许多不同的自定义事实。看起来有一种方法可以在 yaml 文件中列出所有这些,然后将它们加载进去,但是文档没有确切的命令来做到这一点。

如何从 yml 文件中设置自定义事实?如果我不能这样做,是否有任何其他方法可以设置事实而无需构建所有通过Facter.add函数运行的自定义 ruby​​ 脚本?

4

2 回答 2

2

这些类型的事实被称为“外部事实”。它们可以是可执行文件,也可以是文本文件或受支持的标记格式。存储它们的正确位置是在facts.d相关模块的目录中。请注意此处有关在何处存储外部事实的文档:https ://docs.puppet.com/facter/3.8/custom_facts.html#fact-locations 。这些事实文件将自动复制到客户端节点,并在 Puppet 代理执行开始附近的插件同步期间加载。回想一下,对于包含modulepath此模块所在的任何目录(通常是相关目录环境),都会发生这种情况。

给定一个示例模块foo,目录结构如下所示:

foo
|__facts.d
   |__ bar.yaml
   |__ bar.json
   |__ bar.txt

示例内容如下:

# foo/facts.d/bar.yaml
fact_name: fact_value

# foo/facts.d/bar.json
{
  fact_name: fact_value
}

# foo/facts.d/bar.txt
fact_name=fact_value

然后,您可以在您的 Puppet 代码中正常使用这些事实,例如$facts['fact_name']或在旧的 Facter 上$::fact_name。您还可以使用 Facter 的 puppet 插件参数在客户端上查看它们facter -p

于 2017-08-23T16:06:29.687 回答
0

您可以将您的事实写入fact.d目录中的 yaml 文件中。

例如,您可以创建一个/etc/facter/facts.d/my_custom_fact.yaml

my_fact: 42

这将创建一个事实 my_fact,值为 42。

您可以通过键入来检查它是否有效facter,并检查您的事实是否存在。

于 2017-08-23T07:37:26.130 回答