ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

go-vultrというのを書いた

はい梅雨きらいです、マコピーです

結構前から作っていたんですけれど、最近公開していてそれを放置していたのでちょっと紹介させていただきます。

mackee/go-vultr · GitHub

何をやるもの?

vultr というVPSサービスがございます。詳細に関しては以下の記事を参照していただきたく。

新しいVPSのVULTR、東京リージョンはじまった - uzullaがブログ

そんでもって、こいつはDigitalOceanのようにインスタンスを立てたり消したり操作するAPIがあるのですが、それをコマンドから立たけるようにしたのがgo-vultrです。

インストール方法

# あらかじめgoは入れておいてください
$ go get github.com/mackee/go-vultr
$ go install github.com/mackee/go-vultr/vultr

依存にもろもろ入っているので、それは適宜入れると良い。

使い方

vultrに登録後にhttps://my.vultr.com/settings/にアクセスしていただき、ログインしてから下の方にずーっと行くと、Your API Keyというやつがあるのでソレをコピっておきます。
f:id:mackee_w:20140607153339p:plain

で、おもむろにコマンドを叩きます。gocode/binとかにパスは通しておいてね><

$ vultr list
your api key(https://my.vultr.com/settings API Information):********(さっきコピっておいたAPI Key)
2014/06/07 17:20:49 endpoint: https://api.vultr.com/
2014/06/07 17:20:50 200 OK
[]

持っているインスタンスがないのでこんなかんじです。これで正常です。
で、このあと皆さん課金して頂けましたら(課金しなくても今は$10つかえるらしいですよ!!!)とりあえずインスタンス立ててみましょう。

$ vultr os
...

とやると使えるOSのリストがだらだらーってJSONではかれるわけですが多すぎるので何がなんだかわかりません。なのでjqを使って探してみます。

$ vultr os | jq '. | to_entries | map(select(.value.family == "ubuntu" and .value.arch == "x64"))'
2014/06/07 17:29:28 endpoint: https://api.vultr.com/
2014/06/07 17:29:29 200 OK
[
  {
    "value": {
      "windows": false,
      "family": "ubuntu",
      "arch": "x64",
      "name": "Ubuntu 12.04 x64"
    },
    "key": "128"
  },
  {
    "value": {
      "windows": false,
      "family": "ubuntu",
      "arch": "x64",
      "name": "Ubuntu 12.10 x64"
    },
    "key": "129"
  },
  {
    "value": {
      "windows": false,
      "family": "ubuntu",
      "arch": "x64",
      "name": "Ubuntu 13.10 x64"
    },
    "key": "131"
  },
  {
    "value": {
      "windows": false,
      "family": "ubuntu",
      "arch": "x64",
      "name": "Ubuntu 14.04 x64"
    },
    "key": "160"
  }
]

vultrのAPIは{ "なんかのID" : {...} }みたいなあんまり見ない形式なのでto_entriesでゴニョってやる必要があります。
というわけでubuntuかつx64のOSを探してきました。
最新版を使いたいのでUbuntu 14.04 x64のkeyのIDである"160"をメモっておきます

次はリージョン

$ vultr regions | jq '. | to_entries | map(select(.value.name == "Tokyo"))'
2014/06/07 17:32:26 endpoint: https://api.vultr.com/
2014/06/07 17:32:27 200 OK
[
  {
    "value": {
      "state": "",
      "continent": "Asia",
      "country": "JP",
      "name": "Tokyo"
    },
    "key": "25"
  }
]

やっぱ近い所が良いのでTokyoですね! これも"25"をメモっておきます

最後にVPSプランです。インスタンスの性能とかですね

$ vultr plans | jq '. | to_entries | map(select(.value.price_per_month == "5.00" and .value.ram == "768" and .value.bandwidth == "0.10"))'
2014/06/07 17:34:34 endpoint: https://api.vultr.com/
2014/06/07 17:34:35 200 OK
[
  {
    "value": {
      "windows": false,
      "price_per_month": "5.00",
      "bandwidth_gb": "102.4",
      "bandwidth": "0.10",
      "disk": "15",
      "ram": "768",
      "vcpu_count": "1",
      "name": "768 MB RAM,15 GB SSD,0.10 TB BW"
    },
    "key": "31"
  },
  {
    "value": {
      "windows": false,
      "price_per_month": "5.00",
      "bandwidth_gb": "102.4",
      "bandwidth": "0.10",
      "disk": "15",
      "ram": "768",
      "vcpu_count": "1",
      "name": "768 MB RAM,15 GB SSD,0.10 TB BW, Custom ISO"
    },
    "key": "52"
  }
]

一番安いやつ(月額あたり$5)かつメモリが768MBで帯域が0.10Tのやつを出してきています。Tokyoリージョンは0.10Tのしか使えないっぽいのでこういう条件です。
今回はCustomISOではないので"31"をメモ。

さて、準備が整ったので起動します!

$ vultr create --osid 160 --dcid 25 --vpsplanid 31
2014/06/07 17:38:42 endpoint: https://api.vultr.com/
2014/06/07 17:38:43 200 OK
{
    "SUBID": *******
}

こんなのが出ます。で、ココで先ほどのlistコマンドを打つと

$ vultr list
2014/06/07 17:39:34 endpoint: https://api.vultr.com/
2014/06/07 17:39:35 200 OK
{
    "******": {
        "os": "Ubuntu 14.04 x64",
        "ram": "768 MB",
        "disk": "Virtual 15 GB",
        "main_ip": "********",
        "vcpu_count": "1",
        "location": "Tokyo",
        "default_password": "********",
        "date_created": "2014-06-07 04:38:43",
        "pending_charges": "0.01",
        "status": "active",
        "cost_per_month": "5.00",
        "current_bandwidth_gb": 0,
        "allowed_bandwidth_gb": "100",
        "netmask_v4": "255.255.255.0",
        "gateway_v4": "****",
        "power_status": "running",
        "VPSPLANID": "31"
    }
}

という感じで出てくるわけですね〜。
vultrだいぶ男気溢れる感じでpublic keyを登録する感じではなくなんかrootのデフォルトパスワードを発行するからこれでどうにかしろという感じなので、それで入ります。

で、使い終わったら

$ vultr destroy *****(vultrのlistのキーになっている数字)

でインスタンスを落とすことが出来ます。

あとvultr sshというコマンドもあるのですが、こいつは挙動不審なのでExperimentalです。試さないでください

以上VPSライフでした! 次の記事はスナップショット機能とかCustomISOを使った話をします!