From b4cda981224455188d4ba9d76a4005f3e5555d48 Mon Sep 17 00:00:00 2001 From: Neil Williams Date: Sun, 28 Jun 2015 12:04:22 +0100 Subject: [PATCH] Enable networking in source directory To allow customisation in /etc/network/interfaces.d/, ensure that /etc/network/interfaces looks into the source directory and put the initial config in a setup file in the source directory. --- vmdebootstrap | 24 ++++++++++++++---------- vmdebootstrap.8.in | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/vmdebootstrap b/vmdebootstrap index bc5b887..4895147 100755 --- a/vmdebootstrap +++ b/vmdebootstrap @@ -624,16 +624,20 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth def setup_networking(self, rootdir): self.message('Setting up networking') - f = open(os.path.join(rootdir, 'etc', 'network', 'interfaces'), 'w') - f.write('auto lo\n') - f.write('iface lo inet loopback\n') - - if self.settings['enable-dhcp']: - f.write('\n') - f.write('auto eth0\n') - f.write('iface eth0 inet dhcp\n') - - f.close() + if not os.path.exists(os.path.join(rootdir, 'etc', 'network', 'interfaces')): + with open(os.path.join( + rootdir, 'etc', 'network', 'interfaces'), 'w') as netfile: + netfile.write('source-directory /etc/network/interfaces.d\n') + + with open(os.path.join( + rootdir, 'etc', 'network', 'interfaces.d', 'setup'), 'w') as eth: + eth.write('auto lo\n') + eth.write('iface lo inet loopback\n') + + if self.settings['enable-dhcp']: + eth.write('\n') + eth.write('auto eth0\n') + eth.write('iface eth0 inet dhcp\n') def append_serial_console(self, rootdir): if self.settings['serial-console']: diff --git a/vmdebootstrap.8.in b/vmdebootstrap.8.in index 34dfe02..e1cd3ff 100644 --- a/vmdebootstrap.8.in +++ b/vmdebootstrap.8.in @@ -65,6 +65,24 @@ and log into it via its console to configure it. The image has an empty root password and will not have networking configured by default. Set the root password before you configure networking. +.SH NETWORKING +The \-\-enable\-networking option uses the /etc/network/interfaces.d/ +source directory, with the default settings for +.B lo +and +.B eth0 +being added to /etc/network/interfaces.d/setup. Other networking +configuration can be specified using a customisation script. +Localhost settings would be: + auto lo + iface lo inet loopback + +If \-\-enable\-dhcp is specified, these settings are also included +into /etc/network/interfaces.d/setup: + + auto eth0 + iface eth0 inet dhcp + .SH BOOTLOADERS Unless the \-\-no\-extlinux or \-\-grub options are specified, the image will use -- 2.39.5