Skip to content

Instantly share code, notes, and snippets.

@phumpal
Last active August 29, 2015 14:08
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phumpal/eb1caaf5a5209261560b to your computer and use it in GitHub Desktop.
Save phumpal/eb1caaf5a5209261560b to your computer and use it in GitHub Desktop.
Gather public cloud server IPs in a region and permits traffic to statsd/graphite
#!/usr/bin/env ruby
require 'fog'
connection = Fog::Compute.new({
:provider => 'rackspace',
:rackspace_username => ENV['RACKSPACE_API_USERNAME'],
:rackspace_api_key => ENV['RACKSPACE_API_KEY'],
:version => :v2,
:rackspace_region => :ord
})
cloud_servers = connection.servers
cloud_ips = cloud_servers.map{ |item| item.ipv4_address }.flatten
cloud_ips.sort_by!{ |ip| ip.split('.').map{ |octet| octet.to_i} }
iptable_rules = File.open("/tmp/iptables.txt", "w")
cloud_ips.each do |server|
iptable_rules.puts "iptables -A INPUT -p tcp -s #{server} -m multiport --dports 2003,8125 -j ACCEPT"
end
iptable_rules.puts "iptables -A INPUT -p tcp -m multiport --dports 2003,8125 -j DROP"
iptable_rules.puts "iptables -A INPUT -i eth0 -s 183.0.0.0/8 -j DROP"
iptable_rules.close
exec("sudo iptables-restore < /tmp/iptables.txt")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment