this puppet labsの記事によると、シェルスクリプトからカスタムファクトを作成できます。
単一のファクトを返すbashスクリプトを作成しました。これは、modulesfacts.dディレクトリにパッケージ化されています。モジュールは、ENCクラスを介してターゲットシステムに含まれています。ターゲットでパペットエージェントによって呼び出されると、空のセットが返されます。エージェントで手動で実行されると、ファクトが正しく返されます。スクリプトにはマスターに対する実行権限がありますが、エージェントに対する実行権限はありません。
アクセス許可とファイルタイプに関連するバグレポートを見ましたが、それはWindowsであり、puppetバージョン3で修正されるはずでした。
私は何が間違っているのですか?
ENCの定義:
_--- classes: facttest:
_
シェルスクリプト:
#!/bin/bash echo "test_fact1=$(hostname)"
権限:
_master: -rwxr-xr-x 1 root root ... modules/facttest/facts.d/testfact.sh
_ _agent: -rw-r--r-- 1 root root ... /var/lib/puppet/facts.d/testfact.sh
_
エージェントメッセージ:
_Fact file /var/lib/puppet/facts.d/testfact.sh was parsed but returned an empty data set
_
バージョン情報:Puppet master: 3.5.1 (Debian) Facter master: 2.0.1 Puppet agent: 3.6.1 (OpenSUSE) Facter agent: 2.0.1
これは実際には bug in Puppet 3.6
、どうやら。
余談ですが、マスターよりも新しいエージェントの使用は一般的にサポートされていないことに注意してください。