simple example of firstboot script to generate network config --- firstboot.debian | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100755 firstboot.debian
diff --git a/firstboot.debian b/firstboot.debian new file mode 100755 index 0000000..8ab4e46 --- /dev/null +++ b/firstboot.debian @@ -0,0 +1,119 @@ +#!/bin/bash + +cdr2mask () +{ + # Number of args to shift, 255..255, first non-255 byte, zeroes + set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0 + [ $1 -gt 1 ] && shift $1 || shift + echo ${1-0}.${2-0}.${3-0}.${4-0} +} + + +MODULE="qemu_fw_cfg" + +if lsmod | grep "$MODULE" &> /dev/null ; then + echo "$MODULE is loaded!" +else + echo "$MODULE is not loaded!" + insmod /lib/modules/`uname -r`/kernel/drivers/firmware/qemu_fw_cfg.ko +fi + + +while IFS=": " read -r key value; do + case "$key" in + '#'*) ;; + *) + eval "$key=\"$value\"" + esac +done < /sys/firmware/qemu_fw_cfg/by_name/opt/Proxmox/raw + + + + +if [ ! -z $ipconfig0 ];then + + echo "# This file describes the network interfaces available on your system" > /etc/network/interfaces + echo "# and how to activate them. For more information, see interfaces(5)." >> /etc/network/interfaces + echo " " >> /etc/network/interfaces + echo "# The loopback network interface" >> /etc/network/interfaces + echo "auto lo" >> /etc/network/interfaces + echo "iface lo inet loopback" >> /etc/network/interfaces + echo "" + echo "# The primary network interface" >> /etc/network/interfaces + echo "auto eth0" >> /etc/network/interfaces + + + while IFS="," read -a values; do + + for key in "${!values[@]}" + do + while IFS="=" read -r k v; do + case "$k" in + "ip" ) + IFS='/' + declare -a ip_address=(${v}) + netmask=$( cdr2mask ${ip_address[1]} ) + echo "iface eth0 inet static" >> /etc/network/interfaces + echo " address $ip_address" >> /etc/network/interfaces + echo " netmask $netmask" >> /etc/network/interfaces + ;; + "gw" ) + echo " gateway $v" >> /etc/network/interfaces + ;; + esac + + done <<< ${values[${key}]} + + done + done <<< $ipconfig0 +fi + +if [ ! -z $searchdomain ];then + echo $searchdomain + echo "search $searchdomain" > /etc/resolv.conf + +fi + +if [ ! -z $nameserver ];then + echo $nameserver + echo "nameserver $nameserver" >> /etc/resolv.conf +fi + +if [ ! -z $sshkey ];then + echo $sshkey > /root/.ssh/authorized_keys +fi + +if [ ! -z $name ];then + echo $name > /etc/hostname + hostnamectl set-hostname $name + hostname $name + if [ ! -z $searchdomain ];then + echo "$name.$searchdomain" >/etc/mailname + fi +fi + + +/etc/init.d/networking restart +sleep 10 + + +#generate ssh keys +echo "" +echo "Generating unique host keys for your SSH server..." +find /etc/ssh -name "ssh_host_*_key*" -exec rm {} \; +DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical dpkg-reconfigure openssh-server +echo "" +echo "Key generation complete" + + +#update + +apt-get update +apt-get dist-upgrade + +#disable firstboot script +systemctl disable firstboot + +echo "*** Configuration complete - reboot the system..." +reboot + -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel