dust-deploy 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,15 @@
1
1
  Changelog
2
2
  =============
3
3
 
4
+ 0.9.2
5
+ ------------
6
+
7
+ - adds openssl dev packages as dependency for ruby_rvm recipe
8
+ - improves @node.package_installed?, was failing for apt systems recently
9
+ - sudo uses sh -c for executing commands, this prevents problems when > < || | && ; is used
10
+ - repositories recipe now can handle keyring .deb files with the 'key' option
11
+
12
+
4
13
  0.9.1
5
14
  ------------
6
15
 
@@ -102,7 +102,24 @@ class Repositories < Recipe
102
102
  # add the repository key
103
103
  if repo['key']
104
104
  ::Dust.print_msg "adding #{name} repository key"
105
- ::Dust.print_result @node.exec("wget -O- '#{repo['key']}' | apt-key add -")[:exit_code]
105
+
106
+ # if the key is a .deb, download and install it
107
+ if repo['key'].match /\.deb$/
108
+ ret = @node.exec 'mktemp --tmpdir dust.XXXXXXXXXX'
109
+ if ret[:exit_code] != 0
110
+ puts
111
+ ::Dust.print_failed 'could not create temporary file on server'
112
+ return false
113
+ end
114
+
115
+ tmpfile = ret[:stdout].chomp
116
+
117
+ ::Dust.print_result @node.exec("wget -q -O #{tmpfile} '#{repo['key']}' && dpkg -i #{tmpfile}")[:exit_code]
118
+
119
+ # if not, just download and add the key
120
+ else
121
+ ::Dust.print_result @node.exec("wget -q -O- '#{repo['key']}' |apt-key add -")[:exit_code]
122
+ end
106
123
  end
107
124
  end
108
125
  end
@@ -10,6 +10,7 @@ class RubyRvm < Recipe
10
10
  if @node.uses_apt?
11
11
  return unless @node.install_package 'dh-autoreconf'
12
12
  return unless @node.install_package 'build-essential'
13
+ @node.install_package 'libssl-dev'
13
14
  @node.install_package 'libyaml-dev'
14
15
  @node.install_package 'libxml2-dev'
15
16
  @node.install_package 'libxslt1-dev'
@@ -19,6 +20,7 @@ class RubyRvm < Recipe
19
20
  elsif @node.uses_rpm?
20
21
  return unless @node.install_package 'gcc'
21
22
  return unless @node.install_package 'make'
23
+ @node.install_package 'openssl-devel'
22
24
  @node.install_package 'libyaml-devel'
23
25
  @node.install_package 'libxml2-devel'
24
26
  @node.install_package 'libxslt-devel'
@@ -22,5 +22,6 @@ class UnattendedUpgrades < Recipe
22
22
  periodic += "APT::Periodic::Verbose \"#{@config['verbose']}\";\n"
23
23
 
24
24
  @node.write '/etc/apt/apt.conf.d/02periodic', periodic
25
+ @node.chmod '644', '/etc/apt/apt.conf.d/02periodic'
25
26
  end
26
27
  end
@@ -64,11 +64,14 @@ module Dust
64
64
 
65
65
  # request a terminal (sudo needs it)
66
66
  # and prepend "sudo"
67
+ # command is wrapped in ", escapes " in the command string
68
+ # and then executed using "sh -c", so that
69
+ # the use of > < && || | and ; doesn't screw things up
67
70
  if @node['sudo']
68
71
  channel.request_pty
69
- command = "sudo #{command}"
72
+ command = "sudo sh -c \"#{command.gsub('"','\\"')}\""
70
73
  end
71
-
74
+
72
75
  channel.exec command do |ch, success|
73
76
  abort "FAILED: couldn't execute command (ssh.channel.exec)" unless success
74
77
 
@@ -260,7 +263,7 @@ module Dust
260
263
 
261
264
  packages.each do |package|
262
265
  if uses_apt?
263
- return Dust.print_ok '', options unless exec("dpkg -s #{package} |grep 'install ok'")[:stdout].empty?
266
+ return Dust.print_ok '', options if exec("dpkg -l #{package} |grep '^ii'")[:exit_code] == 0
264
267
  elsif uses_emerge?
265
268
  return Dust.print_ok '', options unless exec("qlist -I #{package}")[:stdout].empty?
266
269
  elsif uses_rpm?
@@ -288,7 +291,9 @@ module Dust
288
291
  elsif uses_rpm?
289
292
  exec "yum install -y #{package}"
290
293
  else
291
- Dust.print_failed 'install_package only supports apt, emerge and rpm systems at the moment', options
294
+ puts
295
+ return Dust.print_failed "install_package only supports apt, emerge and yum systems at the moment",
296
+ { :quiet => options[:quiet], :indent => options[:indent] + 1 }
292
297
  end
293
298
 
294
299
  # check if package actually was installed
@@ -1,3 +1,3 @@
1
1
  module Dust
2
- VERSION = "0.9.1"
2
+ VERSION = "0.9.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dust-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.2
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: 2012-03-23 00:00:00.000000000 Z
12
+ date: 2012-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
16
- requirement: &70343805618200 !ruby/object:Gem::Requirement
16
+ requirement: &70357952436820 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70343805618200
24
+ version_requirements: *70357952436820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: net-scp
27
- requirement: &70343805617720 !ruby/object:Gem::Requirement
27
+ requirement: &70357952436280 !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: *70343805617720
35
+ version_requirements: *70357952436280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: net-sftp
38
- requirement: &70343805617280 !ruby/object:Gem::Requirement
38
+ requirement: &70357952435600 !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: *70343805617280
46
+ version_requirements: *70357952435600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: thor
49
- requirement: &70343805616760 !ruby/object:Gem::Requirement
49
+ requirement: &70357952434660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70343805616760
57
+ version_requirements: *70357952434660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: ipaddress
60
- requirement: &70343805616300 !ruby/object:Gem::Requirement
60
+ requirement: &70357952434240 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70343805616300
68
+ version_requirements: *70357952434240
69
69
  description: when puppet and chef suck because you want to be in control and sprinkle
70
70
  just cannot do enough for you
71
71
  email: