2017-06-21 3 views
0

私は、チェックイン時にノードが配置される環境を決定するENC設定を持っています。人形ENCは事実に基づいて環境を選択しますか?

現在、私は外部データベースのホスト名を使用してノードタイプを追跡しています。

ノードが最初にチェックインするときに、環境を決定したいと思うのは、事実に基づいているはずです。たとえば、OSのファクトを使用して、新しいノードにWindowsまたはLinux構成ファイルを送信するかどうかを判断したいとします。

私はノードのホスト名にしかアクセスできないようですが、実際にはPuppetDBに送信してファクトを取得する可能性がありますが、これは新しいノードの初期チェックイン時には当てはまりませんパペットサーバ。

これには実用的な解決策がありますか?

答えて

1

私がENCからPuppetDBに直接アクセスすると、最初のチェックインでも自分のノードのすべての事実にアクセスできることがわかりました。限り、それはポストpluginsyncとプレカタログコンパイルを発生するよう

#!/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

:ここ

python library for PuppetDb使用を使用した例ENCです。このスクリプトをPuppet MasterのENCディレクトリに置いていますか? –

+1

これは私のencのために '/ etc/puppetlabs/puppet'フォルダに指定したスクリプトです。私は事実が実行される前にアップロードされていると思う。 –

関連する問題