dolphin 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dolphin.rb +28 -77
- data/lib/dolphin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96307e5f4700eaa30d22be8103a85ddcf32c8132
|
4
|
+
data.tar.gz: fc210b44ca75f5683e537f271063a15a373bca0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 546c32db70818adbf42cc99a2959d6613a5bfd354ce052040e12e8818a1a885fd521bdff61491718aa8752184c4d03a2cd5bdf41012369e01cb5f21d5e7ad8c5
|
7
|
+
data.tar.gz: 7ae901e6f2bda4e7c9e546c7902fbd3aabdcdce0efaba45f60e2b7d67e862a873f631e5df601b57c60991c6cff4dd418f31e29a6cc97a79eca247287cc83a7e3
|
data/lib/dolphin.rb
CHANGED
@@ -33,25 +33,21 @@ module Dolphin
|
|
33
33
|
|
34
34
|
end
|
35
35
|
|
36
|
-
def parse_commands(menu
|
36
|
+
def parse_commands(menu)
|
37
37
|
# Helper method to parse a list of text menu of possible commands,
|
38
38
|
# which may contain empty lines or commented out with #
|
39
|
-
# commands
|
39
|
+
# commands can be separated into groups
|
40
40
|
|
41
41
|
commands = []
|
42
|
-
menu.each do |
|
42
|
+
menu.each do |group|
|
43
43
|
buffer = []
|
44
|
-
|
44
|
+
group.split(/\r?\n/).each do |line|
|
45
45
|
line = line.strip
|
46
46
|
unless line.empty? or line.start_with?('#') # empty or commented out
|
47
47
|
buffer << line
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
51
|
-
commands << buffer.join('; ')
|
52
|
-
else
|
53
|
-
commands.push(*buffer)
|
54
|
-
end
|
50
|
+
commands.push(*buffer)
|
55
51
|
end
|
56
52
|
commands
|
57
53
|
end
|
@@ -64,54 +60,7 @@ module Dolphin
|
|
64
60
|
end
|
65
61
|
end
|
66
62
|
|
67
|
-
def ssh_exec(command, &block)
|
68
|
-
status = nil
|
69
|
-
output = ''
|
70
|
-
|
71
|
-
channel = ssh_connection.open_channel do |chan|
|
72
|
-
chan.exec(command) do |ch, success|
|
73
|
-
puts "#{'!'*10} command failed: #{command}" unless success
|
74
|
-
# ch.request_pty
|
75
|
-
|
76
|
-
ch.on_data do |c, data|
|
77
|
-
output << data
|
78
|
-
yield(c, :stdout, data)
|
79
|
-
end
|
80
|
-
|
81
|
-
ch.on_extended_data do |c, type, data|
|
82
|
-
output << data
|
83
|
-
yield(c, :stderr, data)
|
84
|
-
end
|
85
|
-
|
86
|
-
ch.on_request "exit-status" do |c, data|
|
87
|
-
status = data.read_long
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
channel.wait
|
93
|
-
[status, output]
|
94
|
-
end
|
95
|
-
|
96
63
|
def execute(menu)
|
97
|
-
# execute commands defined in menu
|
98
|
-
commands = parse_commands(menu, true)
|
99
|
-
|
100
|
-
puts "Executing on [#{@host}]"
|
101
|
-
commands.each do |command|
|
102
|
-
puts "\n#{'='*60}\n#{command}\n...... =>\n\n"
|
103
|
-
|
104
|
-
status, output = ssh_exec command do |ch, stream, data|
|
105
|
-
case stream
|
106
|
-
when :stdout then $stdout.print data
|
107
|
-
when :stderr then $stderr.print data
|
108
|
-
end
|
109
|
-
ch.send_data(askpass) if data =~ /^sudo password: /
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def run(menu)
|
115
64
|
# execute commands defined in menu
|
116
65
|
commands = parse_commands(menu)
|
117
66
|
puts "#{'*'*10}Executing commands#{'*'*10}\n"
|
@@ -120,14 +69,14 @@ module Dolphin
|
|
120
69
|
end
|
121
70
|
puts "#{'='*60}\n"
|
122
71
|
|
123
|
-
# use Parallel to
|
72
|
+
# use Parallel to execute commands on multiple servers in parallel
|
124
73
|
tracks = @servers.size
|
125
74
|
# 3 threads maximum
|
126
75
|
tracks = 3 if tracks > 3
|
127
76
|
# record output to display at the end
|
128
77
|
output = {}
|
129
78
|
|
130
|
-
Parallel.map(@servers, in_threads:
|
79
|
+
Parallel.map(@servers, in_threads: tracks) do |server|
|
131
80
|
session = ssh_connection(server)
|
132
81
|
output[server] = [] # output from this server
|
133
82
|
|
@@ -198,10 +147,12 @@ module Dolphin
|
|
198
147
|
def chruby
|
199
148
|
menu = [
|
200
149
|
"
|
201
|
-
#
|
202
|
-
|
203
|
-
|
204
|
-
cd chruby
|
150
|
+
# git clone
|
151
|
+
if [ ! -d 'chruby' ]; then git clone https://github.com/postmodern/chruby.git ; fi
|
152
|
+
# checkout tag
|
153
|
+
cd chruby
|
154
|
+
git checkout v0.3.5
|
155
|
+
# install
|
205
156
|
sudo make install
|
206
157
|
",
|
207
158
|
]
|
@@ -267,7 +218,7 @@ module Dolphin
|
|
267
218
|
",
|
268
219
|
]
|
269
220
|
|
270
|
-
|
221
|
+
execute menu
|
271
222
|
end
|
272
223
|
|
273
224
|
desc "rvm", "remove rvm"
|
@@ -279,7 +230,7 @@ module Dolphin
|
|
279
230
|
",
|
280
231
|
]
|
281
232
|
|
282
|
-
|
233
|
+
execute menu
|
283
234
|
end
|
284
235
|
|
285
236
|
desc "apache", "remove apache"
|
@@ -292,7 +243,7 @@ module Dolphin
|
|
292
243
|
",
|
293
244
|
]
|
294
245
|
|
295
|
-
|
246
|
+
execute menu
|
296
247
|
end
|
297
248
|
|
298
249
|
desc "git", "install latest git"
|
@@ -318,7 +269,7 @@ module Dolphin
|
|
318
269
|
",
|
319
270
|
]
|
320
271
|
|
321
|
-
|
272
|
+
execute menu
|
322
273
|
end
|
323
274
|
|
324
275
|
end
|
@@ -342,7 +293,7 @@ module Dolphin
|
|
342
293
|
",
|
343
294
|
]
|
344
295
|
|
345
|
-
|
296
|
+
execute menu
|
346
297
|
end
|
347
298
|
|
348
299
|
desc "conf", "config nginx"
|
@@ -353,7 +304,7 @@ module Dolphin
|
|
353
304
|
",
|
354
305
|
]
|
355
306
|
|
356
|
-
|
307
|
+
execute menu
|
357
308
|
end
|
358
309
|
|
359
310
|
desc "start", "start nginx"
|
@@ -365,7 +316,7 @@ module Dolphin
|
|
365
316
|
",
|
366
317
|
]
|
367
318
|
|
368
|
-
|
319
|
+
execute menu
|
369
320
|
end
|
370
321
|
|
371
322
|
desc "stop", "stop nginx"
|
@@ -377,7 +328,7 @@ module Dolphin
|
|
377
328
|
",
|
378
329
|
]
|
379
330
|
|
380
|
-
|
331
|
+
execute menu
|
381
332
|
end
|
382
333
|
|
383
334
|
desc "restart", "restart nginx"
|
@@ -389,7 +340,7 @@ module Dolphin
|
|
389
340
|
",
|
390
341
|
]
|
391
342
|
|
392
|
-
|
343
|
+
execute menu
|
393
344
|
end
|
394
345
|
|
395
346
|
end
|
@@ -407,7 +358,7 @@ module Dolphin
|
|
407
358
|
",
|
408
359
|
]
|
409
360
|
|
410
|
-
|
361
|
+
execute menu
|
411
362
|
end
|
412
363
|
|
413
364
|
desc "go", "normal deploy procedure"
|
@@ -432,7 +383,7 @@ module Dolphin
|
|
432
383
|
",
|
433
384
|
]
|
434
385
|
|
435
|
-
|
386
|
+
execute menu
|
436
387
|
end
|
437
388
|
|
438
389
|
end
|
@@ -455,7 +406,7 @@ module Dolphin
|
|
455
406
|
",
|
456
407
|
]
|
457
408
|
|
458
|
-
|
409
|
+
execute menu
|
459
410
|
end
|
460
411
|
|
461
412
|
end
|
@@ -473,7 +424,7 @@ module Dolphin
|
|
473
424
|
",
|
474
425
|
]
|
475
426
|
|
476
|
-
|
427
|
+
execute menu
|
477
428
|
end
|
478
429
|
|
479
430
|
desc "stop", "stop puma"
|
@@ -485,7 +436,7 @@ module Dolphin
|
|
485
436
|
",
|
486
437
|
]
|
487
438
|
|
488
|
-
|
439
|
+
execute menu
|
489
440
|
end
|
490
441
|
|
491
442
|
desc "restart", "restart puma"
|
@@ -498,7 +449,7 @@ module Dolphin
|
|
498
449
|
",
|
499
450
|
]
|
500
451
|
|
501
|
-
|
452
|
+
execute menu
|
502
453
|
end
|
503
454
|
|
504
455
|
end
|
data/lib/dolphin/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dolphin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- |
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|