Skip to content

Instantly share code, notes, and snippets.

@vaijab
Created January 7, 2016 22:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vaijab/703a389af283ac229b60 to your computer and use it in GitHub Desktop.
Save vaijab/703a389af283ac229b60 to your computer and use it in GitHub Desktop.
etcd2 data restore script
#!/usr/bin/bash
: ${1?"etcd2 protocol has not been set. Specify http or https as first argument."}
: ${2?"etcd2 data dir has not been set. Specify as second argument."}
source /etc/environment
sudo systemctl stop etcd2.service
sudo rm -rf ${2}/member
if [[ -d /tmp/etcd2 ]]; then
sudo find /tmp/etcd2 -exec chown etcd:etcd '{}' \;
sudo su - etcd -s /bin/bash -c 'etcd2 --force-new-cluster --data-dir=/tmp/etcd2 2> /dev/null &'
sleep 5
sudo kill $(pidof etcd2)
else
echo 'Cannot find backup dir /tmp/etcd2'
exit 1
fi
sudo su - etcd -s /bin/bash -c 'cp -r /tmp/etcd2 ${2}'
sudo systemctl start etcd2.service
sleep 3
curl -s -XPUT -H "Content-Type: application/json" \
${1}://${COREOS_PRIVATE_IPV4}:2379/v2/members/$(curl -s ${1}://${COREOS_PRIVATE_IPV4}:2379/v2/members | jq -r .members[0].id) \
-d "{\"peerURLs\":[\"${1}://${COREOS_PRIVATE_IPV4}:2380\"]}"
# sudo sed 's/=new/=existing/' -i /run/systemd/system/etcd2.service.d/20-cloudinit.conf && sudo systemctl daemon-reload
# sudo sed 's|ETCD_INITIAL_CLUSTER=.*|ETCD_INITIAL_CLUSTER="node0=https://10.50.10.200:2380,node2=https://10.50.11.200:2380,node1=https://10.50.10.201:2380"|' -i /run/systemd/system/etcd2.service.d/20-cloudinit.conf
# sudo systemctl stop etcd2.service; sudo rm -rf /data/etcd2/member
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment