Skip to content

Instantly share code, notes, and snippets.

@ohadlevy
Created November 12, 2010 20:32
Show Gist options
  • Save ohadlevy/674630 to your computer and use it in GitHub Desktop.
Save ohadlevy/674630 to your computer and use it in GitHub Desktop.
Deletes a host from dhcp, dns, tftp and foreman using rest api
#!/usr/bin/ruby
require "rubygems"
require "rest_client"
require "json"
require "uri"
fqdn = ARGV[0] || raise("Must define a fqdn")
start = Time.now
dhcp_server ="http://192.168.100.254:4567"
tftp_server_ip = "192.168.100.254"
tftp_server="http://#{tftp_server_ip}:9393"
dns_server = tftp_server
foreman_url ="http://puppet:3000"
foreman_user = "admin"
foreman_pass = "changeme"
@foreman = RestClient::Resource.new foreman_url,{ :user => foreman_user, :password => foreman_pass,
:headers => { :accept => :json, :content_type => :json }}
# fetch availavble networks on DHCP server
host = JSON.parse(@foreman["/hosts/#{fqdn}"].get.body)["host"]
puts "fetching subnets from dhcp server"
networks= JSON.parse(RestClient.get("#{dhcp_server}/.json").body)
# Use the first one
network = networks.first["network"]
puts "deleteing DHCP record #{host["ip"]} from #{network}"
RestClient.delete("#{dhcp_server}/#{network}/#{host["ip"]}")
puts "Removing from Foreman"
@foreman["/hosts/#{fqdn}"].delete
puts "Removnig from TFTP"
# TODO cleanup the entry after the machine sucsefully installed
# this will be done internally in foreman, so should not be a problem
RestClient.delete "#{tftp_server}/tftp/#{host["mac"]}"
print "Removing DNS records..A.."
RestClient.delete "#{dns_server}/dns/#{fqdn}"
print "done...PTR..."
RestClient.delete "#{dns_server}/dns/#{host["ip"].split(".").reverse.join(".") + ".in-addr.arpa"}"
puts "done"
printf "Deleted host in %5.2f seconds\n", Time.now - start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment