Можно ли указать марионетке составить каталог для одного (или всех) узлов и где-то сохранить эти данные?
Меня особенно интересует получение всех необходимых пакетов и их версий для каждого узла, но также подходит общий подход для получения любых данных.
ОБНОВИТЬ
Этот исходный ответ уже устарел. Обновленная команда для Puppet 3.x:
puppet resource package
Если вы ищете все пакеты и версии, установленные на узле, независимо от того, установлены они Puppet или нет, следующая команда встроена и может быть запущена на любом узле Puppet:
ralsh package
Это выведет данные в форме манифеста Puppet на стандартный вывод.
Ральш будет работать с любым типом ресурса, имеющим instances
реализованный метод (пользователи, группы и т. д.).
Если вы хотите централизованно проверять каталог YAML на предмет всех ресурсов, определенных в манифестах Puppet, ваш Puppetmaster уже кэширует эту информацию в /var/lib/puppet/client_yaml/catalog
и вам просто нужно проанализировать его с помощью выбранного парсера YAML. Служба инвентаризации марионеток, которая была представлена относительно недавно, также может быть для вас хорошим вариантом; вы можете обойтись storeconfigs, если вы используете более старую версию, например 0.25.x.
Честно говоря, mcollective был создан именно для этого. В частности, поставщик пакетов для mcollective: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentPackage
Это полностью пропускает марионетку и даже не требует установки марионетки.