Puppet ENC根据事实选择环境?

时间:2017-06-21 16:03:25

标签: puppet

我有一个ENC设置,用于确定在办理登机手续时将放置节点的环境。

目前,我正在使用外部数据库中的主机名跟踪节点类型。

当节点第一次签入时,我想根据事实确定它应该处于的环境。例如,假设我想使用OS这个事实来确定是否应该向Windows或Linux配置文件发送新节点。

似乎我只能访问节点主机名,我可能会将其发送到PuppetDB来检索事实,但是在注册的新节点的初始签入时不会出现这种情况。 Puppet服务器。

有没有人有这方面的实际解决方案?

1 个答案:

答案 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'