From 151c5b73eed01f7c8d33a3059e1a6a94e99126a9 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 16 Feb 2018 08:40:48 +0100 Subject: [PATCH] close #1668: add Devuan support Add separate Plugin as the Debian Plugin will get more systemd specific stuff in the future, while this here is as anti-systemd as it gets, so make the split from the start. But only overwrite the plugin constructor for now, the rest is still backward compatible. --- src/PVE/LXC/Setup.pm | 4 +++ src/PVE/LXC/Setup/Devuan.pm | 31 +++++++++++++++++++ src/PVE/LXC/Setup/Makefile | 2 +- src/test/test-devuan-001/config | 4 +++ src/test/test-devuan-001/etc/devuan_version | 1 + src/test/test-devuan-001/etc/hostname.exp | 1 + src/test/test-devuan-001/etc/hosts.exp | 5 +++ .../etc/network/interfaces.exp | 18 +++++++++++ src/test/test-devuan-001/etc/os-release | 8 +++++ .../root/.ssh/authorized_keys.exp | 3 ++ src/test/test-devuan-002/config | 9 ++++++ src/test/test-devuan-002/etc/devuan_version | 1 + src/test/test-devuan-002/etc/hostname.exp | 1 + src/test/test-devuan-002/etc/hosts | 2 ++ src/test/test-devuan-002/etc/hosts.exp | 6 ++++ .../test-devuan-002/etc/network/interfaces | 2 ++ .../etc/network/interfaces.exp | 9 ++++++ src/test/test-devuan-002/etc/resolv.conf | 8 +++++ src/test/test-devuan-002/etc/resolv.conf.exp | 10 ++++++ .../root/.ssh/authorized_keys.exp | 3 ++ 20 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 src/PVE/LXC/Setup/Devuan.pm create mode 100644 src/test/test-devuan-001/config create mode 100644 src/test/test-devuan-001/etc/devuan_version create mode 100644 src/test/test-devuan-001/etc/hostname.exp create mode 100644 src/test/test-devuan-001/etc/hosts.exp create mode 100644 src/test/test-devuan-001/etc/network/interfaces.exp create mode 100644 src/test/test-devuan-001/etc/os-release create mode 100644 src/test/test-devuan-001/root/.ssh/authorized_keys.exp create mode 100644 src/test/test-devuan-002/config create mode 100644 src/test/test-devuan-002/etc/devuan_version create mode 100644 src/test/test-devuan-002/etc/hostname.exp create mode 100644 src/test/test-devuan-002/etc/hosts create mode 100644 src/test/test-devuan-002/etc/hosts.exp create mode 100644 src/test/test-devuan-002/etc/network/interfaces create mode 100644 src/test/test-devuan-002/etc/network/interfaces.exp create mode 100644 src/test/test-devuan-002/etc/resolv.conf create mode 100644 src/test/test-devuan-002/etc/resolv.conf.exp create mode 100644 src/test/test-devuan-002/root/.ssh/authorized_keys.exp diff --git a/src/PVE/LXC/Setup.pm b/src/PVE/LXC/Setup.pm index 9b91539..ea0d415 100644 --- a/src/PVE/LXC/Setup.pm +++ b/src/PVE/LXC/Setup.pm @@ -13,9 +13,11 @@ use PVE::LXC::Setup::SUSE; use PVE::LXC::Setup::ArchLinux; use PVE::LXC::Setup::Alpine; use PVE::LXC::Setup::Gentoo; +use PVE::LXC::Setup::Devuan; my $plugins = { debian => 'PVE::LXC::Setup::Debian', + devuan => 'PVE::LXC::Setup::Devuan', ubuntu => 'PVE::LXC::Setup::Ubuntu', centos => 'PVE::LXC::Setup::CentOS', fedora => 'PVE::LXC::Setup::Fedora', @@ -51,6 +53,8 @@ my $autodetect_type = sub { if (-f "$rootdir/etc/debian_version") { return "debian"; + } elsif (-f "$rootdir/etc/devuan_version") { + return "devuan"; } elsif (-f "$rootdir/etc/SuSE-brand" || -f "$rootdir/etc/SuSE-release") { return "opensuse"; } elsif (-f "$rootdir/etc/fedora-release") { diff --git a/src/PVE/LXC/Setup/Devuan.pm b/src/PVE/LXC/Setup/Devuan.pm new file mode 100644 index 0000000..db8c8fe --- /dev/null +++ b/src/PVE/LXC/Setup/Devuan.pm @@ -0,0 +1,31 @@ +package PVE::LXC::Setup::Devuan; + +use strict; +use warnings; + +use PVE::Tools qw($IPV6RE); + +use PVE::LXC::Setup::Debian; +use base qw(PVE::LXC::Setup::Debian); + +sub new { + my ($class, $conf, $rootdir) = @_; + + my $version = PVE::Tools::file_read_firstline("$rootdir/etc/devuan_version"); + + die "unable to read version info\n" if !defined($version); + + die "unsupported Devuan version '$version'\n" + if $version !~ /jessie|ascii/; + + my $self = { conf => $conf, rootdir => $rootdir, version => $version }; + + $conf->{ostype} = "devuan"; + + return bless $self, $class; +} + +# the rest gets handled by the Debian plugin, which is compatible with older +# non-systemd Debian versions for now. + +1; diff --git a/src/PVE/LXC/Setup/Makefile b/src/PVE/LXC/Setup/Makefile index f971e0b..df0faff 100644 --- a/src/PVE/LXC/Setup/Makefile +++ b/src/PVE/LXC/Setup/Makefile @@ -1,4 +1,4 @@ -SOURCES=Base.pm Debian.pm Ubuntu.pm CentOS.pm Fedora.pm SUSE.pm ArchLinux.pm Alpine.pm Gentoo.pm +SOURCES=Base.pm Debian.pm Ubuntu.pm CentOS.pm Fedora.pm SUSE.pm ArchLinux.pm Alpine.pm Gentoo.pm Devuan.pm .PHONY: install install: diff --git a/src/test/test-devuan-001/config b/src/test/test-devuan-001/config new file mode 100644 index 0000000..5191092 --- /dev/null +++ b/src/test/test-devuan-001/config @@ -0,0 +1,4 @@ +hostname: test1 +net0: bridge=vmbr0,name=eth0,ip=1.2.3.4/24,gw=1.2.3.1 +net1: bridge=vmbr0,name=eth1,ip=10.2.3.4/24 +net2: bridge=vmbr0,name=eth2,ip=manual diff --git a/src/test/test-devuan-001/etc/devuan_version b/src/test/test-devuan-001/etc/devuan_version new file mode 100644 index 0000000..dc797ba --- /dev/null +++ b/src/test/test-devuan-001/etc/devuan_version @@ -0,0 +1 @@ +jessie diff --git a/src/test/test-devuan-001/etc/hostname.exp b/src/test/test-devuan-001/etc/hostname.exp new file mode 100644 index 0000000..a5bce3f --- /dev/null +++ b/src/test/test-devuan-001/etc/hostname.exp @@ -0,0 +1 @@ +test1 diff --git a/src/test/test-devuan-001/etc/hosts.exp b/src/test/test-devuan-001/etc/hosts.exp new file mode 100644 index 0000000..01ac197 --- /dev/null +++ b/src/test/test-devuan-001/etc/hosts.exp @@ -0,0 +1,5 @@ +# --- BEGIN PVE --- +127.0.0.1 localhost.localnet localhost +::1 localhost.localnet localhost +1.2.3.4 test1.proxmox.com test1 +# --- END PVE --- diff --git a/src/test/test-devuan-001/etc/network/interfaces.exp b/src/test/test-devuan-001/etc/network/interfaces.exp new file mode 100644 index 0000000..0c7dae1 --- /dev/null +++ b/src/test/test-devuan-001/etc/network/interfaces.exp @@ -0,0 +1,18 @@ +auto lo +iface lo inet loopback +iface lo inet6 loopback + +auto eth0 +iface eth0 inet static + address 1.2.3.4 + netmask 255.255.255.0 + gateway 1.2.3.1 + +auto eth1 +iface eth1 inet static + address 10.2.3.4 + netmask 255.255.255.0 + +auto eth2 +iface eth2 inet manual + diff --git a/src/test/test-devuan-001/etc/os-release b/src/test/test-devuan-001/etc/os-release new file mode 100644 index 0000000..7a10aca --- /dev/null +++ b/src/test/test-devuan-001/etc/os-release @@ -0,0 +1,8 @@ +PRETTY_NAME="Devuan GNU/Linux 1 (jessie)" +NAME="Devuan GNU/Linux" +VERSION_ID="1" +VERSION="1 (jessie)" +ID=devuan +HOME_URL="http://www.devuan.org/" +SUPPORT_URL="http://www.devuan.org/support/" +BUG_REPORT_URL="https://bugs.devuan.org/" \ No newline at end of file diff --git a/src/test/test-devuan-001/root/.ssh/authorized_keys.exp b/src/test/test-devuan-001/root/.ssh/authorized_keys.exp new file mode 100644 index 0000000..1cb3ec3 --- /dev/null +++ b/src/test/test-devuan-001/root/.ssh/authorized_keys.exp @@ -0,0 +1,3 @@ +# --- BEGIN PVE --- +ssh-rsa ABCDEFG ABC@DEF +# --- END PVE --- diff --git a/src/test/test-devuan-002/config b/src/test/test-devuan-002/config new file mode 100644 index 0000000..dd187fc --- /dev/null +++ b/src/test/test-devuan-002/config @@ -0,0 +1,9 @@ +arch: i386 +cpulimit: 1 +memory: 512 +swap: 512 +ostype: devuan +hostname: CT102 +nameserver: 8.8.8.8,8.8.8.9 +searchdomain: proxmox.com +net0: bridge=vmbr0,name=eth0,hwaddr=2A:31:01:D5:A4:BF,ip=192.168.3.102/20,gw=192.168.2.1 diff --git a/src/test/test-devuan-002/etc/devuan_version b/src/test/test-devuan-002/etc/devuan_version new file mode 100644 index 0000000..c9c3825 --- /dev/null +++ b/src/test/test-devuan-002/etc/devuan_version @@ -0,0 +1 @@ +ascii diff --git a/src/test/test-devuan-002/etc/hostname.exp b/src/test/test-devuan-002/etc/hostname.exp new file mode 100644 index 0000000..473d65d --- /dev/null +++ b/src/test/test-devuan-002/etc/hostname.exp @@ -0,0 +1 @@ +CT102 diff --git a/src/test/test-devuan-002/etc/hosts b/src/test/test-devuan-002/etc/hosts new file mode 100644 index 0000000..e7bce03 --- /dev/null +++ b/src/test/test-devuan-002/etc/hosts @@ -0,0 +1,2 @@ +127.0.0.1 localhost.localdomain localhost +127.0.1.1 CT102 diff --git a/src/test/test-devuan-002/etc/hosts.exp b/src/test/test-devuan-002/etc/hosts.exp new file mode 100644 index 0000000..7f540b4 --- /dev/null +++ b/src/test/test-devuan-002/etc/hosts.exp @@ -0,0 +1,6 @@ +127.0.0.1 localhost.localdomain localhost +127.0.1.1 CT102 +# --- BEGIN PVE --- +::1 localhost.localnet localhost +192.168.3.102 CT102.proxmox.com CT102 +# --- END PVE --- diff --git a/src/test/test-devuan-002/etc/network/interfaces b/src/test/test-devuan-002/etc/network/interfaces new file mode 100644 index 0000000..f1bd92e --- /dev/null +++ b/src/test/test-devuan-002/etc/network/interfaces @@ -0,0 +1,2 @@ +auto lo +iface lo inet loopback diff --git a/src/test/test-devuan-002/etc/network/interfaces.exp b/src/test/test-devuan-002/etc/network/interfaces.exp new file mode 100644 index 0000000..b5ce7f8 --- /dev/null +++ b/src/test/test-devuan-002/etc/network/interfaces.exp @@ -0,0 +1,9 @@ +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.3.102 + netmask 255.255.240.0 + gateway 192.168.2.1 + diff --git a/src/test/test-devuan-002/etc/resolv.conf b/src/test/test-devuan-002/etc/resolv.conf new file mode 100644 index 0000000..c5c5a1c --- /dev/null +++ b/src/test/test-devuan-002/etc/resolv.conf @@ -0,0 +1,8 @@ +# Existing data +# Will be kept because there's a PVE section to be replaced + +# --- BEGIN PVE --- +# Stuff gets filled here +# --- END PVE --- + +# This will be kept, too diff --git a/src/test/test-devuan-002/etc/resolv.conf.exp b/src/test/test-devuan-002/etc/resolv.conf.exp new file mode 100644 index 0000000..b50943a --- /dev/null +++ b/src/test/test-devuan-002/etc/resolv.conf.exp @@ -0,0 +1,10 @@ +# Existing data +# Will be kept because there's a PVE section to be replaced + +# --- BEGIN PVE --- +search proxmox.com +nameserver 8.8.8.8 +nameserver 8.8.8.9 +# --- END PVE --- + +# This will be kept, too diff --git a/src/test/test-devuan-002/root/.ssh/authorized_keys.exp b/src/test/test-devuan-002/root/.ssh/authorized_keys.exp new file mode 100644 index 0000000..1cb3ec3 --- /dev/null +++ b/src/test/test-devuan-002/root/.ssh/authorized_keys.exp @@ -0,0 +1,3 @@ +# --- BEGIN PVE --- +ssh-rsa ABCDEFG ABC@DEF +# --- END PVE --- -- 2.39.2