roundsman 0.0.1 → 0.1.0
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/lib/roundsman/capistrano.rb +26 -21
- data/lib/roundsman/version.rb +1 -1
- metadata +17 -7
data/lib/roundsman/capistrano.rb
CHANGED
@@ -45,6 +45,9 @@ require 'tempfile'
|
|
45
45
|
|
46
46
|
set_default :roundsman_working_dir, "/tmp/roundsman"
|
47
47
|
set_default :stream_roundsman_output, true
|
48
|
+
set_default(:roundsman_user) { fetch(:user) { capture('whoami').strip } }
|
49
|
+
set_default :debug_chef, false
|
50
|
+
set_default :package_manager, 'apt-get'
|
48
51
|
|
49
52
|
desc "Lists configuration"
|
50
53
|
task :configuration do
|
@@ -74,7 +77,7 @@ require 'tempfile'
|
|
74
77
|
def ensure_roundsman_working_dir
|
75
78
|
unless @ensured_roundsman_working_dir
|
76
79
|
run "mkdir -p #{fetch(:roundsman_working_dir)}"
|
77
|
-
sudo "chown -R #{
|
80
|
+
sudo "chown -R #{fetch(:roundsman_user)} #{fetch(:roundsman_working_dir)}"
|
78
81
|
@ensured_roundsman_working_dir = true
|
79
82
|
end
|
80
83
|
end
|
@@ -82,7 +85,7 @@ require 'tempfile'
|
|
82
85
|
|
83
86
|
namespace :install do
|
84
87
|
|
85
|
-
set_default :ruby_version, "1.9.3-
|
88
|
+
set_default :ruby_version, "1.9.3-p194"
|
86
89
|
set_default :care_about_ruby_version, true
|
87
90
|
set_default :ruby_install_dir, "/usr/local"
|
88
91
|
|
@@ -98,7 +101,7 @@ require 'tempfile'
|
|
98
101
|
set -e
|
99
102
|
cd #{roundsman_working_dir}
|
100
103
|
rm -rf ruby-build
|
101
|
-
git clone -q
|
104
|
+
git clone -q https://github.com/sstephenson/ruby-build.git
|
102
105
|
cd ruby-build
|
103
106
|
./install.sh
|
104
107
|
ruby-build #{fetch(:ruby_version)} #{fetch(:ruby_install_dir)}
|
@@ -121,8 +124,8 @@ require 'tempfile'
|
|
121
124
|
desc "Installs the dependencies needed for Ruby"
|
122
125
|
task :dependencies, :except => { :no_release => true } do
|
123
126
|
ensure_supported_distro
|
124
|
-
sudo "
|
125
|
-
sudo "
|
127
|
+
sudo "#{fetch(:package_manager)} -yq update"
|
128
|
+
sudo "#{fetch(:package_manager)} -yq install #{fetch(:ruby_dependencies).join(' ')}"
|
126
129
|
end
|
127
130
|
|
128
131
|
desc "Checks if the ruby version installed matches the version specified"
|
@@ -170,6 +173,7 @@ require 'tempfile'
|
|
170
173
|
set_default :chef_version, "~> 0.10.8"
|
171
174
|
set_default :cookbooks_directory, ["config/cookbooks"]
|
172
175
|
set_default :copyfile_disable, false
|
176
|
+
set_default :filter_sensitive_settings, [ /password/, /filter_sensitive_settings/ ]
|
173
177
|
|
174
178
|
task :default, :except => { :no_release => true } do
|
175
179
|
ensure_cookbooks_exists
|
@@ -196,7 +200,7 @@ require 'tempfile'
|
|
196
200
|
desc "Runs the existing chef configuration"
|
197
201
|
task :chef_solo, :except => { :no_release => true } do
|
198
202
|
logger.info "Now running #{fetch(:run_list).join(', ')}"
|
199
|
-
sudo "chef-solo -c #{roundsman_working_dir("solo.rb")} -j #{roundsman_working_dir("solo.json")}"
|
203
|
+
sudo "chef-solo -c #{roundsman_working_dir("solo.rb")} -j #{roundsman_working_dir("solo.json")}#{' -l debug' if fetch(:debug_chef)}"
|
200
204
|
end
|
201
205
|
|
202
206
|
def ensure_cookbooks_exists
|
@@ -217,11 +221,11 @@ require 'tempfile'
|
|
217
221
|
def generate_config
|
218
222
|
cookbook_string = cookbooks_paths.map { |c| "File.join(root, #{c.to_s.inspect})" }.join(', ')
|
219
223
|
solo_rb = <<-RUBY
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
224
|
+
root = File.expand_path(File.dirname(__FILE__))
|
225
|
+
file_cache_path File.join(root, "cache")
|
226
|
+
cookbook_path [ #{cookbook_string} ]
|
227
|
+
RUBY
|
228
|
+
put solo_rb, roundsman_working_dir("solo.rb"), :via => :scp
|
225
229
|
end
|
226
230
|
|
227
231
|
def generate_attributes
|
@@ -235,21 +239,22 @@ require 'tempfile'
|
|
235
239
|
def remove_procs_from_hash(hash)
|
236
240
|
new_hash = {}
|
237
241
|
hash.each do |key, value|
|
242
|
+
next if fetch(:filter_sensitive_settings).find { |regex| regex.match(key) }
|
238
243
|
real_value = if value.respond_to?(:call)
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
244
|
+
begin
|
245
|
+
value.call
|
246
|
+
rescue ::Capistrano::CommandError => e
|
247
|
+
logger.debug "Could not get the value of #{key}: #{e.message}"
|
248
|
+
nil
|
249
|
+
end
|
250
|
+
else
|
251
|
+
value
|
252
|
+
end
|
248
253
|
|
249
254
|
if real_value.is_a?(Hash)
|
250
255
|
real_value = remove_procs_from_hash(real_value)
|
251
256
|
end
|
252
|
-
|
257
|
+
if real_value && !real_value.class.to_s.include?("Capistrano") # skip capistrano tasks
|
253
258
|
new_hash[key] = real_value
|
254
259
|
end
|
255
260
|
end
|
data/lib/roundsman/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roundsman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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-
|
12
|
+
date: 2012-05-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '2.12'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.12'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: vagrant
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,7 +37,12 @@ dependencies:
|
|
32
37
|
version: '1.0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '1.0'
|
36
46
|
description: Combine the awesome powers of Capistrano and Chef. The only thing you
|
37
47
|
need is SSH access.
|
38
48
|
email:
|
@@ -77,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
87
|
version: '0'
|
78
88
|
requirements: []
|
79
89
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.8.
|
90
|
+
rubygems_version: 1.8.23
|
81
91
|
signing_key:
|
82
92
|
specification_version: 3
|
83
93
|
summary: Various Capistrano tasks for bootstrapping servers with Chef
|