some - sumo clone for NIFTY Cloud
概要
adamwiggins/sumo の NIFTY Cloud バージョンです。 NIFTY Cloud 上で手軽にサーバーを立ち上げることができます。
$ some launch
---> Launch instance... 4acef29d (7.9s)
---> Acquire hostname... XXX.XXX.XXX.XXX (79.2s)
---> Wait for ssh... done (0.0s)
Logging you in via ssh. Type 'exit' or Ctrl-D to return to your local system.
------------------------------------------------------------------------------
Enter passphrase for key '/home/tily/.some/keypair.pem':
[root@localhost ~]#
要らなくなったらすぐに削除できます。
$ some terminate XXX.XXX.XXX.XXX
---> Wait to stop... done (16.2s)
XXX.XXX.XXX.XXX scheduled for termination
一覧を取得して SSH ログインしたりも簡単にできます。
$ some list
XXX.XXX.XXX.XXX 21b61298 running
YYY.YYY.YYY.YYY 923d7772 running
ZZZ.ZZZ.ZZZ.ZZZ dec83cd3 running
$ some ssh 21b61298
Enter passphrase for key '/home/tily/.some/keypair.pem':
Last login: Fri Apr 5 16:24:02 2013 from AAA.AAA.AAA.AAA
[root@localhost ~]#
インストール・設定
下記コマンドでインストールできます。
gem install some
インストールが終わったら ~/.sumo/config.yml に設定ファイルを作成しましょう。 最小限下記を書けば使えます。
---
access_key: (ここにアクセスキーを書く)
secret_key: (ここにシークレットキーを書く)
設定できる項目をフルで書くとこんな感じになります。
---
access_key: (デフォルト値なし)
secret_key: (デフォルト値なし)
user: root (デフォルト値)
password: password (デフォルト値)
instance_size: mini (デフォルト値)
ami: 26 (デフォルト値)
availability_zone: west-11 (デフォルト値)
cookbooks_url: (デフォルト値なし、次節参照)
role: (デフォルト値なし、次節参照)
Chef でサービスをインストールする
少し頑張れば vagrant みたいなこともできます。 まずはグローバルからアクセスできる場所に cookbooks.tgz を置きましょう。 例:http://some.ncss.nifty.com/cookbooks.tgz
次に設定ファイル (~/.sumo/config.yml) にロールを定義しておきます。
cookbooks_url: http://some.ncss.nifty.com/cookbooks.tgz
role:
mysql: |
{
"run_list": [
"recipe[mysql::server]"
],
"mysql": {
"server_root_password": "mysql",
"server_debian_password": "mysql",
"server_repl_password": "mysql"
}
}
ここまでやればコマンド一発でサーバー作成・Chef インストール・Chef 実行まで行えます。
$ some launch mysql
---> Launch instance... d7f764b7 (7.6s)
---> Acquire hostname... 175.184.23.139 (89.4s)
---> Wait for ssh... done (0.0s)
---> Bootstrap chef... done (42.8s)
---> Setup mysql... done (195.0s)
なお、上記を個別に実施することも可能です。
$ some launch
---> Launch instance... 923d7772 (8.0s)
---> Acquire hostname... XXX.XXX.XXX.XXX (90.5s)
---> Wait for ssh... done (0.0s)
$ some bootstrap 923d7772
---> Bootstrap chef... done (46.0s)
$ some role mysql 923d7772
---> Setup mysql... done (184.6s)
詳細
- サーバー作成の際に something という名前の SSH キーと FW を作成します
- SSH キーは ~/.some/keypair.pem に保存されます
その他のコマンド
作者が欲しい機能を自己満足で盛り込んでいくコーナー。
some reset
some から作成したインスタンスを全て削除し、some が裏側で作成した something という名前の FW と something という名前のキーペアを削除する。
some cap
some コマンドで作成したインスタンスに対して capistrano を実行できる。
some cap shell
some cap invoke ROLES="server1,server2" COMMAND="hostname"
Capfile は some list -f capfile で参照可能。
some cache
インスタンス一覧を ~/.some/cache にキャッシュする。
some sync
some コマンドで作成した全てのインスタンスで ohai を実行して node 情報を取得し、全てのインスタンスの /var/chef/data_bags/hostname.json に配置する。 chef-solo-search と組み合わせると Chef サーバがなくてもレシピ内で search メソッドが使える。
some batch
some コマンドを一括実行できる。
some start/stop
インスタンスを起動・停止することができる。
some volumes/create_volume/attach_volume/detach_volume/destroy_volume
ディスクを作成・一覧・アタッチ・デタッチ・削除することができる。
TODO
- image_id=17 (Ubuntu 10.04) で bootstrap できない (apt-get update; apt-get install -y curl する必要あり)
- かっこいいロゴを github ページにつける、あるいは github pages を使ってほーむぺーじを作る
- デフォルトの設定ファイルを同梱するようにする
- FW の CIDR に 0.0.0.0/0 以外も設定できるようにする
ライセンス
sumo と同じく MIT ライセンスで公開します。