some 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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