2017-06-21 69 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指定的腳本。我猜這些事實在它運行之前就已經上傳了。 –