sous-chef 0.0.0 → 0.0.1
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/Gemfile.lock +15 -1
- data/README.md +18 -0
- data/lib/sous-chef/tasks/sous-chef.rake +2 -0
- data/lib/sous-chef/tasks.rb +104 -0
- data/lib/sous-chef.rb +10 -0
- data/sous-chef.gemspec +11 -5
- metadata +75 -6
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sous-chef (0.0.
|
4
|
+
sous-chef (0.0.0)
|
5
5
|
knife-solo (~> 0.1.0)
|
6
|
+
rake (~> 10.0.3)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: http://rubygems.org/
|
@@ -27,6 +28,7 @@ GEM
|
|
27
28
|
treetop (~> 1.4.9)
|
28
29
|
uuidtools
|
29
30
|
yajl-ruby (~> 1.1)
|
31
|
+
diff-lcs (1.1.3)
|
30
32
|
erubis (2.7.0)
|
31
33
|
highline (1.6.15)
|
32
34
|
ipaddress (0.8.0)
|
@@ -63,8 +65,17 @@ GEM
|
|
63
65
|
systemu
|
64
66
|
yajl-ruby
|
65
67
|
polyglot (0.3.3)
|
68
|
+
rake (10.0.3)
|
66
69
|
rest-client (1.6.7)
|
67
70
|
mime-types (>= 1.16)
|
71
|
+
rspec (2.12.0)
|
72
|
+
rspec-core (~> 2.12.0)
|
73
|
+
rspec-expectations (~> 2.12.0)
|
74
|
+
rspec-mocks (~> 2.12.0)
|
75
|
+
rspec-core (2.12.2)
|
76
|
+
rspec-expectations (2.12.1)
|
77
|
+
diff-lcs (~> 1.1.3)
|
78
|
+
rspec-mocks (2.12.1)
|
68
79
|
systemu (2.5.2)
|
69
80
|
thor (0.16.0)
|
70
81
|
treetop (1.4.12)
|
@@ -77,4 +88,7 @@ PLATFORMS
|
|
77
88
|
ruby
|
78
89
|
|
79
90
|
DEPENDENCIES
|
91
|
+
bundler (~> 1.1)
|
92
|
+
rake (~> 10.0.3)
|
93
|
+
rspec (~> 2.12.0)
|
80
94
|
sous-chef!
|
data/README.md
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
def run(command)
|
5
|
+
puts "Running: #{command}"
|
6
|
+
system command
|
7
|
+
raise "Failure! #{$?}" if $? != 0
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_knife(command, node)
|
11
|
+
run "knife solo #{command} -F #{agents_ssh_config_path} #{node} -N #{node} nodes/buildAgent.json"
|
12
|
+
end
|
13
|
+
|
14
|
+
def agents
|
15
|
+
agents_path = File.join(Dir.pwd, "agents.yml")
|
16
|
+
unless File.exists? agents_path
|
17
|
+
puts "Can't find #{agents_path}"
|
18
|
+
exit 1
|
19
|
+
end
|
20
|
+
YAML.load_file(agents_path)
|
21
|
+
end
|
22
|
+
|
23
|
+
def agents_ssh_config_path
|
24
|
+
@agents_ssh_config_path ||= begin
|
25
|
+
ssh_config_file = Tempfile.new('agent_ssh_config')
|
26
|
+
agents.each do |node, attrs|
|
27
|
+
ssh_config_file.write("Host #{node}\n")
|
28
|
+
attrs.each do |key, value|
|
29
|
+
ssh_config_file.write(" #{key} #{value}\n")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
ssh_config_file.close
|
33
|
+
at_exit { ssh_config_file.delete }
|
34
|
+
ssh_config_file.path
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def agent_names
|
39
|
+
agents.map { |key, value| key }
|
40
|
+
end
|
41
|
+
|
42
|
+
agent_names.each do |node|
|
43
|
+
namespace node do
|
44
|
+
desc "Run knife solo prepare for #{node}"
|
45
|
+
task :prepare do
|
46
|
+
run_knife 'prepare', node
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Run knife solo cook for #{node}"
|
50
|
+
task :cook do
|
51
|
+
run_knife 'cook', node
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Run knife solo bootstrap for #{node}"
|
55
|
+
task :bootstrap do
|
56
|
+
run_knife 'bootstrap', node
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
namespace :vagrant do
|
62
|
+
def vagrant_ssh_config_path
|
63
|
+
@vagrant_ssh_config_paths ||= begin
|
64
|
+
ssh_config_file = Tempfile.new('vagrant-ssh-config')
|
65
|
+
ssh_config_file.write(`vagrant ssh-config`)
|
66
|
+
ssh_config_file.write(' LogLevel quiet')
|
67
|
+
ssh_config_file.close
|
68
|
+
ssh_config_file.path
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def run_knife_vagrant(command)
|
73
|
+
run "knife solo #{command} -F #{vagrant_ssh_config_path} default nodes/buildAgent.json"
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "Start the VM for the Vagrant Utility box"
|
77
|
+
task :up do
|
78
|
+
run "vagrant up"
|
79
|
+
end
|
80
|
+
|
81
|
+
desc "Prepare the Vagrant Utility box for provisioning"
|
82
|
+
task :prepare => [:up] do
|
83
|
+
run_knife_vagrant 'prepare'
|
84
|
+
end
|
85
|
+
|
86
|
+
desc "Provision the Vagrant Utility box"
|
87
|
+
task :cook do
|
88
|
+
run_knife_vagrant 'cook'
|
89
|
+
end
|
90
|
+
|
91
|
+
desc "Bootstrap (prepare & cook) the Vagrant Utility box"
|
92
|
+
task :bootstrap => [:up] do
|
93
|
+
run_knife_vagrant 'bootstrap'
|
94
|
+
end
|
95
|
+
|
96
|
+
desc "Destroy Vagrant Utility box"
|
97
|
+
task :destroy do
|
98
|
+
run "vagrant destroy -f"
|
99
|
+
end
|
100
|
+
|
101
|
+
desc "Cleans Vagrant Utility box, creating a fresh box"
|
102
|
+
task :clean => [:destroy, :up]
|
103
|
+
end
|
104
|
+
|
data/lib/sous-chef.rb
ADDED
data/sous-chef.gemspec
CHANGED
@@ -2,21 +2,27 @@
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name = 'sous-chef'
|
6
|
-
s.version = "0.0.0"
|
7
|
-
s.summary = "Manage nodes"
|
8
|
-
s.description = "Handles configuration and management of chef nodes"
|
9
|
-
|
10
5
|
s.authors = "Shaun Dern"
|
11
6
|
s.email = "shaun@substantail.com"
|
12
7
|
|
8
|
+
s.name = 'sous-chef'
|
9
|
+
s.version = "0.0.1"
|
10
|
+
s.description = %q{Manage knife-solo nodes}
|
11
|
+
s.summary = %q{Manage knife-solo nodes}
|
12
|
+
s.homepage = %q{http://github.com/substantial/sous-chef}
|
13
13
|
s.rubyforge_project = "sous-chef"
|
14
14
|
|
15
|
+
s.license = "MIT"
|
16
|
+
|
15
17
|
s.files = `git ls-files`.split("\n")
|
16
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
20
|
s.require_paths = ["lib"]
|
19
21
|
|
22
|
+
s.add_runtime_dependency "rake", "~> 10.0.3"
|
23
|
+
s.add_development_dependency "rspec", "~> 2.12.0"
|
24
|
+
s.add_development_dependency "rake", "~> 10.0.3"
|
25
|
+
s.add_development_dependency "bundler", "~> 1.1"
|
20
26
|
s.add_dependency "knife-solo", "~> 0.1.0"
|
21
27
|
|
22
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sous-chef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,72 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 10.0.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 10.0.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.12.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.12.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 10.0.3
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 10.0.3
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.1'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.1'
|
14
78
|
- !ruby/object:Gem::Dependency
|
15
79
|
name: knife-solo
|
16
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -27,7 +91,7 @@ dependencies:
|
|
27
91
|
- - ~>
|
28
92
|
- !ruby/object:Gem::Version
|
29
93
|
version: 0.1.0
|
30
|
-
description:
|
94
|
+
description: Manage knife-solo nodes
|
31
95
|
email: shaun@substantail.com
|
32
96
|
executables: []
|
33
97
|
extensions: []
|
@@ -36,9 +100,14 @@ files:
|
|
36
100
|
- .gitignore
|
37
101
|
- Gemfile
|
38
102
|
- Gemfile.lock
|
103
|
+
- README.md
|
104
|
+
- lib/sous-chef.rb
|
105
|
+
- lib/sous-chef/tasks.rb
|
106
|
+
- lib/sous-chef/tasks/sous-chef.rake
|
39
107
|
- sous-chef.gemspec
|
40
|
-
homepage:
|
41
|
-
licenses:
|
108
|
+
homepage: http://github.com/substantial/sous-chef
|
109
|
+
licenses:
|
110
|
+
- MIT
|
42
111
|
post_install_message:
|
43
112
|
rdoc_options: []
|
44
113
|
require_paths:
|
@@ -60,5 +129,5 @@ rubyforge_project: sous-chef
|
|
60
129
|
rubygems_version: 1.8.24
|
61
130
|
signing_key:
|
62
131
|
specification_version: 3
|
63
|
-
summary: Manage nodes
|
132
|
+
summary: Manage knife-solo nodes
|
64
133
|
test_files: []
|