2017-06-21 29 views
0

我有一个ENC设置,它可以确定在登记过程中节点将放置在哪个环境中。Puppet ENC根据事实选择环境?

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

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

看来我只能访问节点主机名,我可能会发送到PuppetDB以检索事实,但在初始签入新节点时,情况并非如此。木偶服务器。

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

回答

1

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

这里是一个例子ENC使用python library for PuppetDb使用:

#!/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' 
+0

只要它发生后pluginsync和目录预编译。您将此脚本放置在ENC的目录中的Puppet Master上? –

+1

这是我在'/ etc/puppetlabs/puppet'文件夹中为我的enc指定的脚本。我猜这些事实在它运行之前就已经上传了。 –