Puppet facter,如何从yaml文件中设置自定义事实?

时间:2017-08-22 19:32:12

标签: yaml puppet facter

我希望能够为木偶设置一些不同的自定义事实。看起来有一种方法可以在yaml文件中列出所有这些内容然后加载它们,但是the documentation没有确切的命令来执行此操作。

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

2 个答案:

答案 0 :(得分:2)

这些类型的事实被称为“外部事实”。它们可以是可执行文件,也可以是文本文件或支持的标记格式。存储它们的正确位置位于相关模块的facts.d目录中。请注意有关在何处存储外部事实的文档:https://docs.puppet.com/facter/3.8/custom_facts.html#fact-locations。这些事实文件将自动复制到客户端节点,并在Puppet代理执行开始附近的pluginsync期间加载。回想一下,对于包含此模块所在的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在客户端上查看它们。

答案 1 :(得分:0)

您可以在facts.d目录中的yaml文件中编写您的事实。

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

my_fact: 42

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

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