我正在使用最新版本的 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 调用发送的事实。
您应该考虑将自定义事实添加为自定义事实,以便在每次木偶运行期间设置事实。
可以说,对于单个节点执行此操作的最简单方法是:
- 在
- 节点上的
/etc/facter/facts.d/
目录中创建my_fact.sh
文件 (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"
有关更多信息,包括如何在节点上使用 puppet 清单添加自定义事实的信息,请参阅完整的自定义事实文档。