我有一个ENC设置,用于确定在办理登机手续时将放置节点的环境。
目前,我正在使用外部数据库中的主机名跟踪节点类型。
当节点第一次签入时,我想根据事实确定它应该处于的环境。例如,假设我想使用OS
这个事实来确定是否应该向Windows或Linux配置文件发送新节点。
似乎我只能访问节点主机名,我可能会将其发送到PuppetDB来检索事实,但是在注册的新节点的初始签入时不会出现这种情况。 Puppet服务器。
有没有人有这方面的实际解决方案?
答案 0 :(得分:1)
我发现如果我直接从我的ENC访问PuppetDB,即使在第一次检查时我也可以访问我的节点的所有事实。
以下是使用python library for PuppetDb使用的ENC示例:
#!/usr/bin/env python
import sys
from pypuppetdb import connect
db = connect(host='puppetdb', port=8080, ssl_verify=False, ssl_key=None, ssl_cert=None, timeout=20)
certname = sys.argv[1]
try:
node = db.node(certname)
print 'environment: ' + node.fact('os').value
except:
print 'environment: default'