ssp 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ssp/application/chef.rb +44 -9
- data/lib/ssp/application/remote.rb +1 -1
- data/lib/ssp/version.rb +1 -1
- metadata +3 -3
data/lib/ssp/application/chef.rb
CHANGED
@@ -25,20 +25,53 @@ class SSP::App::Chef < Thor
|
|
25
25
|
|
26
26
|
desc "deploy APP", "Runs chef-client with deployment enabled for the application on the right node"
|
27
27
|
method_options %w( production -P ) => false, %w( migrate -m ) => true,
|
28
|
-
%w( rollback -r
|
28
|
+
%w( rollback -r) => false, %w( force -f ) => false
|
29
|
+
method_option :revision, :aliases => "-R",
|
30
|
+
:desc => "Revision to deploy to. Previous relative release (1..4) or specific revision. In rollback mode (-r) this defaults to 1."
|
29
31
|
def deploy(app)
|
30
32
|
if options[:ssh_user] == "root"
|
31
33
|
raise Thor::Error, "You cannot deploy directly with the root user, use the -u option to specify your user"
|
32
34
|
end
|
33
35
|
chef_config
|
34
36
|
node = "#{options[:production] ? "#{app}-app-01" : "sage"}.sspti.me"
|
35
|
-
|
37
|
+
debug_log = "/tmp/#{app}_deploy_chef_run.#{Time.now.strftime("%Y%m%d%H%M")}.log"
|
38
|
+
command = "sudo chef-client -V -l debug -L #{debug_log} | grep --line-buffered '\\[[^]]*\\] [A-Z]*:' | grep -v DEBUG:"
|
36
39
|
|
37
40
|
env = options[:production] ? "production" : "staging"
|
38
|
-
|
39
|
-
|
41
|
+
bag_override = { :migrate => options[:migrate] }
|
42
|
+
case rev = options[:revision] || ("1" if options[:rollback])
|
43
|
+
when *%w(1 2 3 4)
|
44
|
+
all_releases = JSON.parse(%x{ssh #{options[:ssh_user]}@#{node} cat /srv/chef/cache/revision-deploys/#{app}}) rescue []
|
45
|
+
all_releases.map! {|r| File.basename(r)}
|
46
|
+
bag_override[:revision] = all_releases[-rev.to_i-1]
|
47
|
+
raise Thor::Error, "Couldn't find revision #{options[:revision]}" unless bag_override[:revision]
|
48
|
+
when String
|
49
|
+
bag_override[:revision] = options[:revision]
|
50
|
+
end
|
51
|
+
bag_override[:deploy_action] =
|
52
|
+
if options[:rollback]
|
53
|
+
"rollback"
|
54
|
+
elsif options[:force]
|
55
|
+
"force_deploy"
|
56
|
+
else
|
57
|
+
"deploy"
|
58
|
+
end
|
59
|
+
|
60
|
+
with_updated_bag(app, env, bag_override) do |bag|
|
61
|
+
say <<-EOS.gsub(/\s+/, ' ').strip
|
62
|
+
#{bag_override[:deploy_action].tr('_', ' ').capitalize}ing
|
63
|
+
#{shell.set_color(app, :green)}
|
64
|
+
#{'to' if options[:rollback]} revision
|
65
|
+
#{shell.set_color(bag_override[:revision] || bag['revision'][env], :yellow)}
|
66
|
+
as #{shell.set_color(options[:ssh_user], :blue)}
|
67
|
+
on #{shell.set_color(node, :cyan)}
|
68
|
+
EOS
|
69
|
+
|
40
70
|
ssh_run(node, command)
|
41
71
|
end
|
72
|
+
|
73
|
+
ensure
|
74
|
+
say "Debug log of Chef run written to #{node}:#{debug_log}"
|
42
75
|
end
|
43
76
|
|
44
77
|
private
|
@@ -86,11 +119,13 @@ class SSP::App::Chef < Thor
|
|
86
119
|
end
|
87
120
|
bag.save
|
88
121
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
122
|
+
begin
|
123
|
+
yield(bag)
|
124
|
+
ensure
|
125
|
+
attributes.each do |key, value|
|
126
|
+
bag.raw_data[key.to_s] = original_values[key.to_s]
|
127
|
+
end
|
128
|
+
bag.save
|
93
129
|
end
|
94
|
-
bag.save
|
95
130
|
end
|
96
131
|
end
|
@@ -79,7 +79,7 @@ class SSP::App::Remote < Thor
|
|
79
79
|
def log(logfile)
|
80
80
|
@working_dir = options[:cwd] || options[:node] == "dtm-db-2" ? "/srv/rsyslog" : "/var/log"
|
81
81
|
@working_dir += '/' + options[:host] if options[:host]
|
82
|
-
@working_dir += '/' + options[:date].tr('-', '/')
|
82
|
+
@working_dir += '/' + options[:date].tr('-', '/') if options[:node] == "dtm-db-2"
|
83
83
|
|
84
84
|
@dont_print_hosts = true
|
85
85
|
tail = "-f " if options[:date] == Time.now.utc.strftime("%Y-%m-%d")
|
data/lib/ssp/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 6
|
8
|
-
-
|
9
|
-
version: 0.6.
|
8
|
+
- 3
|
9
|
+
version: 0.6.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "L\xC3\xA1szl\xC3\xB3 B\xC3\xA1csi"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-25 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|