如何将自定义事实插入到PuppetDB



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

经过数小时的安装和配置,Node的事实现在存储在Puppet DB中。

现在在安装PuppetDB之后,我想将自定义事实插入Puppetdb。 这是我制作的以下场景:

  • 我在傀儡服务器中添加了一个新节点
  • 我使用 puppetdb api 添加一个自定义事实:

发布 http://puppetserver:8080/pdb/cmd/v1

{
  "command":"replace facts",
  "version": 5,
  "payload": {
    "certname":"newnodehostname",
    "environment":"production",
    "producer_timestamp":"TIMESTAMP",
    "producer":"newnodehostname",
    "values":{
      "newfact":"newfactvalue"
    }
  }
}

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

所以我的问题是:为什么当我在节点上运行木偶代理时,我的新事实被删除了?

PuppetDB 存储每个节点的最新事实集。

因此,当在 puppet 运行期间,代理上传一组新的事实时,它会覆盖您通过一次性 PuppetDB API 调用发送的事实。


您应该考虑将自定义事实添加为自定义事实,以便在每次木偶运行期间设置事实。


可以说,对于单个节点执行此操作的最简单方法是:

  1. 节点上的/etc/facter/facts.d/目录中创建my_fact.sh文件 ( newnodehostname (
  2. 使其可执行
  3. 将类似以下内容放入此脚本中:
#!/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"

有关更多信息,包括如何在节点上使用 puppet 清单添加自定义事实的信息,请参阅完整的自定义事实文档。

最新更新