61 lines
1.6 KiB
Bash
Executable file
61 lines
1.6 KiB
Bash
Executable file
#!/bin/bash -e
|
|
HOST_NAME=$1
|
|
if [ -z "$HOST_NAME" ]; then
|
|
echo "usage: $0 host name"
|
|
exit 1
|
|
fi
|
|
|
|
MACHINES=""
|
|
for image in *; do
|
|
if [ -d "$image" ]; then
|
|
for os in $image/configurations/*; do
|
|
if [ -d "$os" ]; then
|
|
osname="$(basename $os)"
|
|
if [ -f "host/configurations/$HOST_NAME/etc/systemd/nspawn/$osname.nspawn" ]; then
|
|
MACHINES="$MACHINES$osname "
|
|
fi
|
|
echo
|
|
echo "Install machine $image"
|
|
./install_machine "$HOST_NAME" "$image" "$osname"
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
machinectl enable $MACHINES
|
|
machinectl start $MACHINES
|
|
STARTED=""
|
|
DEGRADED=""
|
|
found=true
|
|
idx=0
|
|
while [ $found = true ]; do
|
|
found=false
|
|
echo "tentative $idx"
|
|
for machine in $MACHINES; do
|
|
if ! echo $STARTED | grep -q " $machine "; then
|
|
status=$(machinectl -q shell $machine /usr/bin/systemctl is-system-running || true)
|
|
if echo "$status" | grep -q degraded; then
|
|
STARTED="$STARTED $machine "
|
|
DEGRADED="$DEGRADED $machine"
|
|
elif echo "$status" | grep -q running; then
|
|
STARTED="$STARTED $machine "
|
|
else
|
|
found=true
|
|
echo "status actuel de $machine : $status"
|
|
fi
|
|
fi
|
|
done
|
|
sleep 2
|
|
idx=$((idx+1))
|
|
if [ $idx = 60 ]; then
|
|
break
|
|
fi
|
|
done
|
|
retcode=0
|
|
for machine in $DEGRADED; do
|
|
echo
|
|
echo "========= $machine"
|
|
machinectl -q shell $machine /usr/bin/systemctl --state=failed --no-legend --no-pager
|
|
retcode=1
|
|
done
|
|
|
|
exit $retcode
|