GMO ConoHa を使ってみる(1) サインアップから API Token 発行まで

www.conoha.jp
5 月にリニューアルされた GMO ConoHa を使ってみました。
OpenStack API 互換だったり時間課金があったりと、VPS というよりは Iaas なクラウドに近い感じです。

サインアップ

アカウント作成

  • https://www.conoha.jp/ にアクセスし、[ お申込み ] をクリック
  • [ メールアドレス ] と [ パスワード ] を入力して、アカウント登録
  • 登録した [ メールアドレス ] と [ パスワード ] でコントロールパネルにログイン

認証・ユーザ情報・支払情報入力

  • [ 電話認証 ] か [ SMS認証 ] で本人確認を行う
    • 電話認証だと、イメージキャラクタである美雲このはから電話がかかってきます*1
  • [ お客様情報 ] 入力
  • [ 支払方法 ] 入力

その他設定

  • アカウント設定から [ 言語設定 ] と [ モード設定 ] を変更します*2
    • 言語設定 : English
    • モード設定 : ConoHa Mode

API 設定

API 設定を行い、API 認証に使用するトークンを取得できるようにします。

  • コントロールパネルにログインし、[ API ] をクリック
  • API User 追加
    • API User 用 Password を入力

トークン取得

トークン取得に必要な情報は以下のものです。

curl -i -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"%username%","password":"%apipass%"},"tenantId":"%tenantid%"}}' \
https://identity.tyo1.conoha.io/v2.0/tokens | tail -n 1 | jq -r '.'

JSON 形式でレスポンスがくるので、jq とかあると楽です。

*1:もちろん電話認証しました!

*2:この辺はお好みで

端末リセット時のエラー (E:failed to mount /cache (invalid argument))

-- Wiping data...
Formatting data...
E:failed to mount /cache (invalid argument)
Formatting cache...
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/log
E:Can't open /cache/recovery/log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_log
E:Can't open /cache/recovery/last_log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_install
E:Can't open /cache/recovery/last_install
Data wipe complete.
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/log
E:Can't open /cache/recovery/log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_log
E:Can't open /cache/recovery/last_log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_install
E:Can't open /cache/recovery/last_install
E:Failed closing /dev/block/platform/msm_sdcc.1/by-name/misc (I/O error)
E:failed to mount /cache (invalid argument)

リカバリモードからの端末リセット、ファクトリリセット時に上記エラーが出た場合、システムボード不具合(ハードウェア不具合)の可能性があります。

Vagrant で仮想マシンを構築する(7) Vagrant プラグイン

Vagrant プラグイン関連のコマンドメモと、便利だと思ったプラグインのまとめです。
プロバイダは VirtualBox です。

プラグイン関連コマンド

  • インストール
$ vagrant plugin install %plugin name%
  • アンインストール
$ vagrant plugin uninstall %plugin name%
  • アップデート
$ vagrant plugin update %plugin name%
$ vagrant plugin list

便利なプラグイン

公開されているプラグイン

sahara

仮想マシンの sandbox モードを有効にするプラグインです。
sandbox モード内で実行した操作はロールバックできるので、ミドルウェアのテストなどに使用できます。

  • インストール
$ vagrant plugin install sahara
  • sandbox モード有効化
$ vagrant sandbox on
$ vagrant sandbox status
[default] Sandbox mode is on

sandbox モード有効化以降の操作は、ロールバック可能です。

$ vagrant sandbox rollback

仮想マシンで実施した変更はロールバックされます。

  • コミット

sandbox モードで実施した変更を反映させるには、コミットを行います。

$ vagrant sandbox commit
  • sandbox モード無効化
$ vagrant sandbox off
$ vagrant sandbox status
[default] Sandbox mode is off

sandbox off でも変更内容がコミットされます。
sandbox モードでの変更内容を破棄したい場合は、"vagrant sandbox rollback" -> "vagrant sandbox off" を実行します。
jedi4ever/sahara · GitHub

vagrant-vbox-snapshot

仮想マシンのスナップショットを取得できるプラグインです。
sahara が作業時の一時的なスナップショットに対して、こちらはポイント毎にスナップショットを取得する場合に使用します。

  • インストール
$ vagrant plugin install vagrant-vbox-snapshot
  • スナップショット取得
$ vagrant snapshot take %snapshot name%
  • 直前のスナップショットを復元
$ vagrant snapshot back
  • 指定したスナップショットを復元
$ vagrant snapshot go %snapshot name%
  • スナップショット削除
$ vagrant snapshot delete %snapshot name%
  • スナップショット一覧
$ vagrant snapshot list
Listing snapshots for 'default':
Name: %snapshot name% (UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) 

dergachev/vagrant-vbox-snapshot · GitHub

vagrant-global-status

ホスト内の仮想マシンのステータスを一覧表示してくれるプラグインです。
プラグインインストール後から起動した仮想マシンが表示されるようになるので、一番最初にインストールしたいプラグインです。

  • インストール
$ vagrant plugin install vagrant-global-status
$ vagrant global-status -a
/path/to/vagrant/vagrant_example02
  default      running      (virtualbox)   2015-01-03 00:25:29 +0900

/path/to/vagrant/vagrant_example01
  default      poweroff     (virtualbox)   2015-01-03 00:26:42 +0900

fgrehm/vagrant-global-status · GitHub

vagrant-omnibus

仮想マシン起動時に、chef client の存在チェックや指定したバージョンをインストールしてくれるプラグインです。

  • インストール
$ vagrant plugin install vagrant-omnibus
  • 設定
Vagrant.configure(2) do |config|
  config.omnibus.chef_version = :latest
end
vagrant-vbguest

VirtualBox Guest Additions をいい感じに自動インストールしてくれるプラグインです。

  • インストール
$ vagrant plugin install vagrant-vbguest
  • 設定
Vagrant.configure("2") do |config|  
  config.vbguest.auto_update = true
end

dotless-de/vagrant-vbguest · GitHub
Vagrant 用仮想マシン (box) の VirtualBox Guest Additions のバージョンアップ (vagrant-vbguest) - jitsu102's blog

Vagrant で仮想マシンを構築する(6) 仮想マシンの設定

Vagrant で起動した仮想マシンのホスト名や cpu 数、メモリサイズなどの設定方法です。
変更頻度が高めの項目に絞っています。
プロバイダは VirtualBox です。

ホスト名

仮想マシン os のホスト名を設定します。

Vagrant.configure(2) do |config|
  config.vm.hostname = "vm-host01"
end

vm

VirtualBoxGUI ツールで表示される vm 名を設定します。

Vagrant.configure(2) do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.name = "vm-host01"
  end
end

cpu 数

仮想マシンの cpu 数(コア数)を設定します。

Vagrant.configure(2) do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.cpus = 2
  end
end

メモリサイズ

仮想マシンのメモリサイズを設定します。

Vagrant.configure(2) do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.memory = 1024
  end
end

その他、設定

VBoxManage modifyvm の項目は設定可能です。

cpu の使用率制限設定は、以下の感じです。

Vagrant.configure(2) do |config|
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
  end
end

config.vm - Vagrantfile - Vagrant Documentation
Configuration - VirtualBox Provider - Vagrant Documentation

Vagrant で仮想マシンを構築する(5) 複数仮想マシンの起動

明けましておめでとうございます。
今年もよろしくお願いします。

引き続き、Vagrant です。
Vagrant では、一つの Vagrantfile で複数仮想マシンを起動することができます。
仮想マシン同士の通信は、プライベートネットワークで行います。*1

複数仮想マシンの起動

config.vm.define で複数マシンを起動します。
使用する box や共有フォルダ、プロビジョニングは、仮想マシン毎に設定可能です。*2

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.define "host01" do |config|
    config.vm.network "private_network", ip: "192.168.56.10"
    config.vm.synced_folder "./data/host01", "/home/vagrant/data"
  end
  config.vm.define "host02" do |config|
    config.vm.network "private_network", ip: "192.168.56.11"
    config.vm.synced_folder "./data/host02", "/home/vagrant/data"
  end
end

複数仮想マシンの制御

上記の設定で vagrant up すると、2 つの仮想マシンが起動します。

$ vagrant status                                                                                     2015-01-01 15:30:50
Current machine states:

host01                    running (virtualbox)
host02                    running (virtualbox)
.....

仮想マシンを制御する、reload、halt、destroy などのコマンドは、定義名(host01, host02) を指定することで仮想マシン毎に実行できます。
定義名を指定しない場合は、全ての仮想マシンに対して実行されます。

(host01 への ssh ログイン)
$ vagrant ssh host01

(host01 再起動)
$ vagrant reload host01

(host01 停止)
$ vagrant halt host01

(host01 削除)
$ vagrant destroy host01

Multi-Machine - Vagrant Documentation

*1:パブリックネットワーク(ブリッジネットワーク)でも仮想ホスト同士の通信はできますが、お手軽なプライベートネットワークを使用します

*2:今回は同じ box を使用しました