我希望能够为木偶设置许多不同的自定义事实。 看起来有一种方法可以在yaml文件中列出所有这些,然后加载它们,但是文档没有确切的命令来执行此操作。
如何从 yml 文件设置自定义事实? 如果我不能做到这一点,有没有其他方法可以设置事实,而不必构建所有通过Facter.add
函数运行的自定义 ruby 脚本?
这些类型的事实被称为"外部事实"。它们可以是可执行文件,也可以是文本或支持的标记格式的文件。存储它们的正确位置位于相关模块的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
中正常使用这些事实。您还可以在客户端上使用 puppet 插件参数通过facter -p
查看它们。
您可以将事实写入 facts.d 目录中的 yaml 文件中。
例如,您可以创建一个/etc/facter/facts.d/my_custom_fact.yaml
:
my_fact: 42
这将创建一个事实my_fact,值为 42。
您可以通过键入facter
来检查它是否有效,并检查您是否存在。