65 lines
2 KiB
Bash
Executable file
65 lines
2 KiB
Bash
Executable file
#!/bin/bash -e
|
|
HOST_NAME=$1
|
|
IMAGE_NAME=$2
|
|
MACHINE=$3
|
|
. config.sh
|
|
. config_machine.sh
|
|
if [ -z "$MACHINE" ]; then
|
|
echo "usage: $0 name pkg dns_name"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "$MACHINE_NAME_NSPAWN_LOCAL" ]; then
|
|
echo "PAS DE CONFIG NSPAWN $MACHINE_NAME_NSPAWN_LOCAL"
|
|
exit 0
|
|
fi
|
|
|
|
if [ ! -f "$IMAGE_NAME_RISOTTO_IMAGE_NAME" ]; then
|
|
echo "PAS D'IMAGE $IMAGE_NAME_RISOTTO_IMAGE_NAME"
|
|
exit 1
|
|
fi
|
|
NEW_IMAGE=false
|
|
NEW_CONF=false
|
|
if [ -L "$MACHINE_MACHINES_DIR" ] || [ -d "$MACHINE_MACHINES_DIR" ]; then
|
|
# is the base image divergent?
|
|
diff -q "$IMAGE_NAME_RISOTTO_IMAGE_NAME".sha "$SHA_MACHINE" || NEW_IMAGE=true
|
|
# is the configuration divergent?
|
|
diff -q --no-dereference -Nru "$MACHINE_RISOTTO_CONFIG_DIR" "$MACHINE_RISOTTO_CONFIG_DIR_LOCAL" || NEW_CONF=true
|
|
fi
|
|
if [ "$NEW_IMAGE" = true ] || [ "$NEW_CONF" = true ]; then
|
|
echo " - stop $IMAGE_NAME"
|
|
machinectl stop "$MACHINE" 2> /dev/null || true
|
|
while true; do
|
|
machinectl status "$MACHINE" > /dev/null 2>&1 || break
|
|
sleep 1
|
|
done
|
|
fi
|
|
if [ "$NEW_IMAGE" = true ]; then
|
|
echo " - delete old image"
|
|
rm -rf "$MACHINE_MACHINES_DIR"
|
|
fi
|
|
if [ "$NEW_CONF" = true ]; then
|
|
echo " - delete old settings"
|
|
./diff.py "$MACHINE" "$MACHINE_RISOTTO_CONFIG_DIR" "$MACHINE_RISOTTO_CONFIG_DIR_LOCAL" > "$MACHINE_RISOTTO_CONFIG_DIR"_changelog.md
|
|
rm -rf "$MACHINE_RISOTTO_CONFIG_DIR"
|
|
fi
|
|
|
|
cp -a "$MACHINE_NAME_NSPAWN_LOCAL" "$MACHINE_NAME_NSPAWN"
|
|
cp -a "$MACHINE_NAME_SCRIPT_LOCAL" "$MACHINE_NAME_SCRIPT"
|
|
if [ ! -d "$MACHINE_RISOTTO_CONFIG_DIR" ]; then
|
|
cp -a "$MACHINE_RISOTTO_CONFIG_DIR_LOCAL" "$MACHINE_RISOTTO_CONFIG_DIR"
|
|
fi
|
|
if [ ! -d "$MACHINE_RISOTTO_SRV_DIR" ] && [ -d "$MACHINE_RISOTTO_SRV_DIR_LOCAL" ]; then
|
|
mkdir -p "$MACHINE_RISOTTO_SRV_DIR"
|
|
fi
|
|
mkdir -p "$RISOTTO_JOURNALD_DIR"
|
|
if [ ! -d "$MACHINE_MACHINES_DIR" ]; then
|
|
cd "$MACHINES_DIR"
|
|
tar xf "$IMAGE_NAME_RISOTTO_IMAGE_NAME"
|
|
mkdir -p "$SHA_MACHINE_DIR"
|
|
cp -a "$IMAGE_NAME_RISOTTO_IMAGE_NAME".sha "$SHA_MACHINE"
|
|
mv "$IMAGE_NAME" "$MACHINE_MACHINES_DIR"
|
|
cd - > /dev/null
|
|
fi
|
|
|
|
echo " => OK"
|
|
exit 0
|