#!/bin/bash # I, Ian Kelling, follow the GNU license recommendations at # https://www.gnu.org/licenses/license-recommendations.en.html. They # recommend that small programs, < 300 lines, be licensed under the # Apache License 2.0. This file contains or is part of one or more small # programs. If a small program grows beyond 300 lines, I plan to switch # its license to GPL. # Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4 set -eE -o pipefail trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR host=$1 case $host in je) ip6=2001:ba8:1f1:f09d ip4=85.119.82.128 ;; bk) ip6=2001:ba8:1f1:f0c9 ip4=85.119.83.50 ;; esac debconf-set-selections <<'EOF' locales locales/default_environment_locale select en_US.UTF-8 locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 EOF # /a/bin/fai/fai/config/hooks/updatebase.UBUNTU # shellcheck disable=SC2016 debconf --owner=locales sh -c ' . /usr/share/debconf/confmodule db_version 2.0 db_get locales/locales_to_be_generated && mkdir -p /var/lib/locales/supported.d && echo "$RET" > /var/lib/locales/supported.d/local' dpkg-reconfigure -fnoninteractive locales apt -y remove --purge --auto-remove netplan.io libnetplan0 apt update apt -y install linux-virtual-hwe-20.04 grub-pc-bin openssh-server ifupdown rsync mkdir -p /root/.ssh chmod 700 /root/.ssh cat >/root/.ssh/authorized_keys <<'EOF' ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDX42yru/h6r6UDRy/VwVZjcYEmNLG5/SUjv7xwu43OaW0wL+uHYg2rkfn4Ygh5o1I5pgBh2SWg8TeWuVGhgL1SCuBzzeai/+58Sny065Qak+D2WjVOuRonRelh+CBA5EpNZPuiWQkoWdf9NACTBCbS2Zu7r8OOgRqu/ruaDNePlG5+U0Wlpy3oBnpbzQiuSA3AKMW30fsCJtOBjz5qQaiPbYEKJy3AOvtbq10wliKx9TpsTzrq8dKWs7PLhZnzqVCsaq6D95IzjqXcSpx4Cga5bn+YEuAnJQ53PGA5eO+hpz6HDmawTbJlaV/Dufb9bJ/ZZy1DXzs07yWRtTEY54/X ian@iankelling.org EOF # https://tools.bitfolk.com/wiki/IPv6 cat >/etc/network/interfaces < /proc/sys/net/ipv6/conf/default/accept_ra post-up echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra post-up echo 0 > /proc/sys/net/ipv6/conf/\$IFACE/accept_ra post-up echo 0 > /proc/sys/net/ipv6/conf/default/autoconf post-up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf post-up echo 0 > /proc/sys/net/ipv6/conf/\$IFACE/autoconf EOF cat >/etc/fstab <<'EOF' /dev/xvda1 / ext4 noatime,nodiratime 0 1 /dev/xvdb1 none swap nofail,x-systemd.device-timeout=30s,x-systemd.mount-timeout=30s,sw 0 0 EOF cat >> /etc/default/grub <<'EOF' GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="console=hvc0" EOF update-grub cat >/etc/systemd/resolved.conf.d/servers.conf <<'EOF' [Resolve] DNS=85.119.80.232 85.119.80.233 Domains=~. EOF cat >/etc/hostname </etc/timezone if [[ -L /etc/localtime ]]; then ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime else cp -f /usr/share/zoneinfo/${TIMEZONE} /etc/localtime fi echo $0 SUCCESS