🤖
DigitalOcean doctlで起動・終了スクリプトを作る
DigitalOceanの掟
DigitalOceanでは、Droplet(DigitalOceanのEC2のようなもの)は、起動停止に関らず、課金されます。Snapshotも課金されますがdropletの方が高いので、開発環境では、作業開始時にSnapshotから起動、終了時にSnapshotに保存という仕組みを作りコストを抑えます。作業開始時に最新のSanpshotからDropletを作成(start.sh)し、作業終了(close.sh)は、Sanpshot(最新)を作成後Dropletを削除します。3世代保存バージョンは、またいずれ。
DigitalOcean doctlとは
DigitalOceanの公式コマンドツールです。今回は、簡単な起動・終了スクリプトを作成します。
インストール方法は
チュートリアルは
コマンドリファレンスは
登録している最新の1個のsnapshotを元にdropletを作成する
snapshotがないとエラーになります。
#!/bin/sh
#start.sh
mid=$(doctl compute image list --no-header --format "ID")
latest=(${mid///n/ })
doctl compute droplet create --image $latest --size s-1vcpu-1gb --region sgp1 droplet1
登録している最新の1個のdropletをスナップショットして削除する
dropletがないとエラーになります。Jq使ってリスト保存してますので不要の方はこの行は実行しないでください。
#!/bin/sh
#close.sh
id=$(doctl compute droplet list --no-header --format "ID")
latest=(${id///n/ })
doctl compute droplet get $latest --output json |jq .>backup.json
doctl compute droplet-action snapshot $latest --no-header --snapshot-name gen1
doctl compute droplet delete -f $latest
Discussion