読者です 読者をやめる 読者になる 読者になる

さくらのクラウドの API を使ってみただけの話

さくらのクラウドで利用できる API を使ってみたメモです。メモだけ。
API の操作に必要な API キーはクラウドの管理画面にある「設定」→「API キー」とたどると作ったり確認したりできます。

ローカル側は Windows から FreeBSD 11.0-RELEASE-p7 に SSH 接続したターミナルの bash から curl で叩いています。

使う API キーとか URL は変数に格納しておきます。

$ export sandbox="https://secure.sakura.ad.jp/cloud/zone/tk1v/api/cloud/1.1/"
$ export token="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
$ export secret="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

以下に出てくる12桁のXはディスクのIDとかサーバーのIDとかそんな感じなので、適宜読み替える。
curl の実行結果を jq に渡しているのはレスポンスの JSON を整形して読みやすくしてるだけです。なくても OK。

サーバーの作成とか

まずはサーバープランのプラン ID を確認

$ curl --user "${token}:${secret}" -X GET ${sandbox}/product/server | jq "."

確認したプラン ID を使って1コア 1GB のサーバーを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/server -d '{"Server":{"Name":"Test Server","ServerPlan":{"ID":1001}}}' | jq "." 

続いてディスクプランのプラン ID を確認

$ curl --user "${token}:${secret}" ${sandbox}/product/disk | jq "." 

確認したプラン ID から SSD プランで 20GB のディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","Plan":{"ID":4},"SizeMB":20480}}' | jq "."

保持しているディスクの一覧を表示

$ curl --user "${token}:${secret}" -X GET ${sandbox}/disk | jq "."

作成したディスクを作成済みのサーバーに接続

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/disk/XXXXXXXXXXXX/to/server/XXXXXXXXXXXX | jq "."

サーバーで利用するインターフェイスの作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/interface -d '{"Interface":{"Server":{"ID":XXXXXXXXXXXX}}}' | jq "."

サーバーがネットワークに出られるようにインターフェイスを共有セグメントに接続

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/interface/XXXXXXXXXXXX/to/switch/shared | jq "."

セットしたサーバーの電源を入れる

$ curl --user "${token}:${secret}" -X PUT ${sandbox}/server/XXXXXXXXXXXX/power| jq "."

管理画面でサーバーを強制終了してからサーバーと共にディスクを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/server/XXXXXXXXXXXX/ -d '{"WithDisk:XXXXXXXXXXXX}' | jq "."

アーカイブの操作

もういっちょ SSD プラン 20GB のディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","Plan":{"ID":4},"SizeMB":20480}}'| jq "."

作成したディスクを元にアーカイブを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/archive -d '{"Archive":{"Name":"Test Archive","SizeMB":20480,"SourceDisk":{"ID":XXXXXXXXXXXX}}}'| jq "."

元になったディスクを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/disk/XXXXXXXXXXXX | jq "."

今度はアーカイブを元に新しいディスクを作成

$ curl --user "${token}:${secret}" -X POST ${sandbox}/disk -d '{"Disk":{"Name":"Test Disk","SourceArchive":{"ID":XXXXXXXXXXXX}}}' | jq "."

アーカイブを削除

$ curl --user "${token}:${secret}" -X DELETE ${sandbox}/archive/XXXXXXXXXXXX | jq "."

後は

さくナレも参考にして Rubyスクリプトを組みたい。