code/etcd-inmemory/files/opt/wamblee/etcd/bin/etcd-restore
2023-02-26 13:36:15 +01:00

43 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
PATH=/opt/wamblee/etcd/bin:$PATH
if [[ $# -ne 1 ]]
then
(
echo "Usage: $0 <backuppname>"
echo " <backupname> must be a relative path to a backup below the /var/lib/wamblee/etcd directory"
) 1>&2
exit 1
fi
backup="$1"
. /var/lib/wamblee/etcd/etcdimage
if [[ -z "$IMAGE" ]]
then
IMAGE="registry.k8s.io/etcd:3.5.6-0"
echo "ETCD image cannot be determined, using fall back $IMAGE" 1>&2
fi
echo "ETCD image: $IMAGE"
set -e
rm -rf /var/lib/etcd.restored
mkdir -p /var/lib/etcd.restored
# using --network host to work around incompatibility of CNI versions
docker run --rm \
--network host \
-v '/var/lib/wamblee/etcd:/var/lib/wamblee/etcd' \
-v '/var/lib/etcd.restored:/var/lib/etcd.restored' \
--env ETCDCTL_API=3 \
"$IMAGE" \
/bin/sh -c "etcdctl snapshot restore /var/lib/wamblee/etcd/$backup --data-dir /var/lib/etcd.restored/data"
mv /var/lib/etcd.restored/data/* /var/lib/etcd.restored
rmdir /var/lib/etcd.restored/data
echo ""
echo "Restore is available at /var/lib/etcd.restored"