如何将自定义事实插入PuppetDB

时间:2017-04-08 12:44:50

标签: puppet

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

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

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

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

POST http://puppetserver:8080/pdb/cmd/v1

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

然后,当我启动木偶代理时,我的新事实将被删除,并保存新的事实。

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

1 个答案:

答案 0 :(得分:0)

PuppetDB存储the most recent set of facts for every node

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


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


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

  1. 在节点(my_fact.sh)的/etc/facter/facts.d/目录中创建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"

有关更多信息,包括如何在节点上添加带有人偶清单的自定义事实的信息,请参阅完整的自定义事实documentation