/usr/sbin/puppetstoredconfigclean is in puppetmaster-common 2.7.11-1ubuntu2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #!/usr/bin/env ruby1.8
# Script to clean up stored configs for (a) given host(s)
#
# Credits:
# Script was taken from http://reductivelabs.com/trac/puppet/attachment/wiki/UsingStoredConfiguration/kill_node_in_storedconfigs_db.rb (link no longer valid),
# which haven been initially posted by James Turnbull
# duritong adapted and improved the script a bit.
require 'getoptlong'
require 'puppet'
require 'puppet/rails'
config = Puppet[:config]
def printusage(error_code)
puts "Usage: #{$0} [ list of hostnames as stored in hosts table ]"
puts "\n Options:"
puts "--config <puppet config file>"
exit(error_code)
end
opts = GetoptLong.new(
[ "--config", "-c", GetoptLong::REQUIRED_ARGUMENT ],
[ "--help", "-h", GetoptLong::NO_ARGUMENT ],
[ "--usage", "-u", GetoptLong::NO_ARGUMENT ],
[ "--version", "-v", GetoptLong::NO_ARGUMENT ]
)
begin
opts.each do |opt, arg|
case opt
when "--config"
config = arg
when "--help"
printusage(0)
when "--usage"
printusage(0)
when "--version"
puts "#{Puppet.version}"
exit
end
end
rescue GetoptLong::InvalidOption => detail
$stderr.puts "Try '#{$0} --help'"
exit(1)
end
printusage(1) unless ARGV.size > 0
if config != Puppet[:config]
Puppet[:config]=config
Puppet.settings.parse
end
master = Puppet.settings.instance_variable_get(:@values)[:master]
main = Puppet.settings.instance_variable_get(:@values)[:main]
db_config = main.merge(master)
# get default values
[:master, :main, :rails].each do |section|
Puppet.settings.params(section).each do |key|
db_config[key] ||= Puppet[key]
end
end
adapter = db_config[:dbadapter]
args = {:adapter => adapter, :log_level => db_config[:rails_loglevel]}
case adapter
when "sqlite3"
args[:dbfile] = db_config[:dblocation]
when "mysql", "mysql2", "postgresql"
args[:host] = db_config[:dbserver] unless db_config[:dbserver].to_s.empty?
args[:username] = db_config[:dbuser] unless db_config[:dbuser].to_s.empty?
args[:password] = db_config[:dbpassword] unless db_config[:dbpassword].to_s.empty?
args[:database] = db_config[:dbname] unless db_config[:dbname].to_s.empty?
args[:port] = db_config[:dbport] unless db_config[:dbport].to_s.empty?
socket = db_config[:dbsocket]
args[:socket] = socket unless socket.to_s.empty?
else
raise ArgumentError, "Invalid db adapter #{adapter}"
end
args[:database] = "puppet" unless not args[:database].to_s.empty?
ActiveRecord::Base.establish_connection(args)
ARGV.each do |hostname|
if @host = Puppet::Rails::Host.find_by_name(hostname.strip)
print "Removing #{hostname} from storedconfig..."
$stdout.flush
@host.destroy
puts "done."
else
puts "Error: Can't find host #{hostname}."
end
end
exit 0
|