dolphin 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/README.md +19 -0
- data/lib/dolphin/base.rb +22 -1
- data/lib/dolphin/puma.rb +1 -1
- data/lib/dolphin/setup.rb +4 -1
- data/lib/dolphin/version.rb +1 -1
- data/lib/generators/dolphin/templates/dolphin +19 -2
- 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: 12547564e16718ea3e9836ba2235379f7e7911e2
|
4
|
+
data.tar.gz: 56d227a850dc4aa2002e61b0c04a7037250962b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5d4394fbd05a7f634721d1155f77e0daf7b83c339e423cac74f049ba415e6272fa0452c4fee2462d974d7fa862954716b8fb5297ca08d8d18fa9ba565ceecb0
|
7
|
+
data.tar.gz: f00a9af78d0b52c85eb7ab296908c7f0a088c1e31f6eca739e86b12b6da9c3563b116fc474bc492392666d0f90db0ca7e88853877467e7439694b39e72b548ad
|
data/README.md
CHANGED
@@ -249,6 +249,25 @@ Relevant settings in bin/dolphin are:
|
|
249
249
|
]
|
250
250
|
end
|
251
251
|
|
252
|
+
### Deploy to one specific group
|
253
|
+
|
254
|
+
Sometimes we need to take some actions on only one specific group, which may contains arbitrary number of servers. Just pass the --group (or -g for short) option when issue command. Notice that in @group_hash, we difine a key-value pair for each group. So we only need to pass the key for that specific group as the -g option.
|
255
|
+
|
256
|
+
bin/dolphin nginx conf -t q2
|
257
|
+
|
258
|
+
Relevant settings in bin/dolphin are:
|
259
|
+
|
260
|
+
@group_hash = {
|
261
|
+
mongo: [:mongo1, :mongo2, :mongo3, ],
|
262
|
+
java: [:graylog, :elasticsearch, ],
|
263
|
+
app: [:app1, :app2, ],
|
264
|
+
}
|
265
|
+
|
266
|
+
# apply to one target group
|
267
|
+
if options[:group]
|
268
|
+
@servers = @group_hash[options[:group].to_sym].map {|item| @server_hash[item]}
|
269
|
+
end
|
270
|
+
|
252
271
|
## Extend with custom modules
|
253
272
|
|
254
273
|
To extend dolphin's functionality with your custom modules is easy. It is Ruby anyway. For example, to add Centos related functions:
|
data/lib/dolphin/base.rb
CHANGED
@@ -14,6 +14,8 @@ class Dolphin::Base < Thor
|
|
14
14
|
class_option :env, aliases: '-e', type: :string, default: 'alpha'
|
15
15
|
# deploy to one specific target server
|
16
16
|
class_option :target, aliases: '-t', type: :string, default: nil
|
17
|
+
# deploy to one specific server group
|
18
|
+
class_option :group, aliases: '-g', type: :string, default: nil
|
17
19
|
# deploy to localhost
|
18
20
|
class_option :local, aliases: '-l', type: :boolean, default: false
|
19
21
|
|
@@ -139,7 +141,7 @@ class Dolphin::Base < Thor
|
|
139
141
|
end
|
140
142
|
|
141
143
|
# has to explicitly call shell startup script
|
142
|
-
ch.send_data "source ~/.
|
144
|
+
ch.send_data "source ~/.bashrc\n"
|
143
145
|
|
144
146
|
# pick up ruby
|
145
147
|
ch.send_data "chruby >& /dev/null\n"
|
@@ -169,4 +171,23 @@ class Dolphin::Base < Thor
|
|
169
171
|
puts "\n\n"
|
170
172
|
end
|
171
173
|
|
174
|
+
def upload(source, dest, target_server=nil)
|
175
|
+
if target_server # solo
|
176
|
+
tracks = 1
|
177
|
+
target = [target_server]
|
178
|
+
else
|
179
|
+
# use Parallel to execute commands on multiple servers in parallel
|
180
|
+
tracks = @servers.size
|
181
|
+
# 3 threads maximum
|
182
|
+
tracks = 3 if tracks > 3
|
183
|
+
target = @servers
|
184
|
+
end
|
185
|
+
|
186
|
+
Parallel.map(target, in_threads: tracks) do |server|
|
187
|
+
command = "scp #{source} #{@user}@#{server}:#{dest}"
|
188
|
+
puts command
|
189
|
+
raise unless system(command, out: $stdout, err: :out)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
172
193
|
end
|
data/lib/dolphin/puma.rb
CHANGED
data/lib/dolphin/setup.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
class Dolphin::Setup < Dolphin::Base
|
3
3
|
|
4
4
|
desc "chruby", "install/update chruby"
|
5
|
-
def chruby(version='v0.3.
|
5
|
+
def chruby(version='v0.3.7')
|
6
6
|
menu = [
|
7
7
|
"
|
8
8
|
# git clone
|
@@ -16,6 +16,9 @@ class Dolphin::Setup < Dolphin::Base
|
|
16
16
|
git checkout #{version}
|
17
17
|
# install
|
18
18
|
sudo make install
|
19
|
+
# system wise
|
20
|
+
# sudo echo '[ -n \"$BASH_VERSION\" ] || [ -n \"$ZSH_VERSION\" ] || return' | sudo tee /etc/profile.d/chruby.sh
|
21
|
+
# sudo echo 'source /usr/local/share/chruby/chruby.sh' | sudo tee -a /etc/profile.d/chruby.sh
|
19
22
|
",
|
20
23
|
]
|
21
24
|
|
data/lib/dolphin/version.rb
CHANGED
@@ -56,9 +56,21 @@ class Dolphin::Base
|
|
56
56
|
}
|
57
57
|
when 'production'
|
58
58
|
@server_hash = {
|
59
|
-
|
60
|
-
|
59
|
+
app1: 'app1.best_app.com',
|
60
|
+
app2: 'app2.best_app.com',
|
61
|
+
mongo1: 'mongo1.best_app.com',
|
62
|
+
mongo2: 'mongo2.best_app.com',
|
63
|
+
mongo3: 'mongo3.best_app.com',
|
64
|
+
graylog: 'graylog.best_app.com',
|
65
|
+
elasticsearch: 'elasticsearch.best_app.com',
|
61
66
|
}
|
67
|
+
|
68
|
+
@group_hash = {
|
69
|
+
mongo: [:mongo1, :mongo2, :mongo3, ],
|
70
|
+
java: [:graylog, :elasticsearch, ],
|
71
|
+
app: [:app1, :app2, ],
|
72
|
+
}
|
73
|
+
|
62
74
|
else # @env == 'alpha'
|
63
75
|
# list of servers for this environment
|
64
76
|
@server_hash = {
|
@@ -88,6 +100,11 @@ class Dolphin::Base
|
|
88
100
|
]
|
89
101
|
end
|
90
102
|
|
103
|
+
# apply to one target group
|
104
|
+
if options[:group]
|
105
|
+
@servers = @group_hash[options[:group].to_sym].map {|item| @server_hash[item]}
|
106
|
+
end
|
107
|
+
|
91
108
|
# ===================================
|
92
109
|
# settings to avoid simultaneous deployments
|
93
110
|
# ===================================
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dolphin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neng Xu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|