テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(akashic report) お試しサーバをVagrantで作れるようにした

akashic-storageを試してほしい. 完璧ではないが, 試すことは出来るレベルになった.

しかし, 試すに当たって, 心の障壁があるだろう.

  • 開発途中のものを自分の環境にいきなりインストールしたくない (システムを破壊されるかも知れないし, 遊んだあとクリーン出来ないかも知れない)
  • サーバのインストール, アクセス用のツール(minio/mc)のインストール・セットアップなど, たらたらやりたくない

Vagrantならば, この心の障壁を取り除ける. そう, Vagrantならね.

今日は, akashic-storageを

  • commons-daemon, jsvcを使ってデーモン化出来るようにした (/etc/init.d/akashic-storage startで起動出来る)
  • Vagrantを使って, jarや各種ファイルのインストール, mcのインストール・セットアップを行うようにした

これによって, vagrant up後にvagrant sshでログすれば, mcコマンドでファイルをput/get出来るようになる. 飽きたらvagrant destroyVMごと消しさればいい.

これが今のプロジェクト構成

.
├── LICENSE
├── README.md
├── build.sbt
├── concept.svg
├── installer
│   ├── akashic-storage
│   ├── compile-jar.sh
│   ├── default.conf
│   ├── install.sh
│   └── setup-mc.py
├── project
│   ├── build.properties
│   ├── plugins.sbt
├── s3-tests
│   ├── run.sh
│   └── s3-tests.conf
├── src
│   ├── main
│   └── test
├── travis-script
│   ├── s3-tests.sh
│   └── sbt-test.sh
└── vagrant-quick-start
    └── Vagrantfile

そして, やることは3つ

  1. installer内に, akashic-storage.jarを作る (sbt assemblyで作ります)
  2. vagrant内で, vagrant upを実行する
  3. ログインして, installer内でsetup-mc.pyを実行する

具体的には,

  1. cd installer; sh compile-jar.sh (sbtがインストールされてることが前提)
  2. cd vagrant-quick-start; vagrant up (この時点でakashic-storageが立ち上がっている)
  3. vagrant sshしてから, cd akashic-storage/installer; python setup-mc.py (mcに認証情報を登録します)

リポジトリはこちら. git clone https://github.com/akiradeveloper/akashic-storageでおk

https://github.com/akiradeveloper/akashic-storage

mcコマンドについてはhelpを見れば分かります. (mc mb akashic-storage/mybucket という感じで使う. akashic-storageというaliasが登録済)

[vagrant@localhost installer]$ mc --help
NAME:
  mc - Minio Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS] [ARGUMENTS...]

COMMANDS:
  ls            List files and folders.
  mb            Make a bucket or folder.
  cat           Display contents of a file.
  pipe          Write contents of stdin to one target. When no target is specified, it writes to stdout.
  share         Generate URL for sharing.
  cp            Copy one or more objects to a target.
  mirror        Mirror folders recursively from a single source to single destination.
  diff          Compute differences between two folders.
  rm            Remove file or bucket [WARNING: Use with care].
  access        Manage bucket access permissions.
  session       Manage saved sessions of cp and mirror operations.
  config        Manage configuration file.
  update        Check for a new software update.
  version       Print version.

GLOBAL FLAGS:
  --help, -h                                    Show help.
  --config-folder, -C "/home/vagrant/.mc"       Path to configuration folder.
  --quiet, -q                                   Suppress chatty console output.
  --no-color                                    Disable color theme.
  --json                                        Enable json formatted output.
  --debug                                       Enable debugging output.

VERSION:
  2016-01-07T19:37:19Z

いいものを作りたい. それだけだ.