Puppet 傀儡ENC根据事实选择环境?

Puppet 傀儡ENC根据事实选择环境?,puppet,Puppet,我有一个ENC设置,它确定在签入期间节点将放置在哪个环境中 目前,我正在外部数据库中使用主机名跟踪节点类型 当一个节点第一次签入时,我想根据一个事实来确定它应该处于的环境。例如,假设我想使用OS事实来确定是否应向新节点发送windows或linux配置文件 似乎我只能访问节点主机名,我可能会将其发送到PuppetDB以检索事实,但在Puppet服务器上注册的新节点的初始签入时,情况并非如此 有人对此有实际的解决方案吗?我发现,如果我直接从我的ENC访问PuppetDB,即使在第一次签入时,我也可

我有一个ENC设置,它确定在签入期间节点将放置在哪个环境中

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

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

似乎我只能访问节点主机名,我可能会将其发送到PuppetDB以检索事实,但在Puppet服务器上注册的新节点的初始签入时,情况并非如此


有人对此有实际的解决方案吗?

我发现,如果我直接从我的ENC访问PuppetDB,即使在第一次签入时,我也可以访问我节点的所有事实

以下是使用use的ENC示例:


只要它发生在插件同步后和目录编译前。您正在将此脚本放置在ENC目录中的Puppet Master上?它是我在
/etc/puppetlabs/Puppet
文件夹中为我的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'