1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【さくらのクラウドAPI】curlでサーバーの起動・再起動・停止してみた

Last updated at Posted at 2021-09-13

概要

curlでさくらのクラウドAPIを叩いて作成済みのサーバーの起動・再起動・停止をしたくなったので記事に起こします。

できるようになること

  • curlでさくらのクラウドAPIを叩き、作成済みの起動状態の確認、およびサーバの起動・再起動・停止ができる

必要なもの

  1. curlが実行できるターミナル
  • Windows, Mac, LinuxどのOSでもだいたい実行できると思います。できない場合は環境を用意してください。
  1. アクセストークン、アクセストークンシークレット
  • さくらのクラウドホームからAPIキーを作成し、上記の2つを控えておいてください。後ほど使用します。
  • なお、作成APIキーを作成する際はアクセスレベルを電源操作 or 設定編集 or 作成・削除に変更してください。この変更がないとアクセスできないです。
  • 詳しい作成方法は下のリンクから

curlサンプルコマンド

今回は私が使用している石狩第1(is1a)のサーバーに対してコマンドを実行します。
アクセストークンアクセスシークレットキーserveridについてはご自身のものに置き換えてください。
すべて公式のサンプルを引用しているので詳細は公式ドキュメントを参照してください。

起動状態を取得 GET /server/:serverid/power

電源操作をする前に状態を把握することはとても大切です。
間違えて起動や停止するとサービスに大きな影響を与える可能性があるので。
コンパネから状態を確認できていれば問題ないと思いますが、そうでなければこちらを実行をおすすめします。

# サーバーの起動状態を取得
curl --user "Access Token":"Access Token Secret"\
    https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/:serverid/power

実行結果

これは私のリソースですがInstance.Statusdownになっているので停止していることが確認できました。
他にもdownになる前はcleaningdownの前に必ずなる状態)になっていたことや、その変更日時も確認できます。

{
    "Instance": {
        "Server": {
            "ID": "113301645700"
        },
        "Status": "down",
        "BeforeStatus": "cleaning",
        "Warnings": "none",
        "WarningsValue": 0,
        "StatusChangedAt": "2021-09-13T13:30:14+09:00",
        "MigrationProgress": null,
        "MigrationSchedule": null,
        "MigrationAllowed": null,
        "ModifiedAt": "2021-09-13T13:30:14+09:00",
        "Host": null,
        "CDROM": null
    },
    "is_ok": true
}

起動 PUT /server/:serverid/power

停止状態のサーバーを起動するコマンドです。停止の状態でコマンドを実行してください。

# サーバ起動のリクエストサンプル
curl --user "Access Token":"Access Token Secret" -X PUT -d '' \
     https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/:serverid/power

実行結果

{"Success":true,"is_ok":true}

当然ですが、起動後にもう一度このコマンドを叩くと409 Conflictのエラーになります。

{
    "is_fatal": true,
    "serial": "91c28d78a832f33f6ab2b6d5b51f0f37",
    "status": "409 Conflict",
    "error_code": "conflict",
    "error_msg": "要求された操作を行えません。現在の対象の状態では、この操作を受け付けできません。"
}

再起動(強制リブート) PUT /server/:serverid/reset

実際のコントロールパネルでは再起動という文字は無く、強制リブートという文字になっています。
なのでWindowsやMac、LinuxなどのGUIから行う再起動ではなく、ハードウェアのリセットボタンをポチッと押す感じのものですね。

reboot0.png

安全に行いたい方はOSにログインしてからrebootや再起動ボタンをGUIから操作するのが良さそうです。
なんでもいいからAPIから再起動させたい人はこれでおkです。

# サーバ再起動のリクエストサンプル
curl --user "Access Token":"Access Token Secret" -X PUT -d '' \
     https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/:serverid/reset

実行結果

{"Success":true,"is_ok":true}

コンパネでの挙動

コントロールパネルで表示を更新を連打して確認しているとcleaning → downdown → upの流れで再起動していました。
これも実際のハードウェアと同様の挙動ですね。

  • cleaning → down スクリーンショット
    reboot1.png

  • down → up スクリーンショット
    reboot2.png

停止(シャットダウン) DELETE /server/:serverid/power

このコマンドはOSのシャットダウンと同じ挙動で、OS内からシャットダウンを実行したものと同じでした。
正常にシャットダウンさせたい場合はこのコマンドを叩くとよさそうですね。

# シャットダウン
curl --user "Access Token":"Access Token Secret" -X DELETE -d '' \
    https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/:serverid/power

実行結果

{"Success":true,"is_ok":true}

これもサーバー同様に起動しているものに実行してください。でないとエラーになります。

{
    "is_fatal": true,
    "serial": "ea3cb6eb1ff1b10bf15258c5a526993d",
    "status": "409 Conflict",
    "error_code": "conflict",
    "error_msg": "要求された操作を行えません。現在の対象の状態では、この操作を受け付けできません。"
}

停止(強制停止) DELETE /server/:serverid/power

コンパネ上には強制停止というボタンがあり、このAPIを実行しているみたいです。
実際のハードウェアに例えると電源長押しって感じですかね。どうしてもサーバーが落ちないときに実行しましょう。

# 強制停止
curl --user "Access Token":"Access Token Secret" -X DELETE -d '{Force:true}' \
    https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/:serverid/power

実行結果

{"Success":true,"is_ok":true}

強制停止の場合は電源が停止の状態で実行しても上記と同じ成功のレスポンスが返ってきました。

まとめ

これでcurlからサーバーの起動状態を操作できるようになったと思います。
curlで実行するのはそこまで実用性高くはないと思いますので、挙動の確認とかで参考になれば幸いです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?