(368) Added local network config code for Suse.

Networking in SUSE works almost exactly like redhat.
The only difference is the location of the networking scripts.

This has been verified as working on SLES11sp1, but requires a previously configured
eth1 interface (as with redhat)

I have also verified that I can still bring up a localnet on rhel 4,5
This commit is contained in:
Dan Bode 2011-05-16 15:10:25 -07:00 committed by Mitchell Hashimoto
parent 8bb2403ce0
commit ad834feccc
5 changed files with 24 additions and 4 deletions

View File

@ -8,4 +8,5 @@ require 'vagrant/systems/solaris'
require 'vagrant/systems/debian'
require 'vagrant/systems/gentoo'
require 'vagrant/systems/redhat'
require 'vagrant/systems/suse'
require 'vagrant/systems/ubuntu'

View File

@ -13,6 +13,7 @@ module Vagrant
return :gentoo if ssh.test?("cat /etc/gentoo-release")
return :redhat if ssh.test?("cat /etc/redhat-release")
return :suse if ssh.test?("cat /etc/SuSE-release")
end
# Can't detect the distro, assume vanilla linux

View File

@ -6,9 +6,9 @@ module Vagrant
# interface file.
vm.ssh.execute do |ssh|
# Clear out any previous entries
ssh.exec!("sudo touch /etc/sysconfig/network-scripts/ifcfg-eth#{net_options[:adapter]}")
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/sysconfig/network-scripts/ifcfg-eth#{net_options[:adapter]} > /tmp/vagrant-ifcfg-eth#{net_options[:adapter]}")
ssh.exec!("sudo su -c 'cat /tmp/vagrant-ifcfg-eth#{net_options[:adapter]} > /etc/sysconfig/network-scripts/ifcfg-eth#{net_options[:adapter]}'")
ssh.exec!("sudo touch #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}")
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]} > /tmp/vagrant-ifcfg-eth#{net_options[:adapter]}")
ssh.exec!("sudo su -c 'cat /tmp/vagrant-ifcfg-eth#{net_options[:adapter]} > #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}'")
end
end
@ -20,11 +20,19 @@ module Vagrant
vm.ssh.execute do |ssh|
interface_up = ssh.test?("/sbin/ifconfig eth#{net_options[:adapter]} | grep 'inet addr:'")
ssh.exec!("sudo /sbin/ifdown eth#{net_options[:adapter]} 2> /dev/null") if interface_up
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/sysconfig/network-scripts/ifcfg-eth#{net_options[:adapter]}'")
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> #{network_scripts_dir}/ifcfg-eth#{net_options[:adapter]}'")
ssh.exec!("sudo /sbin/ifup eth#{net_options[:adapter]}")
end
end
# The path to the directory with the network configuration scripts.
# This is pulled out into its own directory since there are other
# operationg systems (SuSE) which behave similarly but with a different
# path to the network scripts.
def network_scripts_dir
'/etc/sysconfig/network-scripts/'
end
def change_host_name(name)
vm.ssh.execute do |ssh|
# Only do this if the hostname is not already set

View File

@ -0,0 +1,9 @@
module Vagrant
module Systems
class Suse < Redhat
def network_scripts_dir
'/etc/sysconfig/network/'
end
end
end
end

View File

@ -63,6 +63,7 @@ module Vagrant
:freebsd => Systems::FreeBSD,
:gentoo => Systems::Gentoo,
:redhat => Systems::Redhat,
:suse => Systems::Suse,
:linux => Systems::Linux,
:solaris => Systems::Solaris
}