some 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/README.md +39 -0
  2. data/VERSION +1 -1
  3. data/bin/some +12 -11
  4. data/lib/some.rb +2 -2
  5. metadata +10 -12
  6. data/TODO +0 -33
data/README.md CHANGED
@@ -107,11 +107,50 @@ NIFTY Cloud 上で手軽にサーバーを立ち上げることができます
107
107
  * サーバー作成の際に something という名前の SSH キーと FW を作成します
108
108
  * SSH キーは ~/.some/keypair.pem に保存されます
109
109
 
110
+ ## その他のコマンド
111
+
112
+ 作者が欲しい機能を自己満足で盛り込んでいくコーナー。
113
+
114
+ ### some reset
115
+
116
+ some から作成したインスタンスを全て削除し、some が裏側で作成した something という名前の FW と something という名前のキーペアを削除する。
117
+
118
+ ### some cap
119
+
120
+ some コマンドで作成したインスタンスに対して capistrano を実行できる。
121
+
122
+ some cap shell
123
+ some cap invoke ROLES="server1,server2" COMMAND="hostname"
124
+
125
+ Capfile は some list -f capfile で参照可能。
126
+
127
+ ### some cache
128
+
129
+ インスタンス一覧を ~/.some/cache にキャッシュする。
130
+
131
+ ### some sync
132
+
133
+ some コマンドで作成した全てのインスタンスで ohai を実行して node 情報を取得し、全てのインスタンスの /var/chef/data_bags/hostname.json に配置する。
134
+ [chef-solo-search](https://github.com/edelight/chef-solo-search) と組み合わせると Chef サーバがなくてもレシピ内で search メソッドが使える。
135
+
136
+ ### some batch
137
+
138
+ some コマンドを一括実行できる。
139
+
140
+ ### some start/stop
141
+
142
+ インスタンスを起動・停止することができる。
143
+
144
+ ### some volumes/create_volume/attach_volume/detach_volume/destroy_volume
145
+
146
+ ディスクを作成・一覧・アタッチ・デタッチ・削除することができる。
147
+
110
148
  ## TODO
111
149
 
112
150
  * image_id=17 (Ubuntu 10.04) で bootstrap できない (apt-get update; apt-get install -y curl する必要あり)
113
151
  * かっこいいロゴを github ページにつける、あるいは github pages を使ってほーむぺーじを作る
114
152
  * デフォルトの設定ファイルを同梱するようにする
153
+ * FW の CIDR に 0.0.0.0/0 以外も設定できるようにする
115
154
 
116
155
  ## ライセンス
117
156
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
data/bin/some CHANGED
@@ -8,6 +8,7 @@ require 'thor'
8
8
  class CLI < Thor
9
9
  desc "launch [<role>]", "launch an instance as role, or omit to ssh to vanilla instance"
10
10
  option :name, :type => :string, :aliases => '-n', :desc => 'instance name'
11
+ option :skip, :aliases => '-s', :desc => 'skip ssh login'
11
12
  def launch(role=nil)
12
13
  id = task("Launch instance") { some.launch(options[:name]) }
13
14
  host = task("Acquire hostname") { some.wait_for_hostname(id) }
@@ -15,11 +16,13 @@ class CLI < Thor
15
16
 
16
17
  if role
17
18
  task("Bootstrap chef") { some.bootstrap_chef(host) }
18
- task("Setup #{role}") { some.setup_role(host, role) }
19
- else
20
- puts "\nLogging you in via ssh. Type 'exit' or Ctrl-D to return to your local system."
21
- puts '-' * 78
22
- connect_ssh(host)
19
+ task("Setup #{role}") { some.setup_role(host, role, id) }
20
+ else
21
+ unless options[:skip]
22
+ puts "\nLogging you in via ssh. Type 'exit' or Ctrl-D to return to your local system."
23
+ puts '-' * 78
24
+ connect_ssh(host)
25
+ end
23
26
  end
24
27
  end
25
28
 
@@ -42,7 +45,7 @@ class CLI < Thor
42
45
  def role(role, id=nil)
43
46
  inst = some.find(id) || some.running.first || abort("No running instances")
44
47
  task "Setup #{role}" do
45
- some.setup_role(inst[:hostname], role)
48
+ some.setup_role(inst[:hostname], role, inst[:instance_id])
46
49
  end
47
50
  end
48
51
 
@@ -194,7 +197,7 @@ class CLI < Thor
194
197
  task("Wait to stop") { some.wait_to_stop(inst[:instance_id]) }
195
198
  end
196
199
 
197
- device ||= '/dev/sdc1'
200
+ device ||= '/dev/sdb'
198
201
  task("Attach #{vol_id} to #{inst_id} as #{device}") do
199
202
  some.attach(vol_id, inst[:instance_id], device)
200
203
  end
@@ -202,10 +205,8 @@ class CLI < Thor
202
205
  some.reload
203
206
  inst = some.find(inst[:instance_id])
204
207
  if inst[:status] == 'stopped' && orig_status == 'running'
205
- task("Wait to start") do
206
- task('Start instance') { some.start(inst[:instance_id]); "done" }
207
- task("Wait to start") { some.wait_for_hostname(inst[:instance_id]) }
208
- end
208
+ task('Start instance') { some.start(inst[:instance_id]); "done" }
209
+ task("Wait to start") { some.wait_for_hostname(inst[:instance_id]) }
209
210
  end
210
211
  end
211
212
 
@@ -285,9 +285,9 @@ class Some
285
285
  ssh(hostname, commands)
286
286
  end
287
287
 
288
- def setup_role(hostname, role)
288
+ def setup_role(hostname, role, inst_id)
289
289
  dna = JSON.parse(config['role'][role])
290
- dna.update("some" => {"instances" => list})
290
+ dna.update("some" => {"hostname" => inst_id, "instances" => list})
291
291
  commands = [
292
292
  "echo \'#{JSON.pretty_generate(dna)}\' > /etc/chef/dna.json",
293
293
  "chef-solo -r #{config['cookbooks_url']}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: some
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-14 00:00:00.000000000Z
12
+ date: 2013-04-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nifty-cloud-sdk
16
- requirement: &199117720 !ruby/object:Gem::Requirement
16
+ requirement: &52156760 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - =
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.11.beta1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *199117720
24
+ version_requirements: *52156760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thor
27
- requirement: &199117200 !ruby/object:Gem::Requirement
27
+ requirement: &52156240 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *199117200
35
+ version_requirements: *52156240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: net-ssh
38
- requirement: &199116680 !ruby/object:Gem::Requirement
38
+ requirement: &52155700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *199116680
46
+ version_requirements: *52155700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: capistrano
49
- requirement: &199116180 !ruby/object:Gem::Requirement
49
+ requirement: &52155180 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *199116180
57
+ version_requirements: *52155180
58
58
  description: sumo clone for NIFTY Cloud
59
59
  email: tidnlyam@gmail.com
60
60
  executables:
@@ -62,11 +62,9 @@ executables:
62
62
  extensions: []
63
63
  extra_rdoc_files:
64
64
  - README.md
65
- - TODO
66
65
  files:
67
66
  - README.md
68
67
  - Rakefile
69
- - TODO
70
68
  - VERSION
71
69
  - bin/some
72
70
  - lib/some.rb
data/TODO DELETED
@@ -1,33 +0,0 @@
1
- * some コマンドがどんどん便利になっていく
2
-
3
- 自分で欲しい機能をガンガン盛り込んでいったら、便利すぎて手放せない感じになってきた。
4
-
5
- ** some reset
6
-
7
- some コマンドで作成したすべてのインスタンス・FW・キーを削除する。
8
-
9
- ** some cap
10
-
11
- some コマンドで作成したインスタンスに対して capistrano を実行できる。
12
-
13
- some list
14
- some cap invoke ROLES="server1,server2" COMMAND="hostname"
15
-
16
- ** some cache
17
-
18
- インスタンス一覧を ~/.some/cache にキャッシュする。
19
-
20
- ** some sync
21
-
22
- some コマンドで作成したすべてのインスタンスから ohai 情報を取得し、
23
- すべてのインスタンスの /var/chef/data_bags/hostname.json に配置する。
24
- chef-solo-search と組み合わせると Chef サーバがなくてもレシピで search が使える。
25
- munin とかで使うと便利。
26
-
27
- ** some batch
28
-
29
- some コマンドを一括実行できる。
30
-
31
- ** some start/stop
32
-
33
- ** some volumes/create_volume/attach_volume/detach_volume