Enabling bridged networks on Debian
This commit is contained in:
parent
42883cbd20
commit
474ac3a63d
|
@ -42,8 +42,10 @@ module Vagrant
|
||||||
@env[:ui].info I18n.t("vagrant.actions.vm.bridged_networking.enabling")
|
@env[:ui].info I18n.t("vagrant.actions.vm.bridged_networking.enabling")
|
||||||
|
|
||||||
# Prepare for new networks
|
# Prepare for new networks
|
||||||
|
@env[:vm].guest.prepare_bridged_networks(networks)
|
||||||
|
|
||||||
# Enable the networks
|
# Enable the networks
|
||||||
|
@env[:vm].guest.enable_bridged_networks(networks)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -79,8 +79,22 @@ module Vagrant
|
||||||
# @param [Hash] net_options The options for the network.
|
# @param [Hash] net_options The options for the network.
|
||||||
def enable_host_only_network(net_options); end
|
def enable_host_only_network(net_options); end
|
||||||
|
|
||||||
|
# Prepares the guest for bridged networks.
|
||||||
|
#
|
||||||
|
# @param [Array] networks Array of networks to prepare for.
|
||||||
|
def prepare_bridged_networks(networks)
|
||||||
|
raise BaseError, :_key => :unsupported_host_only
|
||||||
|
end
|
||||||
|
|
||||||
|
# Enable bridged networks on a guest.
|
||||||
|
#
|
||||||
|
# @param [Array] networks Array of networks to prepare for.
|
||||||
|
def enable_bridged_networks(networks)
|
||||||
|
raise BaseError, :_key => :unsupported_bridged
|
||||||
|
end
|
||||||
|
|
||||||
def change_host_name(name)
|
def change_host_name(name)
|
||||||
raise BaseError, :_key => :unsupported_host_name
|
raise BaseError, :_key => :unsupported_bridged
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,17 +2,16 @@ module Vagrant
|
||||||
module Guest
|
module Guest
|
||||||
class Debian < Linux
|
class Debian < Linux
|
||||||
def prepare_host_only_network(net_options=nil)
|
def prepare_host_only_network(net_options=nil)
|
||||||
# Remove any previous host only network additions to the
|
# Remove any previous host only network additions to the interface file.
|
||||||
# interface file.
|
|
||||||
vm.ssh.execute do |ssh|
|
vm.ssh.execute do |ssh|
|
||||||
# Clear out any previous entries
|
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN-HOSTONLY/,/^#VAGRANT-END-HOSTONLY/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
||||||
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
|
||||||
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'")
|
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def enable_host_only_network(net_options)
|
def enable_host_only_network(net_options)
|
||||||
entry = TemplateRenderer.render('network_entry_debian', :net_options => net_options)
|
entry = TemplateRenderer.render('guests/debian/network_hostonly',
|
||||||
|
:net_options => net_options)
|
||||||
vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
|
vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
|
||||||
|
|
||||||
vm.ssh.execute do |ssh|
|
vm.ssh.execute do |ssh|
|
||||||
|
@ -22,6 +21,33 @@ module Vagrant
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def prepare_bridged_networks(networks)
|
||||||
|
# Remove any previous bridged network additions to the interface file.
|
||||||
|
vm.ssh.execute do |ssh|
|
||||||
|
ssh.exec!("sudo sed -e '/^#VAGRANT-BEGIN-BRIDGED/,/^#VAGRANT-END-BRIDGED/ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces")
|
||||||
|
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-interfaces > /etc/network/interfaces'")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def enable_bridged_networks(networks)
|
||||||
|
entry = TemplateRenderer.render('guests/debian/network_bridged',
|
||||||
|
:networks => networks)
|
||||||
|
|
||||||
|
vm.ssh.upload!(StringIO.new(entry), "/tmp/vagrant-network-entry")
|
||||||
|
|
||||||
|
vm.ssh.execute do |ssh|
|
||||||
|
networks.each do |network|
|
||||||
|
ssh.exec!("sudo /sbin/ifdown eth#{network[:adapter]} 2> /dev/null")
|
||||||
|
end
|
||||||
|
|
||||||
|
ssh.exec!("sudo su -c 'cat /tmp/vagrant-network-entry >> /etc/network/interfaces'")
|
||||||
|
|
||||||
|
networks.each do |network|
|
||||||
|
ssh.exec!("sudo /sbin/ifup eth#{network[:adapter]}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def change_host_name(name)
|
def change_host_name(name)
|
||||||
vm.ssh.execute do |ssh|
|
vm.ssh.execute do |ssh|
|
||||||
if !ssh.test?("sudo hostname | grep '#{name}'")
|
if !ssh.test?("sudo hostname | grep '#{name}'")
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
<% networks.each do |network| -%>
|
||||||
|
#VAGRANT-BEGIN-BRIDGED
|
||||||
|
# The contents below are automatically generated by Vagrant. Do not modify.
|
||||||
|
auto eth<%= network[:adapter] %>
|
||||||
|
iface eth<%= network[:adapter] %> inet dhcp
|
||||||
|
#VAGRANT-END-BRIDGED
|
||||||
|
<% end -%>
|
|
@ -1,8 +1,8 @@
|
||||||
#VAGRANT-BEGIN
|
#VAGRANT-BEGIN-HOSTONLY
|
||||||
# The contents below are automatically generated by Vagrant.
|
# The contents below are automatically generated by Vagrant.
|
||||||
# Please do not modify any of these contents.
|
# Please do not modify any of these contents.
|
||||||
auto eth<%= net_options[:adapter] %>
|
auto eth<%= net_options[:adapter] %>
|
||||||
iface eth<%= net_options[:adapter] %> inet static
|
iface eth<%= net_options[:adapter] %> inet static
|
||||||
address <%= net_options[:ip] %>
|
address <%= net_options[:ip] %>
|
||||||
netmask <%= net_options[:netmask] %>
|
netmask <%= net_options[:netmask] %>
|
||||||
#VAGRANT-END
|
#VAGRANT-END-HOSTONLY
|
|
@ -564,6 +564,14 @@ en:
|
||||||
|
|
||||||
guest:
|
guest:
|
||||||
base:
|
base:
|
||||||
|
unsupported_bridged: |-
|
||||||
|
Bridged networking is very distro-specific. Vagrant has support for many
|
||||||
|
distros built-in: Debian, Ubuntu, Gentoo, and RedHat. The distro of your VM
|
||||||
|
couldn't be detected, or isn't supported for host only networking.
|
||||||
|
|
||||||
|
Most of the time this is simply due to the fact that no one has contributed
|
||||||
|
back the SSH commands necessary to set this up. Please report a bug and this
|
||||||
|
will be fixed for your distro.
|
||||||
unsupported_host_only: |-
|
unsupported_host_only: |-
|
||||||
Host only networking is very distro-specific. Vagrant has support for many
|
Host only networking is very distro-specific. Vagrant has support for many
|
||||||
distros built-in: Debian, Ubuntu, Gentoo, and RedHat. The distro of your VM
|
distros built-in: Debian, Ubuntu, Gentoo, and RedHat. The distro of your VM
|
||||||
|
|
Loading…
Reference in New Issue