【问题标题】:Puppet facter, how to set custom facts from yaml file?Puppet facter,如何从 yaml 文件中设置自定义事实?
【发布时间】:2017-08-22 19:32:12
【问题描述】:

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

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

【问题讨论】:

    标签: yaml puppet facter


    【解决方案1】:

    这些类型的事实被称为“外部事实”。它们可以是可执行文件,也可以是文本文件或受支持的标记格式。存储它们的正确位置是在相关模块内的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 -p 使用 Facter 的 puppet 插件参数在客户端上查看它们。

    【讨论】:

      【解决方案2】:

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

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

      my_fact: 42
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-03
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 2013-10-08
        相关资源
        最近更新 更多