LoginSignup
1
0

More than 5 years have passed since last update.

GCEのInstanceの停止時にDiskのスナップショットを自動で撮る

Last updated at Posted at 2018-08-27

経緯

  • 運用しているgitlabがバージョンアップに伴い動かなくなり、リカバリーに時間が取られる事件が発生した。
  • これを契機に改めてバックアップについてちゃんとできているか考えたところ、Diskのバックアップ撮ってないなーと今更ながら思い、バックアップを取る仕組みを検討するに至る。

方針

  • 定時後に自動でgitlab停止する運用をしているので、shutdown-scriptでスナップショット取ることでバックアップする。

実コード

  • 20180828 フィルタを完全一致に変更
shutdown-script.sh
ZONE="$(curl -s -f -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/zone | xargs basename)"
PROJECT="$(curl -s -f -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/project/project-id)"

gcloud compute disks list --filter "users=(https://www.googleapis.com/compute/v1/projects/${PROJECT}/zones/${ZONE}/instances/$(hostname))" --format "[no-heading](name)" | while read line;
do
  gcloud compute disks snapshot ${line} --zone $ZONE --async --snapshot-names=${line}-$(date "+%Y%m%d%H%M")
done

補足

  • boot disk以外のdiskもスナップショットの対象とできるように、自身のインスタンスに紐づくDiskを洗い出してからスナップショットを取得するようにした。
  • gcloud compute disks snapshotする際にasyncオプションつけることで、スナップショットの生成に90s(Preemptibeの場合30s)以上かかる場合でもちゃんとバックアップできるようにした。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0