iankelling.org
/
git
/
automated-distro-installer
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
change partitioning to use lvm, refactor for fsf server
[automated-distro-installer]
/
fai-revm
diff --git
a/fai-revm
b/fai-revm
index 76458885f7f03cd93c02251fe34b668913fb3aeb..a016a762c30cbb70b4bc6f4d43152a197cf6ec3d 100755
(executable)
--- a/
fai-revm
+++ b/
fai-revm
@@
-1,4
+1,4
@@
-#!/bin/bash
-l
+#!/bin/bash
# Copyright (C) 2016 Ian Kelling
# This program is free software; you can redistribute it and/or
# Copyright (C) 2016 Ian Kelling
# This program is free software; you can redistribute it and/or
@@
-16,12
+16,15
@@
# 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%/*}"
# shellcheck source=./bash-trace
source "${script_dir}/bash-trace"
cd $script_dir
readonly this_file="$(readlink -f -- "${BASH_SOURCE[0]}")"
script_dir="${this_file%/*}"
# shellcheck source=./bash-trace
source "${script_dir}/bash-trace"
cd $script_dir
+PATH="$PATH:$PWD"
e() { echo "$*"; "$@"; }
e() { echo "$*"; "$@"; }
@@
-35,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.
@@
-68,10
+72,24
@@
while true; do
done
done
-# change this to test different disk counts. 1 and > 1 should be the only
-# important things to test.
-disk_count=2
+# change this to test different disk counts.
+disk_count=3
+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:
+iface eth0 inet manual
+iface br0 inet dhcp
+ bridge_ports eth0
+ bridge_stp off
+ bridge_maxwait 0
+EOF
+ exit 1
+fi
if [[ $script_dir == /a/bin/* ]]; then
# Copy our script elsewhere so we can develop it
if [[ $script_dir == /a/bin/* ]]; then
# Copy our script elsewhere so we can develop it
@@
-86,22
+104,25
@@
is_arch_revm() {
[[ ${0##*/} == arch-revm ]]
}
[[ ${0##*/} == arch-revm ]]
}
-cleanup() {
+
err-
cleanup() {
echo "doing 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
}
./faiserver-disable
}
-_errcatch_cleanup=cleanup
boot_arg=--pxe
if is_arch_revm; then
e ./pxe-server $dhcp_arg demohost arch
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 ||:
@@
-110,24
+131,30
@@
else
BASEFILE_DIR=/tmp
fi
isopath=$BASEFILE_DIR/$iso
BASEFILE_DIR=/tmp
fi
isopath=$BASEFILE_DIR/$iso
- isosrc=$BASEFILE_DIR/
STRETCH
64.tar.gz
+ isosrc=$BASEFILE_DIR/
BULLSEYE
64.tar.gz
if [[ ! -e $isopath || $(stat -c %Y $isopath) -lt $(stat -c %Y $isosrc) ]]; then
if [[ ! -e $isopath || $(stat -c %Y $isopath) -lt $(stat -c %Y $isosrc) ]]; then
- e
s
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 s virshrm $name ||:
+e virsh destroy $name ||:
+sleep 1
+e virsh destroy $name ||:
+e virsh undefine $name ||:
+sleep 1
disk_arg=()
disk_arg=()
@@
-135,8
+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
- s rm -f $f
- e s qemu-img create -o preallocation=metadata -f qcow2 $f 50G
+ rm -f $f
+ # https://btrfs.wiki.kernel.org/index.php/FAQ
+ touch $f
+ chattr +C $f
+ e qemu-img create -o preallocation=metadata -f qcow2 $f 50G
fi
done
fi
done
@@
-145,19
+175,24
@@
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:
-
s
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
s
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 &
+cpus=1
+if (( $(nproc) > 2 )); then
+ cpus=2
+fi
-e s virt-install --rng /dev/urandom --os-variant $variant -n $name $boot_arg -r 2048 --vcpus 1 \
+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 &
@@
-166,12
+201,19
@@
if [[ $SSH_CLIENT ]]; then
fg
fi
fg
fi
-sleep
3
0
-while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name
/bin/
true; do
+sleep
9
0
+while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name true; do
e sleep 5
done
e sleep 5
done
-unset _errcatch_cleanup
-e ./pxe-server $dhcp_arg
+unset -f err-cleanup
+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