Skip to content
Launch ec2 instances, pronto
Branch: master
Clone or download
Pull request Compare This branch is 60 commits ahead of adamwiggins:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
lib
spec
.gitignore
README.md
Rakefile
VERSION
some.gemspec

README.md

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 ライセンスで公開します。

You can’t perform that action at this time.