43 lines
1.0 KiB
Bash
Executable File
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"
|
|
|