さくらのVPSをAPIで停止・起動する方法|curlで電源操作を試す

こんにちは、UOZUです!

さくらのVPSは、OS再インストールも簡単で検証環境として使いやすいですが、電源操作のたびに会員メニューへログインするのは少し手間に感じることがあります。

今回は、VPSコントロールパネルで発行できるAPIキーを利用して、curlからVPSサーバーの電源状態確認、シャットダウン、起動を実行してみます。

さくらの VPS マニュアル
API 概要: APIは、外部のツールやお客様が作成されたスクリプトから簡単にサービスの参照や操作ができる、開発者向けのツールです。 さくらのVPSのAPIではサーバーの状況を取得...
目次

APIキー発行まで

APIキーの発行・利用には、ロールの作成を行い、ロールをAPIキーに設定する必要があります。進めて行きましょう。

ロールの作成

まずは、VPS管理画面のAPIキー管理に進みましょう。+ロールの追加が表示されるはずですので、クリックしてロールを登録しましょう。

API管理ロール追加画面

続けて、ロールの名前を決めましょう。今回はOS再起動とします。

ロール名の入力画面

続けてサーバーの再起動に必要な権限をロールに設定します。

デフォルトではすべての権限が許可されていますが、サーバーの電源操作に関わる操作のみに関わる操作のみ実施したいので、許可する権限を選択するを選び、サーバー情報一覧を取得するサーバーの電源状態を取得するサーバーを起動するサーバーをシャットダウンするサーバーを強制再起動するの5つを設定します。

サーバー再起動に関わる権限を設定する

あとはロールを追加をクリックし、ロールの作成は完了です。

リソースとロールの追加画面
ロール追加後のロール一覧

ロールの追加が完了すると、ロールの一覧にOS再起動が表示されるはずです。

APIキーの追加

では続けて、OS再起動のロールが利用可能なAPIキーを発行します。APIキー管理、APIキーのタブをクリックし、APIキー一覧の画面まで移動しましょう。その後+APIキーの追加をクリックしましょう。

APIキー追加画面

APIキーに設定するロール、名前の決定画面が出てきますので、APIキーに利用するロールには先に設定したOS再起動を、名前はOS再起動APIキーとしておきます。設定が出来たらAPIキーの追加をクリックし、APIキーの発行に進みます。

APIキーの名前を設定

次の画面で実際のAPIキーが表示されるので、APIキーをコピーしておきましょう!

コマンドでAPIを実行

では続けてAPIキーを利用してサーバーの停止・起動を実施します。

サーバー情報一覧の取得

まずサーバー情報一覧を取得してみます。変数にAPIキーを設定しておきます。

$ export SAKURA_VPS_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxx'

マニュアルに沿って curl で実施してみます。

$ curl -sH "Authorization: Bearer $SAKURA_VPS_TOKEN" \
  -H 'Content-Type: application/json' \
  'https://secure.sakura.ad.jp/vps/api/v7/servers'|jq .

サーバーID("id": zzzzzzzz)、電源の状態("power_status": "power_on")が取得できましたね。

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": zzzzzzzz,
      "name": "ishikari.uozu",
      "description": "",
      "contract": {
        "plan_code": 3440,
        "plan_name": "さくらのVPS(v5)  2G IK01 ストレージ変更オプション付き",
        "service_code": "yyyyyyyyyyyy"
      },
      "cpu_cores": 3,
      "memory_mebibytes": 2048,
      "storage": [
        {
          "port": 0,
          "type": "ssd",
          "size_gibibytes": 200
        }
      ],
      "zone": {
        "code": "is1",
        "name": "石狩第1"
      },
      "options": [],
      "version": "v5",
      "ipv4": {
        "address": "203.0.113.189",
        "netmask": "255.255.254.0",
        "gateway": "203.0.113.1",
        "nameservers": [
          "133.242.0.3",
          "133.242.0.4"
        ],
        "hostname": "ik1-xxx-xxxxxx.vs.sakura.ne.jp",
        "ptr": "ik1-xxx-xxxxxx.vs.sakura.ne.jp"
      },
      "ipv6": {
        "address": "2001:db8:102:2120:153:120:7:189",
        "prefixlen": 64,
        "gateway": "fe80::1",
        "nameservers": [
          "2001:db8::1"
        ],
        "hostname": "xxx-xxxxxx.v6.sakura.ne.jp",
        "ptr": "xxx-xxxxxx.v6.sakura.ne.jp"
      },
      "power_status": "power_on",
      "service_type": "linux",
      "service_status": "in_use",
      "migration_status": null
    }
  ]
}

指定したサーバーの電源状態を取得

サーバーIDを指定することで、サーバの電源状態のみを確認できます、

$ curl -H "Authorization: Bearer $SAKURA_VPS_TOKEN" \
  -H 'Content-Type: application/json' \
  'https://secure.sakura.ad.jp/vps/api/v7/servers/zzzzzzzz/power-status' 
{"status":"power_on"}

サーバーの停止(シャットダウン)

では続けてシャットダウンをしてみます。

curl -X POST -H "Authorization: Bearer $SAKURA_VPS_TOKEN" \
-H 'Content-Type: application/json' \
'https://secure.sakura.ad.jp/vps/api/v7/servers/zzzzzzzz/shutdown'
$ curl -H "Authorization: Bearer $SAKURA_VPS_TOKEN" \
  -H 'Content-Type: application/json' \
  'https://secure.sakura.ad.jp/vps/api/v7/servers/zzzzzzzz/power-status' 
{"status":"power_off"}
VPSコンソール画面の表示

VPSコンソール画面からも、サーバーが停止していることを確認できました。

サーバーの起動

今度はサーバーを起動してみます。

curl -X POST -H "Authorization: Bearer $SAKURA_VPS_TOKEN" \
  -H 'Content-Type: application/json' \
  'https://secure.sakura.ad.jp/vps/api/v7/servers/zzzzzzzz/power-on'
$ curl -H "Authorization: Bearer $SAKURA_VPS_TOKEN" \
  -H 'Content-Type: application/json' \
  'https://secure.sakura.ad.jp/vps/api/v7/servers/zzzzzzzz/power-status' 
{"status":"power_on"}
VPSコンソール画面の表示

起動も問題なく完了しました。

さいごに

今回は、さくらのVPS APIを利用して、サーバーの電源状態確認、シャットダウン、起動を実行してみました。

APIキーとロールを用意しておけば、会員メニューに都度ログインしなくても、curlなどのコマンドからVPSの電源操作を行えます。検証環境の停止・起動や、定型作業の自動化を行いたい場合に便利な機能だと感じました。

一方で、APIキーはサーバー操作が可能な重要な認証情報です。利用する権限は必要最小限に絞り、キーの保管や取り扱いには十分注意する必要があります。

さくらのVPSをスクリプトや外部ツールから操作したい場合は、APIの活用も検討してみるとよさそうです。

さいごまでお読みいただき、ありがとうございました!

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト運用チーム10年目の運用エンジニア
ベーシック試験 | さくらのクラウド検定
AWS Certified Solutions Architect - Associate

目次