dust-deploy 0.16.1 → 0.16.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.
- data/changelog.md +7 -0
- data/lib/dust/recipes/debsecan.rb +1 -1
- data/lib/dust/recipes/postgres.rb +18 -8
- data/lib/dust/recipes/puppet.rb +40 -0
- data/lib/dust/recipes/skel.rb +8 -2
- data/lib/dust/recipes/zabbix_agent.rb +7 -4
- data/lib/dust/server.rb +2 -2
- data/lib/dust/version.rb +1 -1
- metadata +4 -3
data/changelog.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
Changelog
|
2
2
|
=============
|
3
3
|
|
4
|
+
0.16.2
|
5
|
+
------------
|
6
|
+
|
7
|
+
- fixes a bug in node.get_home() and the skel recipe, resulting in files copied to / if the specified user doesn't exist
|
8
|
+
- adds centos support (automatic configuration) to postgres recipe
|
9
|
+
|
10
|
+
|
4
11
|
0.16.1
|
5
12
|
------------
|
6
13
|
|
@@ -6,7 +6,12 @@ class Postgres < Recipe
|
|
6
6
|
# profile: [ dedicated|standard, zabbix, pacemaker ]
|
7
7
|
# service_name: "service name for init scripts"
|
8
8
|
|
9
|
-
|
9
|
+
if @node.uses_apt?
|
10
|
+
unless @config['version'] or @config['package']
|
11
|
+
return @node.messages.add('please specify version or package name in your config file, e.g. "version: 9.1"').failed
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
10
15
|
return unless install_postgres
|
11
16
|
|
12
17
|
# default cluster on debian-like systems is 'main'
|
@@ -47,12 +52,10 @@ class Postgres < Recipe
|
|
47
52
|
def install_postgres
|
48
53
|
if @config['package']
|
49
54
|
package = @config['package']
|
50
|
-
elsif @
|
55
|
+
elsif @config['version']
|
51
56
|
package = "postgresql-#{@config['version']}"
|
52
|
-
elsif @node.uses_emerge?
|
53
|
-
package = 'postgresql-server'
|
54
57
|
else
|
55
|
-
|
58
|
+
package = 'postgresql-server'
|
56
59
|
end
|
57
60
|
|
58
61
|
@node.install_package(package)
|
@@ -63,19 +66,26 @@ class Postgres < Recipe
|
|
63
66
|
def set_default_directories
|
64
67
|
@config['postgresql.conf'] ||= {} # create empty config, unless present
|
65
68
|
|
66
|
-
|
69
|
+
# rpm systems place the configuration in the data dir
|
70
|
+
if @node.uses_rpm?
|
71
|
+
@config['postgresql.conf']['data_directory'] ||= '/var/lib/pgsql/data'
|
72
|
+
@config['conf_directory'] ||= @config['postgresql.conf']['data_directory']
|
73
|
+
|
74
|
+
# apt systems specify a cluster for their postgres instances
|
75
|
+
elsif @node.uses_apt?
|
67
76
|
@config['conf_directory'] ||= "/etc/postgresql/#{@config['version']}/#{@config['cluster']}"
|
68
77
|
@config['postgresql.conf']['data_directory'] ||= "/var/lib/postgresql/#{@config['version']}/#{@config['cluster']}"
|
78
|
+
|
79
|
+
# other systems just use this defaults
|
69
80
|
else
|
70
81
|
@config['conf_directory'] ||= "/etc/postgresql-#{@config['version']}"
|
71
82
|
@config['postgresql.conf']['data_directory'] ||= "/var/lib/postgresql/#{@config['version']}/data"
|
72
83
|
end
|
73
84
|
|
85
|
+
# set the postgres service name
|
74
86
|
if @node.uses_emerge?
|
75
87
|
@config['service_name'] ||= "postgresql-#{@config['version']}"
|
76
88
|
else
|
77
|
-
# on non-debian and non-emerge systems, print a warning since I'm not sure if service name is correct.
|
78
|
-
@node.messages.add('service_name not specified in config, defaulting to "postgresql"').warning unless @node.uses_apt?
|
79
89
|
@config['service_name'] ||= 'postgresql'
|
80
90
|
end
|
81
91
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Puppet < Recipe
|
2
|
+
desc 'puppet:deploy', 'installs puppet and runs specified manifsts'
|
3
|
+
def deploy
|
4
|
+
return @node.messages.add('could not install puppet').failed unless @node.install_package('puppet')
|
5
|
+
|
6
|
+
# generate temporary directory, where to put the manifests and modules
|
7
|
+
tmpdir = @node.mktemp(:type => 'directory')
|
8
|
+
|
9
|
+
@config.each do |manifest, arguments|
|
10
|
+
|
11
|
+
unless File.exists?("#{@template_path}/#{manifest}")
|
12
|
+
@node.messages.add("couldn't find puppet module '#{manifest}").failed
|
13
|
+
next
|
14
|
+
end
|
15
|
+
|
16
|
+
@node.scp("#{@template_path}/#{manifest}", "#{tmpdir}/#{manifest}")
|
17
|
+
|
18
|
+
# if manifest is just a simple file, exec
|
19
|
+
if manifest =~ /\.pp$/
|
20
|
+
msg = @node.messages.add("applying puppet manifest '#{manifest}'")
|
21
|
+
ret = @node.exec("puppet apply -e \"$(cat #{tmpdir}/#{manifest})\"", :live => true)
|
22
|
+
|
23
|
+
# if it's a module, include it
|
24
|
+
else
|
25
|
+
msg = @node.messages.add("applying puppet module '#{manifest}'")
|
26
|
+
ret = @node.exec("puppet apply -e \"include #{manifest}\" --modulepath #{tmpdir}", :live => true)
|
27
|
+
end
|
28
|
+
|
29
|
+
msg.parse_result(ret[:exit_code])
|
30
|
+
|
31
|
+
|
32
|
+
# TODO
|
33
|
+
# either remove manifests, or make them run periodically using a cronjob
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'puppet:status', 'shows puppet status'
|
38
|
+
def status
|
39
|
+
end
|
40
|
+
end
|
data/lib/dust/recipes/skel.rb
CHANGED
@@ -1,11 +1,17 @@
|
|
1
1
|
class Skel < Recipe
|
2
2
|
desc 'skel:deploy', 'copy default configuration files to users home directory'
|
3
|
-
def deploy
|
3
|
+
def deploy
|
4
4
|
@config.to_array.each do |user|
|
5
|
+
home = @node.get_home(user)
|
6
|
+
unless home
|
7
|
+
@node.messages.add("couldn't find home directory for user #{user}").failed
|
8
|
+
next
|
9
|
+
end
|
10
|
+
|
5
11
|
@node.messages.add("deploying homedir skeleton for #{user}\n")
|
6
12
|
Dir["#{@template_path}/.*"].each do |file|
|
7
13
|
next unless File.file?(file)
|
8
|
-
@node.deploy_file(file, "#{
|
14
|
+
@node.deploy_file(file, "#{home}/#{File.basename(file)}", { :binding => binding, :indent => 2 })
|
9
15
|
end
|
10
16
|
end
|
11
17
|
end
|
@@ -28,7 +28,7 @@ class ZabbixAgent < Recipe
|
|
28
28
|
if @node.uses_apt?
|
29
29
|
# debsecan is needed for zabbix checks (security updates)
|
30
30
|
return false unless @node.install_package 'zabbix-agent'
|
31
|
-
return false unless @node.install_package 'debsecan'
|
31
|
+
return false unless @node.install_package 'debsecan' if @node.is_debian?
|
32
32
|
|
33
33
|
elsif @node.uses_emerge?
|
34
34
|
# glsa-check (part of gentoolkit) is needed for zabbix checks (security updates)
|
@@ -134,9 +134,12 @@ class ZabbixAgent < Recipe
|
|
134
134
|
|
135
135
|
# check for security patches and system updates on emerge systems
|
136
136
|
def enable_apt
|
137
|
-
[ '
|
138
|
-
|
139
|
-
|
137
|
+
updates = [ 'apt.updates,aptitude search \'~U\' |wc -l' ]
|
138
|
+
if @node.is_debian?
|
139
|
+
@node.collect_facts
|
140
|
+
updates << "debian.security,debsecan --suite #{@node['lsbdistcodename']} --only-fixed --format packages |wc -l"
|
141
|
+
end
|
142
|
+
updates
|
140
143
|
end
|
141
144
|
|
142
145
|
# check for security patches and system updates on emerge systems
|
data/lib/dust/server.rb
CHANGED
@@ -382,7 +382,7 @@ module Dust
|
|
382
382
|
return ret
|
383
383
|
|
384
384
|
elsif uses_rpm?
|
385
|
-
msg = messages.add("installing #{package}", options)
|
385
|
+
msg = messages.add("installing #{package}", options)
|
386
386
|
return msg.parse_result(exec("rpm -U #{package}")[:exit_code])
|
387
387
|
|
388
388
|
else
|
@@ -798,7 +798,7 @@ module Dust
|
|
798
798
|
|
799
799
|
msg = messages.add("getting home directory of #{user}", options)
|
800
800
|
ret = exec("getent passwd |cut -d':' -f1,6 |grep '^#{user}' |head -n1 |cut -d: -f2")
|
801
|
-
if msg.parse_result(ret[:exit_code])
|
801
|
+
if msg.parse_result(ret[:exit_code]) and not ret[:stdout].chomp.empty?
|
802
802
|
return ret[:stdout].chomp
|
803
803
|
else
|
804
804
|
return false
|
data/lib/dust/version.rb
CHANGED
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.16.
|
4
|
+
version: 0.16.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -189,6 +189,7 @@ files:
|
|
189
189
|
- lib/dust/recipes/packages.rb
|
190
190
|
- lib/dust/recipes/postfix.rb
|
191
191
|
- lib/dust/recipes/postgres.rb
|
192
|
+
- lib/dust/recipes/puppet.rb
|
192
193
|
- lib/dust/recipes/rc_local.rb
|
193
194
|
- lib/dust/recipes/redis.rb
|
194
195
|
- lib/dust/recipes/remove_packages.rb
|
@@ -225,7 +226,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
226
|
version: '0'
|
226
227
|
requirements: []
|
227
228
|
rubyforge_project: dust-deploy
|
228
|
-
rubygems_version: 1.8.
|
229
|
+
rubygems_version: 1.8.23
|
229
230
|
signing_key:
|
230
231
|
specification_version: 3
|
231
232
|
summary: small server deployment tool for complex environments
|