conoha-ojs
Goの習作ということで、ConoHaオブジェクトストレージ用のコマンドラインツール conoha-ojs を作ってみました。もともと社内の検証用に作っていたツールに、いくつかの機能を追加してドキュメントとヘルプを用意したものです。
使い方やインストール方法はGitHubにあります。
ConoHaオブジェクトストレージは、OpenStack Swiftベースのオブジェクトストレージです。一応SwiftにはオフィシャルにPython実装のCLIツールが用意されています。これは非常に良くできているのですが、コマンドを実行する度に認証を行うので遅かったり、Pythonの環境を用意しないと行けなかったりと、いろいろ不便を感じていました。
Chapter 10. Object Storage command-line client
conoha-ojsは特徴として、
- ConoHaオブジェクトストレージで使える機能を一通りカバーしています
- Goで実装されているため、実行ファイルは一つでインストールが容易です
- 2.と同じ理由で、Windows, MacOSX, Linuxなど、だいたいどの環境でも動作すると思います
- 認証情報をファイルに保持します。コマンド実行の度に認証情報を設定する必要がありません
- 他のOpenStack Swiftで構築されたシステムに対しても動作するかもしれません(予定)
となっています。
swiftコマンドのように多機能ではありませんが、一般的に使う機能はサポートしています。またGoの特徴でバイナリ一つで動作するので、ポータビリティが高いです。お手軽に使うには良いと思います。
クイックスタート
まずGitHubのREADME.mdにインストール方法が書いてあるので、その通りにインストールします。MacOSXとLinuxはワンライナーでインストールできるのでとても簡単です。
conoha-ojsコマンドを実行すると、使い方が表示されます。
$ conoha-ojs
Usage: conoha-ojs COMMAND [OPTIONS]
A CLI-tool for ConoHa Object Storage.
Commands:
auth Authenticate a user.
list List a container or objects within a container.
stat Show informations for container or object.
upload Upload files or directories to a container.
download Download objects from a container.
delete Delete a container or objects within a container.
post Update meta datas for the container or objects;
create containers if not present.
deauth Remove an authentication file (~/.conoha-ojs) from a local machine.
version Print version.
最初に実行するのはauthサブコマンドです。このコマンドでオブジェクトストレージに認証を行います。username, passwordは、ConoHaコントロールパネルで作成したAPIユーザ名とパスワードです。tenant-id(テナントID)はコントロールパネル上で確認できます。
$ conoha-ojs auth -u [username] -p [password] -t [tenant-id]
実行してエラーが出なければ成功です。これですべてのコマンドが使えるようになりました。
さっそくpostサブコマンドでコンテナを作成してみます。
$ conoha-ojs post test-container
エラーが出なければ成功です。listサブコマンドで確認してみましょう。
$ conoha-ojs list
test-container
正しくコンテナが作成されていますね。
コンテナの情報を見る場合はstatサブコマンドを使います。
conoha-ojs stat test-container
Container: test-container
Objects: 0
Bytes: 0
Read ACL:
Write ACL:
Accept-Ranges: bytes
X-Storage-Policy: Policy-0
Content-Type: text/plain; charset=utf-8
X-Timestamp: 1420380154.33451
X-Trans-Id: txfe3701dd91d145ba8c67b-0054a94852
Date: Sun, 04 Jan 2015 14:04:02 GMT
Content-Length: 0
コンテナにファイルをアップロードするにはuploadサブコマンドを使います
$ conoha-ojs upload test-container hello.txt
INFO[0000] hello.txt (content-type: text/plain; charset=utf-8) was uploaded.
一方、ダウンロードする場合はdownloadサブコマンドを使います。
$ conoha-ojs download test-container/hello.txt
INFO[0000] test-container/hello.txt download complete.
感想
- コマンドラインツール作るにはGoは便利すぎる。
- Windows, MacOSX, Linuxのクロスコンパイルがあっさりできたのには驚いた。(僕はちょっとスクリプト書いただけ)
- オブジェクトストレージは便利だからもっと使われてもいいと思う。
- 正直swiftコマンドはあまり使い勝手良くない気がする。