LoginSignup
2
1

More than 3 years have passed since last update.

GCPのCompute Engineで定期スナップショットを取得する

Last updated at Posted at 2019-12-13

はじめに

Google Cloud Platformでcompute engineを定期スナップショットを取得したい。

2019年12月19日追記
→もっと簡単な方法があったので、サクッと終らせたい方はこちらを参照してください。

概要

毎日夜間にスナップショットを取得
7日以上前のスナップショットは削除

環境

クラウド:Google Cloud Platform
OS:CentOS 8
tool:Google Cloud SDK

Google Cloud SDKの使い方が不明な方はこちらを参照されたい。

使い方とか

インスタンスの一覧取得

[google@ap-srv1 ~]$ gcloud compute instances list
NAME     ZONE               MACHINE_TYPE               PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
ap-srv1  asia-northeast1-a  f1-micro                   192.168.5.3  xx.xx.xxx.xxx  RUNNING
ap-srv2  asia-northeast1-a  g1-small                   192.168.5.4  xx.xx.xxx.xxx  RUNNING
web-srv1 asia-northeast1-a  g1-small                   192.168.5.7  xx.xx.xxx.xxx  RUNNING

インスタンス一覧からフィルタ指定してインスタンスを絞る
例:「web」で始まるインスタンスのみ表示

[google@ap-srv1 ~]$ gcloud compute instances list --filter="name ~ ^web"
NAME     ZONE               MACHINE_TYPE               PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
web-srv1 asia-northeast1-a  g1-small                   192.168.5.7  xx.xx.xxx.xxx  RUNNING

その他の使い方については、本家googleの解説ページを参照されたい。

手動でスナップショットを取得

まずは手動でスナップショットを取得してみる。

コマンドはこう
gcloud compute disks snapshot -q インスタンス名 --zone=ゾーン名 --snapshot-names=スナップショット名

[google@ap-srv1 ~]$ gcloud compute disks snapshot -q ap-srv1 --zone=asia-northeast1-a --snapshot-names=temporary-snapshot-20191213
Creating snapshot(s) temporary-snapshot-20191213...done.

できてるか確認

[google@ap-srv1 ~]$ gcloud compute snapshots list --filter="name ~ ^temp"
NAME                         DISK_SIZE_GB  SRC_DISK                         STATUS
temporary-snapshot-20191213  100           asia-northeast1-b/disks/server1  READY

できてるみたい。

手動でスナップショットを削除

[google@ap-srv1 ~]$ gcloud compute snapshots delete temporary-snapshot-20191213
The following snapshots will be deleted:
 - [temporary-snapshot-20191213]

Do you want to continue (Y/n)?  Y

Deleted [https://www.googleapis.com/compute/v1/projects/yourproject-000000/global/snapshots/temporary-snapshot-20191213].

削除できたけど、続けて良いか確認が入るみたいなので、オプションにquietをつける。

gcloud compute snapshots delete temporary-snapshot-20191213 --quiet

確認なしで、削除されるようになったが、7日以上前のやつを削除したいので、以下のコマンドでタイムスタンプを取得

gcloud compute snapshots list --filter="creationTimestamp<YYYYmmdd"

さらにuriを指定して削除できるようなので、uriオプションをつけて、削除対象をフィルタする。

gcloud compute snapshots list --filter="creationTimestamp<YYYYmmdd" --uri

スクリプトを作成

snapshot.sh
INSTANCE_NAME=ap-srv1
SNAPSHOT_ZONE_NAME=asia-northeast1-a
DAYS_OLD="$(date -d "-7 days" +%Y%m%d)"

# create the snapshot

gcloud compute disks snapshot -q ${INSTANCE_NAME} --zone=${SNAPSHOT_ZONE_NAME} --snapshot-names=${INSTANCE_NAME}-`date +'%Y%m%d'`

#
# DELETE OLD SNAPSHOTS (OLDER THAN 7 DAYS)
#

gcloud compute snapshots list --filter="creationTimestamp<$DAYS_OLD" --uri | while read SNAPSHOT_URI; do

 #echo $SNAPSHOT_URI
 gcloud compute snapshots delete $SNAPSHOT_URI

done

スクリプトをcrontabに登録すると、定期的にスナップショットが取得できるようになりました。

終わりに

GCPコンソールでも確認した。

image.png

よし。ちゃんと出来てるようだ。

ん?!

image.png

コンソールから出来るようになったんかいっ!

知らなかったな~、も~

2
1
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
2
1