lib/kytoon/providers/xenserver/server_group.rb in kytoon-1.0.0 vs lib/kytoon/providers/xenserver/server_group.rb in kytoon-1.0.1
- old
+ new
@@ -1,11 +1,10 @@
require 'json'
-require 'builder'
require 'fileutils'
-require 'rexml/document'
require 'kytoon/util'
require 'base64'
+require 'ipaddr'
module Kytoon
module Providers
@@ -227,21 +226,33 @@
end
end
def self.init_host(sg)
+ cidr = IPAddr.new(sg.netmask).to_i.to_s(2).count("1")
+
hosts_file_data = "127.0.0.1\tlocalhost localhost.localdomain\n"
sg.servers.each do |server|
hosts_file_data += "#{server['ip_address']}\t#{server['hostname']}\n"
end
Kytoon::Util.remote_exec(%{
+# Add first IP to bridge
+if ! ip a | grep #{sg.gateway}/#{cidr} | grep #{sg.bridge}; then
+ ip a add #{sg.gateway}/#{cidr} dev #{sg.bridge}
+fi
+
cat > /etc/hosts <<-EOF_CAT
#{hosts_file_data}
EOF_CAT
# FIXME... probably a bit insecure but most people are probably using
# boxes behind another firewall anyway.
iptables -F
+iptables -X
+iptables -t nat -F
+iptables -t nat -X
+iptables -t mangle -F
+iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o #{sg.public_ip_bridge} -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward