如何将自定义事实插入PuppetDB

如何将自定义事实插入PuppetDB,puppet,Puppet,我正在使用puppet server的最新版本,我正在将puppet服务器连接到Puppetdb,以在puppet db中存储目录和事实 经过数小时的安装和配置。节点的事实现在存储在puppet db中 现在,在安装了PuppetDB之后,我想将自定义事实插入到PuppetDB中。以下是我所做的场景: 我向puppet服务器添加了一个新节点 我使用puppetdb api添加了一个自定义事实: 职位 然后,当我启动puppet代理时,我的新事实被删除,新事实被保存 所以我的问题是:为什么在节

我正在使用puppet server的最新版本,我正在将puppet服务器连接到Puppetdb,以在puppet db中存储目录和事实

经过数小时的安装和配置。节点的事实现在存储在puppet db中

现在,在安装了PuppetDB之后,我想将自定义事实插入到PuppetDB中。以下是我所做的场景:

  • 我向puppet服务器添加了一个新节点
  • 我使用puppetdb api添加了一个自定义事实:
职位

然后,当我启动puppet代理时,我的新事实被删除,新事实被保存

所以我的问题是:为什么在节点上运行puppet代理时会删除我的新事实?

PuppetDB存储

因此,在puppet运行期间,代理上载新事实集时,它会覆盖您使用一次性PuppetDB API调用发送的事实集


你应该考虑将你的自定义事实添加为A,这样,在每次木偶运行期间都会设置这个事实。


对于单个节点,最简单的方法是:

  • 在节点上(
    newnodehostname
    )的
    /etc/facter/facts.d/
    目录中创建
    my_fact.sh
    文件
  • 使其可执行
  • 在此脚本中放入类似的内容:
  • 有关更多信息,包括如何在节点上添加带有puppet清单的自定义事实的信息,请参阅完整的自定义事实。

    PuppetDB存储

    因此,在puppet运行期间,代理上载新事实集时,它会覆盖您使用一次性PuppetDB API调用发送的事实集


    你应该考虑将你的自定义事实添加为A,这样,在每次木偶运行期间都会设置这个事实。


    对于单个节点,最简单的方法是:

  • 在节点上(
    newnodehostname
    )的
    /etc/facter/facts.d/
    目录中创建
    my_fact.sh
    文件
  • 使其可执行
  • 在此脚本中放入类似的内容:
  • 有关更多信息,包括如何在节点上添加带有puppet清单的自定义事实的信息,请参阅完整的自定义事实

    {
      "command":"replace facts",
      "version": 5,
      "payload": {
        "certname":"newnodehostname",
        "environment":"production",
        "producer_timestamp":"TIMESTAMP",
        "producer":"newnodehostname",
        "values":{
          "newfact":"newfactvalue"
        }
      }
    }
    
    #!/bin/bash
    # ^^^^^^^^^ - note that shebang is REQUIRED for custom fact scripts
    
    # all output in KEY=VALUE format will be treated as custom fact names and their values
    echo "newfact=newfactvalue"