fedora-infrastructure/scripts/puppetsearch/puppetsearch.rb

59 lines
1.2 KiB
Ruby
Raw Normal View History

#!/usr/bin/ruby
require "puppet"
require "optparse"
# Note: This script requires puppet >= 0.25.5.
Puppet.settings.parse
options = {
2010-05-17 01:50:25 -04:00
:node => Puppet[:certname],
:types => [],
2010-05-17 01:50:25 -04:00
:source => :yaml,
}
OptionParser.new do |opts|
opts.banner = "Usage: puppetsearch [options] title1 title2 ..."
2010-05-17 01:50:25 -04:00
opts.on("-n",
"--node NODENAME",
"Search on node NODENAME") do |node|
options[:node] = node
end
opts.on("-t",
"--types TYPES",
"Comma-separated list of resource types to search for") do |types|
2010-05-17 01:50:25 -04:00
options[:types] = types.split(",")
end
opts.on("-s",
"--source SOURCE",
"Catalog source (yaml, compiler, rest, etc.)") do |source|
options[:source] = source
end
end.parse!
# Search for files by default.
if options[:types].empty?
options[:types] << "File"
end
2010-05-17 01:50:25 -04:00
Puppet[:catalog_terminus] = options[:source]
2010-05-17 01:50:25 -04:00
catalog = Puppet::Resource::Catalog.find(options[:node])
2010-05-17 01:50:25 -04:00
if catalog.nil?
abort "Could not load catalog."
end
2010-05-12 15:32:09 -04:00
ARGV.each do |search_title|
options[:types].each do |type|
2010-05-12 15:32:09 -04:00
resource = catalog.resource(type, search_title)
unless resource.nil?
puts "#{resource} defined in #{resource.file}"
end
end
end