dust-deploy 0.9.1 → 0.9.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.
@@ -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: