various fixes for bullseye and new ssh key changes
[automated-distro-installer] / fai / config / hooks / instsoft.DEFAULT
index 1879648b73a71afd0d705ce2efe78c55c2be67cb..22c8104162eb6a9335f14bbc2eb712c06398eae0 100755 (executable)
@@ -1,23 +1,49 @@
 #!/bin/bash
 
-# exit for any vm which is not our test vm
-if ifclass VM && ! ifclass demohost; then
-    exit 0
+# These are things we can do before package_config packages get installed.
+
+# exit for any vm except demohost, or if we are doing a dirinstall
+if ifclass VM && ! ifclass demohost || ifclass VOL_BULLSEYE_BOOTSTRAP || [[ ! $FAI_ACTION || $FAI_ACTION = dirinstall ]]; then
+  exit 0
 fi
 
+keyfile=/var/lib/fai/config/distro-install-common/luks/host-$HOSTNAME
 f=$target/root/keyscript
 cat > $f <<EOFOUTER
 #!/bin/sh
 cat <<'EOF'
-$(cat /var/lib/fai/config/distro-install-common/luks/host-$HOSTNAME)
+$(cat $keyfile)
 EOF
 EOFOUTER
+chmod 700 $f
+
+
+# for hosts which don't have these data volumes, copy the specific
+# files we need.
+if ifclass demohost; then
+  files=(/var/lib/fai/config/distro-install-common/luks/host-demohost)
+elif ifclass tp; then
+  files=(/var/lib/fai/config/distro-install-common/luks/host-tp)
+fi
+if [[ ${files[0]}  ]]; then
+  d=$target/q/root/luks
+  mkdir -p $d
+  chmod 700 $d
+  cp -p ${files[@]} $d
+fi
 
-chmod +x $f
 
-if ifclass tp; then
-    d=$target/root/shadow
-    mkdir -p $d
-    ls -la /var/lib/fai/config/distro-install-common
-    cp /var/lib/fai/config/distro-install-common/traci{-simple} $d
+#### this bit is duplicated in rootsshsync, except we skip update-initramfs,
+# since I suspect its not needed. I'm not sure any of this is needed
+# since we initially embed the key, and with distro-begin, we run rootsshsync
+# around the same time as we remove it.
+d=/etc/initramfs-tools
+if [[ -e $d ]] && ! diff -q /root/.ssh/authorized_keys $d/root/.ssh/authorized_keys &>/dev/null; then
+  mkdir -p $d/root/.ssh /etc/dropbear-initramfs
+  chmod 700 $d/root $d/root/.ssh
+  cp -p /root/.ssh/authorized_keys $d/root/.ssh/authorized_keys
+  cp -p /root/.ssh/authorized_keys /etc/dropbear-initramfs
+  if [[ -e /root/.ssh/authorized_keys2 ]]; then
+    cat /root/.ssh/authorized_keys2 >>/etc/dropbear-initramfs
+  fi
 fi