1つ(またはすべて)のノードのカタログをコンパイルし、その特定のデータをどこかに保存するようにpuppetに指示することは可能ですか?
ノードごとに必要なすべてのパッケージとそのバージョンを取得することに特に関心がありますが、データを取得するための一般的なアプローチも適しています。
[〜#〜]更新[〜#〜]
この元の答えは古くなっています。 Puppet 3.x用に更新されたコマンドは次のとおりです。
puppet resource package
Puppetによってインストールされているかどうかに関係なく、ノードにインストールされているすべてのパッケージとバージョンを探す場合は、次のコマンドが組み込まれており、任意のPuppetノードで実行できます。
ralsh package
これにより、データがPuppetマニフェスト形式でstdoutに出力されます。
Ralshは、instances
メソッドが実装されているリソースタイプ(ユーザー、グループなど)で機能します。
Puppetマニフェストで定義されているすべてのリソースのYAMLカタログを一元的に調査する場合、Puppetmasterはすでにこの情報を/var/lib/puppet/client_yaml/catalog
にキャッシュしており、選択したYAMLパーサーで解析するだけです。ごく最近導入されたPuppet Inventory Serviceも、あなたにとって良い選択肢かもしれません。 0.25.xのような古いバージョンで実行している場合は、storeconfigsを使用できます。
正直なところ、これはmcollectiveが実行するために構築されたものです。具体的には、mcollectiveのパッケージプロバイダー: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentPackage
これはパペットを完全にスキップし、パペットをインストールする必要さえありません。