Report abuse

1
2
2013:0:karl@monique:puppet$ cat kill_node_in_storeconfigs.rb 
#!/usr/bin/env ruby

Usage: sudo ./kill_node_in_storeconfigs_db.rb <hostname as stored in hosts table>

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
require 'puppet/rails'

Puppet[:config] = "/etc/puppet/puppet.conf" 
Puppet.parse_config
pm_conf = Puppet.settings.instance_variable_get(:@values)[:puppetmasterd]

adapter = pm_conf[:dbadapter]
args = {:adapter => adapter, :log_level => pm_conf[:rails_loglevel]}

case adapter
  when "sqlite3":
    args[:dbfile] = pm_conf[:dblocation]
  when "mysql", "postgresql":
    args[:host]     = pm_conf[:dbserver] unless pm_conf[:dbserver].empty?
    args[:username] = pm_conf[:dbuser] unless pm_conf[:dbuser].empty?
    args[:password] = pm_conf[:dbpassword] unless pm_conf[:dbpassword].empty?
    args[:database] = "puppet"
  else
    raise ArgumentError, "Invalid db adapter %s" % adapter
end

ActiveRecord::Base.establish_connection(args)

if @host = Puppet::Rails::Host.find_by_name(ARGV[0].strip)
  print "Killing #{ARGV[0]}..." 
  $stdout.flush
  @host.destroy 
  puts "done." 
else
  puts "Can't find host #{ARGV[0]}." 
end