change partitioning to use lvm, refactor for fsf server
[automated-distro-installer] / fai-revm
index 5aa1e6c0cfac53fa354b461261cd5680f8a23dde..a016a762c30cbb70b4bc6f4d43152a197cf6ec3d 100755 (executable)
--- a/fai-revm
+++ b/fai-revm
@@ -16,6 +16,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 
+[[ $EUID == 0 ]] || exec sudo -E "${BASH_SOURCE[0]}" "$@"
+
 
 readonly this_file="$(readlink -f -- "${BASH_SOURCE[0]}")"
 script_dir="${this_file%/*}"
 
 readonly this_file="$(readlink -f -- "${BASH_SOURCE[0]}")"
 script_dir="${this_file%/*}"
@@ -36,7 +38,8 @@ then start a virtual machine to test the config
 Note, sometimes shutting down the existing demohost vm
 fails. Just run again if that happens.
 
 Note, sometimes shutting down the existing demohost vm
 fails. Just run again if that happens.
 
--d         Don't do dhcp setup for when we aren't on Ian's home network.
+-d         When doing pxe, don't do dhcp setup. Good for when we
+           aren't on Ian's home network.
 -n         Create new qcow2(s) for vm. Good for testing partitioning
            script, to ensure a blank disk.
 -p         Use pxe instead of autodiscover iso with fai.
 -n         Create new qcow2(s) for vm. Good for testing partitioning
            script, to ensure a blank disk.
 -p         Use pxe instead of autodiscover iso with fai.
@@ -69,11 +72,13 @@ while true; do
 done
 
 
 done
 
 
-# change this to test different disk counts. 1 and > 1 should be the only
-# important things to test.
+# change this to test different disk counts.
+disk_count=3
 disk_count=1
 
 
 disk_count=1
 
 
+rm -f /tmp/fai-revm-did-pxe
+
 if ! ip l show br0 &>/dev/null; then
   cat <<'EOF'
 fai-rvm error: no bridge detected. add one to interfaces like this:
 if ! ip l show br0 &>/dev/null; then
   cat <<'EOF'
 fai-rvm error: no bridge detected. add one to interfaces like this:
@@ -101,19 +106,23 @@ is_arch_revm() {
 
 err-cleanup() {
   echo "doing cleanup"
 
 err-cleanup() {
   echo "doing cleanup"
-  e ./pxe-server $dhcp_arg
+  if [[ -e /tmp/fai-revm-did-pxe ]]; then
+    e ./pxe-server $dhcp_arg
+  fi
   ./faiserver-disable
 }
 
 boot_arg=--pxe
 if is_arch_revm; then
   e ./pxe-server $dhcp_arg demohost arch
   ./faiserver-disable
 }
 
 boot_arg=--pxe
 if is_arch_revm; then
   e ./pxe-server $dhcp_arg demohost arch
+  touch /tmp/fai-revm-did-pxe
   sleep 2
   # via osinfo-query os. guessing arch is closest to latest fedora.
   variant=fedora22
 else
   if $pxe; then
     e ./pxe-server $dhcp_arg demohost fai
   sleep 2
   # via osinfo-query os. guessing arch is closest to latest fedora.
   variant=fedora22
 else
   if $pxe; then
     e ./pxe-server $dhcp_arg demohost fai
+    touch /tmp/fai-revm-did-pxe
     sleep 2
   else
     killall fai-monitor &>/dev/null ||:
     sleep 2
   else
     killall fai-monitor &>/dev/null ||:
@@ -124,23 +133,28 @@ else
     isopath=$BASEFILE_DIR/$iso
     isosrc=$BASEFILE_DIR/BULLSEYE64.tar.gz
     if [[ ! -e $isopath || $(stat -c %Y $isopath) -lt $(stat -c %Y $isosrc) ]]; then
     isopath=$BASEFILE_DIR/$iso
     isosrc=$BASEFILE_DIR/BULLSEYE64.tar.gz
     if [[ ! -e $isopath || $(stat -c %Y $isopath) -lt $(stat -c %Y $isosrc) ]]; then
-      e sudo fai-cd -g $(readlink -f grub.cfg.${iso%%.*}) -f -A $isopath
+      e fai-cd -g $(readlink -f grub.cfg.${iso%%.*}) -f -A $isopath
     fi
     boot_arg="--cdrom $isopath"
     e fai-redep
     fi
     boot_arg="--cdrom $isopath"
     e fai-redep
+    cat ~/.ssh/demo.pub | /a/exe/cedit -s /srv/fai/nfsroot/root/.ssh/authorized_keys
     e myfai-chboot default
   fi
   # I don't think these variants actually make a diff for us, but I
   # use the appropriate one when trying a new distro just in case.
     e myfai-chboot default
   fi
   # I don't think these variants actually make a diff for us, but I
   # use the appropriate one when trying a new distro just in case.
-  variant=ubuntu14.04
+  #variant=ubuntu14.04
   #variant=ubuntu16.04
   #variant=debian8
   #variant=ubuntu16.04
   #variant=debian8
+  variant=ubuntu20.04
 fi
 
 name=demohost
 
 fi
 
 name=demohost
 
-e sudo virsh destroy $name ||:
-e sudo virsh undefine $name ||:
+e virsh destroy $name ||:
+sleep 1
+e virsh destroy $name ||:
+e virsh undefine $name ||:
+sleep 1
 
 
 disk_arg=()
 
 
 disk_arg=()
@@ -148,11 +162,11 @@ for ((i=1; i <= disk_count; i++)); do
   f=/var/lib/libvirt/images/${name}$i
   disk_arg+=("--disk path=$f")
   if $new_disk || [[ ! -e $f ]]; then
   f=/var/lib/libvirt/images/${name}$i
   disk_arg+=("--disk path=$f")
   if $new_disk || [[ ! -e $f ]]; then
-    sudo rm -f $f
+    rm -f $f
     # https://btrfs.wiki.kernel.org/index.php/FAQ
     # https://btrfs.wiki.kernel.org/index.php/FAQ
-    sudo touch $f
+    touch $f
     chattr +C $f
     chattr +C $f
-    e sudo qemu-img create -o preallocation=metadata -f qcow2 $f 50G
+    e qemu-img create -o preallocation=metadata -f qcow2 $f 50G
   fi
 done
 
   fi
 done
 
@@ -161,14 +175,14 @@ if [[ $SSH_CLIENT ]]; then
 fi
 
 # docker makes forward default to drop, which blocks the vm pxe on flidas. easiest solution:
 fi
 
 # docker makes forward default to drop, which blocks the vm pxe on flidas. easiest solution:
-e sudo iptables -P FORWARD ACCEPT
+e iptables -P FORWARD ACCEPT
 
 # --cpu host: this causes mkfs.btrfs to fail with a stack trace which began
 # something like:
 # init_module+0x108/0x1000 [raid6_pq]
 #
 # uniq is to stop gtk-warning spam
 
 # --cpu host: this causes mkfs.btrfs to fail with a stack trace which began
 # something like:
 # init_module+0x108/0x1000 [raid6_pq]
 #
 # uniq is to stop gtk-warning spam
-# e sudo virt-install --os-variant $variant  -n $name --pxe -r 2048 --vcpus 1 \
+# e virt-install --os-variant $variant  -n $name --pxe -r 2048 --vcpus 1 \
   #   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
   #   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
 
   #   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
   #   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
 
@@ -177,8 +191,8 @@ if (( $(nproc) > 2 )); then
   cpus=2
 fi
 
   cpus=2
 fi
 
-e sudo systemctl start libvirtd
-e sudo virt-install --rng /dev/urandom --os-variant $variant  -n $name $boot_arg -r 2048 --vcpus $cpus \
+e systemctl start libvirtd
+e virt-install --rng /dev/urandom --os-variant $variant  -n $name $boot_arg -r 2048 --vcpus $cpus \
   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
 
   ${disk_arg[*]} -w bridge=br0,mac=52:54:00:9c:ef:ad $reboot_arg \
   --graphics spice,listen=0.0.0.0 $console_arg |& grep -v '^ *$' | uniq &
 
@@ -188,11 +202,18 @@ if [[ $SSH_CLIENT ]]; then
 fi
 
 sleep 90
 fi
 
 sleep 90
-while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name /bin/true; do
+while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name true; do
   e sleep 5
 done
 unset -f err-cleanup
   e sleep 5
 done
 unset -f err-cleanup
-e ./pxe-server $dhcp_arg
+if $pxe; then
+  rm -f /tmp/fai-revm-did-pxe
+  e ./pxe-server $dhcp_arg
+fi
+
+# this tends to remove it too soon
+#echo | /a/exe/cedit -s /srv/fai/nfsroot/root/.ssh/authorized_keys
+
 if is_arch_revm; then
   ./arch-init-remote $name
 fi
 if is_arch_revm; then
   ./arch-init-remote $name
 fi