Add debian common role
This commit is contained in:
18
common-debian/templates/usr/local/sbin/dpkg-cleanup.sh.j2
Executable file
18
common-debian/templates/usr/local/sbin/dpkg-cleanup.sh.j2
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
|
||||
# dpkg-cleanup.sh - Remove obsolete packages and config files
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# Phase 1 - purge `rc` packages
|
||||
PACKAGE_LIST=( $( dpkg --list | awk '/^rc/{ print $2 } /^ri/{ print $2 }' ) )
|
||||
apt purge -y ${PACKAGE_LIST[@]}
|
||||
|
||||
# Phase 2 - autoremove packages
|
||||
apt autoremove --purge -y
|
||||
|
||||
# Phase 3 - clean archives
|
||||
apt clean
|
||||
|
||||
# Phase 4 - find and remove obsolete config files
|
||||
OLD_FILES_LIST=( $( find /etc -type f -a \( -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.update-*' \) 2>/dev/null ) )
|
||||
rm -f ${OLD_FILES_LIST[@]}
|
55
common-debian/templates/usr/local/sbin/kernel-cleanup.sh.j2
Executable file
55
common-debian/templates/usr/local/sbin/kernel-cleanup.sh.j2
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
# kernel-cleanup.sh - Remove obsolete packages and config files
|
||||
# {{ ansible_managed }}
|
||||
|
||||
# Determine the active running kernel
|
||||
RUNNING_KERNEL="$( uname -v | awk '{ print $4 }' )"
|
||||
|
||||
# Determine the list of installed kernels (latest is always last)
|
||||
INSTALLED_KERNELS=( $( dpkg -l | grep 'linux-image-[0-9]' | awk '{ print $3 }' | sort -n ) )
|
||||
echo ${INSTALLED_KERNELS}
|
||||
NUM_INSTALLED=${{ '{#' }}INSTALLED_KERNELS[@]}
|
||||
|
||||
if [[ ${NUM_INSTALLED} -le 1 ]]; then
|
||||
echo "A single kernel is installed, aborting cleanly."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
LATEST_KERNEL="${INSTALLED_KERNELS[-1]}"
|
||||
if [[ ${LATEST_KERNEL} == ${RUNNING_KERNEL} ]]; then
|
||||
force=""
|
||||
else
|
||||
force="--allow-remove-essential"
|
||||
fi
|
||||
|
||||
# Remove the latest kernel from the array
|
||||
NUM_REMOVABLE=$(( ${NUM_INSTALLED} - 1 ))
|
||||
REMOVABLE_KERNELS=( ${INSTALLED_KERNELS[@]:0:${NUM_REMOVABLE}} )
|
||||
|
||||
PURGE_PACKAGES=()
|
||||
for KERNEL in ${REMOVABLE_KERNELS[@]}; do
|
||||
PURGE_PACKAGES+=( $( dpkg -l | grep ${KERNEL} | grep -v 'linux-image-amd64\|linux-headers-amd64' | awk '{ print $2 }' ) )
|
||||
done
|
||||
|
||||
# Override the "linux-check-removal" script
|
||||
mv /usr/bin/linux-check-removal /usr/bin/linux-check-removal.orig
|
||||
echo -e '#!/bin/sh\necho "Overriding default linux-check-removal script!"\nexit 0' > /usr/bin/linux-check-removal
|
||||
chmod +x /usr/bin/linux-check-removal
|
||||
|
||||
# Remove the packages
|
||||
echo "Removing: ${PURGE_PACKAGES[@]}"
|
||||
apt-get purge --yes ${force} ${PURGE_PACKAGES[@]}
|
||||
|
||||
# Restore the "linux-check-removal" script
|
||||
mv /usr/bin/linux-check-removal.orig /usr/bin/linux-check-removal
|
||||
|
||||
# Make sure there is still a valid kernel installed (just in case something broke)
|
||||
if [[ $( dpkg -l | grep 'linux-image-[0-9]' | wc -l ) -lt 1 ]]; then
|
||||
echo "WARNING: NO KERNEL IS INSTALLED. THROWING ERROR AND ABORTING."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
update-grub
|
||||
|
||||
exit 0
|
75
common-debian/templates/usr/local/sbin/update-motd.sh.j2
Executable file
75
common-debian/templates/usr/local/sbin/update-motd.sh.j2
Executable file
@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Update dynamic MOTD file
|
||||
# {{ ansible_managed }}
|
||||
|
||||
set -o errexit
|
||||
|
||||
TMPFILE=$(mktemp)
|
||||
TGTFILE=/run/blse-motd.dynamic
|
||||
{% if ansible_distribution_release == "jessie" %}
|
||||
BLSEVER="BLSE 2.x (Debian Jessie)"
|
||||
{% elif ansible_distribution_release == "stretch" %}
|
||||
BLSEVER="BLSE 2.1 (Debian Stretch)"
|
||||
{% elif ansible_distribution_release == "buster" %}
|
||||
BLSEVER="BLSE 2.2 (Debian Buster)"
|
||||
{% elif ansible_distribution_release == "bullseye" %}
|
||||
BLSEVER="BLSE 2.3 (Debian Bullseye)"
|
||||
{% elif ansible_distribution_release == "bookworm" %}
|
||||
BLSEVER="BLSE 2.4 (Debian Bookworm)"
|
||||
{% endif %}
|
||||
|
||||
echo >> $TMPFILE
|
||||
echo "\033[01;34mBoniface Labs Server Environment \033[01;36m${BLSEVER}\033[0m" >> $TMPFILE
|
||||
echo -n "> \033[01;32m$(hostname)\033[0m" >> $TMPFILE
|
||||
if test -f /etc/hostdesc; then
|
||||
echo " - $( cat /etc/hostdesc )" >> $TMPFILE
|
||||
else
|
||||
echo >> $TMPFILE
|
||||
fi
|
||||
echo -n "> " >> $TMPFILE
|
||||
|
||||
# Get virtual machine info from vhostmd if it exists
|
||||
VENDOR="$(/usr/sbin/dmidecode | grep Vendor | tr -d ' \t\n\r')"
|
||||
if [ "$VENDOR" = "Vendor:Bochs" ] || [ "$VENDOR" = "Vendor:SeaBIOS" ]; then
|
||||
hvhostname=$(/usr/sbin/vm-dump-metrics | grep -A1 HostName | awk -F'>' '{ if ($1 == " <value") print $2 }')
|
||||
hvvirtproductinfo=$(/usr/sbin/vm-dump-metrics | grep -A1 VirtProductInfo | awk -F'>' '{ if ($1 == " <value") print $2 }')
|
||||
if [ "$hvhostname" ]; then
|
||||
echo "\033[1;37mKVM virtual machine\033[0m on node \033[1;31m${hvhostname}\033[0m (${hvvirtproductinfo})" >> $TMPFILE
|
||||
else
|
||||
echo "\033[1;37mRemote KVM virtual machine\033[0m" >> $TMPFILE
|
||||
fi
|
||||
elif [ "$VENDOR" = 'Vendor:DigitalOcean' ]; then
|
||||
echo "\033[1;37mRemote KVM virtual machine\033[0m on \033[1;31mDigitalOcean\033[0m" >> $TMPFILE
|
||||
else
|
||||
# Are we a KVM hypervsor
|
||||
if [ "$(hostname | grep dcrhv)" ]; then
|
||||
echo "\033[1;37mRouter Hypervisor\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
|
||||
# Are we a Ceph node?
|
||||
elif [ "$(hostname | grep ceph)" ]; then
|
||||
echo "\033[1;37mCeph Storage Node\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
|
||||
# Are we a GPU node?
|
||||
elif [ "$(hostname | grep gpu)" ]; then
|
||||
echo "\033[1;37mGPU Processing Host\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
|
||||
# Are we Base?
|
||||
elif [ "$(hostname | grep base)" ]; then
|
||||
echo "\033[1;37mHome Base\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
|
||||
# Are we Env?
|
||||
elif [ "$(hostname | grep env)" ]; then
|
||||
echo "\033[1;37mEnvironmental Monitor\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
|
||||
# Are we Kal?
|
||||
elif [ "$(hostname | grep kal)" ]; then
|
||||
echo "\033[1;37mVoice Control Node\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
|
||||
# Are we IR?
|
||||
elif [ "$(hostname | grep ir)" ]; then
|
||||
echo "\033[1;37mInfared Control Node\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
|
||||
# Otherwise, we're generic
|
||||
else
|
||||
echo "\033[1;37mGeneric server\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "> $(/bin/uname -srvmo)" >> $TMPFILE
|
||||
|
||||
mv $TMPFILE $TGTFILE || rm $TMPFILE
|
||||
chmod 644 $TGTFILE
|
Reference in New Issue
Block a user