From 1affae5bfa875bb7f91dae9c9984ef0916090301 Mon Sep 17 00:00:00 2001 From: Niko Kivel Date: Fri, 19 Mar 2021 10:24:09 +0100 Subject: [PATCH] initial debian overlay --- overlays/system/debian/etc/hostname.ww | 1 + overlays/system/debian/etc/network/interfaces | 9 +++ .../debian/etc/network/interfaces.d/eno1.ww | 7 +++ .../debian/etc/network/interfaces.d/eno2.ww | 4 ++ .../debian/etc/ssh/ssh_host_dsa_key.pub.ww | 1 + .../system/debian/etc/ssh/ssh_host_dsa_key.ww | 1 + .../debian/etc/ssh/ssh_host_ecdsa_key.pub.ww | 1 + .../debian/etc/ssh/ssh_host_ecdsa_key.ww | 1 + .../etc/ssh/ssh_host_ed25519_key.pub.ww | 1 + .../debian/etc/ssh/ssh_host_ed25519_key.ww | 1 + .../debian/etc/ssh/ssh_host_rsa_key.pub.ww | 1 + .../system/debian/etc/ssh/ssh_host_rsa_key.ww | 1 + overlays/system/debian/etc/ssh/sshd_config.ww | 14 +++++ .../debian/etc/warewulf/warewulf.conf.ww | 1 + overlays/system/debian/init | 57 +++++++++++++++++++ overlays/system/debian/warewulf/config.ww | 9 +++ .../system/debian/warewulf/init.d/20-loopback | 6 ++ .../debian/warewulf/init.d/75-vnfs_fixes | 24 ++++++++ .../system/debian/warewulf/init.d/80-wwclient | 6 ++ .../system/debian/warewulf/init.d/90-selinux | 35 ++++++++++++ .../system/debian/warewulf/init.d/99-test | 15 +++++ overlays/system/debian/warewulf/wwinit | 17 ++++++ 22 files changed, 213 insertions(+) create mode 100644 overlays/system/debian/etc/hostname.ww create mode 100644 overlays/system/debian/etc/network/interfaces create mode 100755 overlays/system/debian/etc/network/interfaces.d/eno1.ww create mode 100755 overlays/system/debian/etc/network/interfaces.d/eno2.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_dsa_key.pub.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_dsa_key.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.pub.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_ed25519_key.pub.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_ed25519_key.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_rsa_key.pub.ww create mode 100644 overlays/system/debian/etc/ssh/ssh_host_rsa_key.ww create mode 100644 overlays/system/debian/etc/ssh/sshd_config.ww create mode 100644 overlays/system/debian/etc/warewulf/warewulf.conf.ww create mode 100755 overlays/system/debian/init create mode 100644 overlays/system/debian/warewulf/config.ww create mode 100644 overlays/system/debian/warewulf/init.d/20-loopback create mode 100644 overlays/system/debian/warewulf/init.d/75-vnfs_fixes create mode 100644 overlays/system/debian/warewulf/init.d/80-wwclient create mode 100644 overlays/system/debian/warewulf/init.d/90-selinux create mode 100644 overlays/system/debian/warewulf/init.d/99-test create mode 100644 overlays/system/debian/warewulf/wwinit diff --git a/overlays/system/debian/etc/hostname.ww b/overlays/system/debian/etc/hostname.ww new file mode 100644 index 00000000..b195826a --- /dev/null +++ b/overlays/system/debian/etc/hostname.ww @@ -0,0 +1 @@ +{{$.Id}} diff --git a/overlays/system/debian/etc/network/interfaces b/overlays/system/debian/etc/network/interfaces new file mode 100644 index 00000000..54b3a2db --- /dev/null +++ b/overlays/system/debian/etc/network/interfaces @@ -0,0 +1,9 @@ +# This file describes the network interfaces available on your system +# and how to activate them. For more information, see interfaces(5). + +source /etc/network/interfaces.d/* + +# The loopback network interface +auto lo +iface lo inet loopback + diff --git a/overlays/system/debian/etc/network/interfaces.d/eno1.ww b/overlays/system/debian/etc/network/interfaces.d/eno1.ww new file mode 100755 index 00000000..79e03697 --- /dev/null +++ b/overlays/system/debian/etc/network/interfaces.d/eno1.ww @@ -0,0 +1,7 @@ +auto eno1 +allow-hotplug eno1 +iface eno1 inet static + address {{.NetDevs.eno1.Ipaddr}} + netmask {{.NetDevs.eno1.Netmask}} + gateway {{.NetDevs.eno1.Gateway}} + diff --git a/overlays/system/debian/etc/network/interfaces.d/eno2.ww b/overlays/system/debian/etc/network/interfaces.d/eno2.ww new file mode 100755 index 00000000..566e1458 --- /dev/null +++ b/overlays/system/debian/etc/network/interfaces.d/eno2.ww @@ -0,0 +1,4 @@ +# The facility network interface +allow-hotplug eno2 +iface eno2 inet dhcp + diff --git a/overlays/system/debian/etc/ssh/ssh_host_dsa_key.pub.ww b/overlays/system/debian/etc/ssh/ssh_host_dsa_key.pub.ww new file mode 100644 index 00000000..4bb82192 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_dsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_dsa_key.pub"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_dsa_key.ww b/overlays/system/debian/etc/ssh/ssh_host_dsa_key.ww new file mode 100644 index 00000000..581f48f4 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_dsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_dsa_key"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.pub.ww b/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.pub.ww new file mode 100644 index 00000000..b6d9aa89 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ecdsa_key.pub"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.ww b/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.ww new file mode 100644 index 00000000..fbf8934c --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_ecdsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ecdsa_key"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.pub.ww b/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.pub.ww new file mode 100644 index 00000000..76dbcfdb --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ed25519_key.pub"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.ww b/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.ww new file mode 100644 index 00000000..e6dec541 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_ed25519_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_ed25519_key"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_rsa_key.pub.ww b/overlays/system/debian/etc/ssh/ssh_host_rsa_key.pub.ww new file mode 100644 index 00000000..d5b09fa8 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_rsa_key.pub.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_rsa_key.pub"}} diff --git a/overlays/system/debian/etc/ssh/ssh_host_rsa_key.ww b/overlays/system/debian/etc/ssh/ssh_host_rsa_key.ww new file mode 100644 index 00000000..feffaad5 --- /dev/null +++ b/overlays/system/debian/etc/ssh/ssh_host_rsa_key.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/keys/ssh_host_rsa_key"}} diff --git a/overlays/system/debian/etc/ssh/sshd_config.ww b/overlays/system/debian/etc/ssh/sshd_config.ww new file mode 100644 index 00000000..cc466670 --- /dev/null +++ b/overlays/system/debian/etc/ssh/sshd_config.ww @@ -0,0 +1,14 @@ +{{Include "/etc/warewulf/ssh/sshd_config"}} + +# This is a Warewulf Template file. +# +# This file (suffix '.ww') will be automatically rewritten without the suffix +# when the overlay is rendered for the individual nodes. Here are some examples +# of macros and logic which can be used within this file: +# +# Node FQDN = {{.Id}} +# Node Group = {{.GroupName}} +# Network Config = {{.NetDevs.eth0.Ipaddr}}, {{.NetDevs.eth0.Hwaddr}}, etc. +# +# Goto the documentation pages for more information: http://www.hpcng.org/... + diff --git a/overlays/system/debian/etc/warewulf/warewulf.conf.ww b/overlays/system/debian/etc/warewulf/warewulf.conf.ww new file mode 100644 index 00000000..df0e916e --- /dev/null +++ b/overlays/system/debian/etc/warewulf/warewulf.conf.ww @@ -0,0 +1 @@ +{{Include "/etc/warewulf/warewulf.conf"}} diff --git a/overlays/system/debian/init b/overlays/system/debian/init new file mode 100755 index 00000000..95c67574 --- /dev/null +++ b/overlays/system/debian/init @@ -0,0 +1,57 @@ +#!/bin/sh +# +# This is one of those types of files that you shouldn't edit unless you really +# know what you are doing and even then you should make a backup. +# +# Edit at your own risk! DANGER DANGER. + + +if test -f "/warewulf/config"; then + . /warewulf/config +else + echo "ERROR: Warewulf configuration file not found... rebooting in 1 minute" + sleep 60 + /sbin/reboot +fi + +echo "Warewulf v4 is now booting: ${WWHOSTNAME}" +echo "debian specific overlay" + +echo "Mounting up kernel file systems" +mkdir /proc /dev /sys /run 2>/dev/null +mount -t proc proc /proc +mount -t devtmpfs devtmpfs /dev +mount -t sysfs sysfs /sys +mount -t tmpfs tmpfs /run + +chmod 755 /warewulf/wwinit + +echo "Checking Rootfs type" +ROOTFSTYPE=`stat -f -c "%T" /` + +if test "${WWROOT}" = "initramfs"; then + echo "Provisioned to default initramfs file system: ${ROOTFSTYPE}" + echo "Calling WW Init" + exec /warewulf/wwinit +elif test "${WWROOT}" = "tmpfs"; then + if test "${ROOTFSTYPE}" == "tmpfs"; then + echo "ERROR: Switching the root file system requires the kernel argument: 'rootfstype=ramfs'" + else + echo "Setting up tmpfs root file system" + mkdir /newroot + mount wwroot /newroot -t tmpfs + echo "Moving RAMFS to TMPFS" + tar -cf - --exclude ./proc --exclude ./sys --exclude ./dev --exclude ./newroot . | tar -xf - -C /newroot + mkdir /newroot/proc /newroot/dev /newroot/sys /newroot/run 2>/dev/null + echo "Calling switch_root and invoking WW Init" + exec /sbin/switch_root /newroot /warewulf/wwinit + fi +else + echo "ERROR: Unknown Warewulf Root file system: ${WWROOT}" +fi + +echo +echo "There was a problem with the provisioning process, rebooting in 1 minute..." +sleep 60 +/sbin/reboot + diff --git a/overlays/system/debian/warewulf/config.ww b/overlays/system/debian/warewulf/config.ww new file mode 100644 index 00000000..5a33472a --- /dev/null +++ b/overlays/system/debian/warewulf/config.ww @@ -0,0 +1,9 @@ +WWCONTAINER={{$.Container}} +WWHOSTNAME={{$.Id}} +WWROOT={{$.Root}} +WWINIT={{$.Init}} +WWIPMI_IPADDR="{{$.IpmiIpaddr}}" +WWIPMI_NETMASK="{{$.IpmiNetmask}}" +WWIPMI_GATEWAY="{{$.IpmiGateway}}" +WWIPMI_USER="{{$.IpmiUserName}}" +WWIPMI_PASSWORD="{{$.IpmiPassword}}" diff --git a/overlays/system/debian/warewulf/init.d/20-loopback b/overlays/system/debian/warewulf/init.d/20-loopback new file mode 100644 index 00000000..01791174 --- /dev/null +++ b/overlays/system/debian/warewulf/init.d/20-loopback @@ -0,0 +1,6 @@ +#!/bin/sh + +. /warewulf/config + +echo "Bringing up lo:127.0.0.1" +/sbin/ip link set dev lo up diff --git a/overlays/system/debian/warewulf/init.d/75-vnfs_fixes b/overlays/system/debian/warewulf/init.d/75-vnfs_fixes new file mode 100644 index 00000000..5ce5b735 --- /dev/null +++ b/overlays/system/debian/warewulf/init.d/75-vnfs_fixes @@ -0,0 +1,24 @@ +#!/bin/sh + +. /warewulf/config + +# This will eventually be optional +if true; then + if [ -f "/etc/pam.d/system-auth" ]; then + echo "FIXING: system-auth" + sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/system-auth + fi + + if [ -f "/etc/pam.d/password-auth" ]; then + echo "FIXING: password-auth" + sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/password-auth + fi + + if [ -f "/etc/pam.d/common-account" ]; then + echo "FIXING: common-account" + sed -i -e '/^account.*pam_unix\.so\s*$/s/\s*$/\ broken_shadow/' /etc/pam.d/common-account + fi +fi + + +chmod 755 / diff --git a/overlays/system/debian/warewulf/init.d/80-wwclient b/overlays/system/debian/warewulf/init.d/80-wwclient new file mode 100644 index 00000000..184dac4e --- /dev/null +++ b/overlays/system/debian/warewulf/init.d/80-wwclient @@ -0,0 +1,6 @@ +#!/bin/sh + +. /warewulf/config + +echo "Starting wwclient" +nohup /warewulf/bin/wwclient >/var/log/wwclient.log 2>&1