some 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +39 -0
- data/VERSION +1 -1
- data/bin/some +12 -11
- data/lib/some.rb +2 -2
- metadata +10 -12
- 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.
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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/
|
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(
|
206
|
-
|
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
|
|
data/lib/some.rb
CHANGED
@@ -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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *52156760
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thor
|
27
|
-
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: *
|
35
|
+
version_requirements: *52156240
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: net-ssh
|
38
|
-
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: *
|
46
|
+
version_requirements: *52155700
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: capistrano
|
49
|
-
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: *
|
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
|