我正在使用最新版本的puppet服务器,我正在将puppet服务器连接到 Puppetdb ,以便在puppet db中存储目录和事实。
安装和配置数小时后。节点的事实现在存储在puppet db中。
现在安装PuppetDB之后,我想向Puppetdb插入自定义事实。这是我做的以下场景:
{
"command":"replace facts",
"version": 5,
"payload": {
"certname":"newnodehostname",
"environment":"production",
"producer_timestamp":"TIMESTAMP",
"producer":"newnodehostname",
"values":{
"newfact":"newfactvalue"
}
}
}
然后,当我启动木偶代理时,我的新事实将被删除,并保存新的事实。
所以我的问题是:为什么我在节点上运行puppet代理时会删除我的新事实?
答案 0 :(得分:0)
PuppetDB存储the most recent set of facts for every node。
因此,在运行puppet期间,代理会上载新的一组事实,它将覆盖您通过一次性PuppetDB API调用发送的事实。
您应该考虑将您的自定义事实添加为custom fact,以便在每次木偶运行期间设置该事实。
可以说,对单个节点执行此操作的最简单方法是:
my_fact.sh
)的/etc/facter/facts.d/
目录中创建newnodehostname
文件#!/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。