caterer 0.11.2 → 1.0.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.
Files changed (65) hide show
  1. data/README.md +34 -116
  2. data/Vagrantfile +4 -4
  3. data/lib/caterer.rb +3 -0
  4. data/lib/caterer/action.rb +1 -0
  5. data/lib/caterer/action/berkshelf/install.rb +3 -1
  6. data/lib/caterer/action/config/validate/provisioner.rb +16 -10
  7. data/lib/caterer/action/image.rb +9 -0
  8. data/lib/caterer/action/image/cleanup.rb +20 -0
  9. data/lib/caterer/action/image/prepare.rb +20 -0
  10. data/lib/caterer/action/image/run.rb +20 -0
  11. data/lib/caterer/action/provisioner.rb +0 -7
  12. data/lib/caterer/action/provisioner/cleanup.rb +19 -1
  13. data/lib/caterer/action/provisioner/prepare.rb +20 -2
  14. data/lib/caterer/action/provisioner/uninstall.rb +9 -1
  15. data/lib/caterer/action/server.rb +2 -1
  16. data/lib/caterer/action/{provisioner/install.rb → server/cleanup.rb} +5 -5
  17. data/lib/caterer/action/server/{reboot.rb → prepare.rb} +4 -2
  18. data/lib/caterer/actions.rb +8 -46
  19. data/lib/caterer/cli.rb +50 -4
  20. data/lib/caterer/command.rb +1 -4
  21. data/lib/caterer/command/base.rb +17 -108
  22. data/lib/caterer/command/berks.rb +5 -8
  23. data/lib/caterer/command/clean.rb +6 -4
  24. data/lib/caterer/command/lock.rb +5 -3
  25. data/lib/caterer/command/provision.rb +19 -4
  26. data/lib/caterer/command/server.rb +106 -0
  27. data/lib/caterer/command/unlock.rb +5 -3
  28. data/lib/caterer/commands.rb +0 -3
  29. data/lib/caterer/config.rb +0 -5
  30. data/lib/caterer/config/base.rb +5 -4
  31. data/lib/caterer/config/provisioner/chef_solo.rb +1 -2
  32. data/lib/caterer/group.rb +24 -0
  33. data/lib/caterer/image.rb +88 -0
  34. data/lib/caterer/member.rb +13 -0
  35. data/lib/caterer/provisioner.rb +1 -0
  36. data/lib/caterer/provisioner/base.rb +4 -3
  37. data/lib/caterer/provisioner/chef_solo.rb +58 -123
  38. data/lib/caterer/provisioner/shell.rb +83 -0
  39. data/lib/caterer/provisioners.rb +2 -1
  40. data/lib/caterer/server.rb +18 -36
  41. data/lib/caterer/version.rb +1 -1
  42. data/lib/templates/image/bin_wrapper.erb +8 -0
  43. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/debian.sh +0 -0
  44. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/el.sh +0 -0
  45. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/fedora.sh +0 -0
  46. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/sles.sh +0 -0
  47. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/smartos.sh +0 -0
  48. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/suse.sh +0 -0
  49. data/lib/templates/provisioner/chef_solo/{bootstrap → install}/ubuntu.sh +0 -0
  50. data/lib/templates/provisioner/chef_solo/solo.erb +1 -1
  51. data/lib/templates/provisioner/shell/script.erb +3 -0
  52. metadata +24 -26
  53. data/lib/caterer/action/provisioner/bootstrap.rb +0 -14
  54. data/lib/caterer/action/provisioner/load.rb +0 -29
  55. data/lib/caterer/action/provisioner/provision.rb +0 -14
  56. data/lib/caterer/action/provisioner/validate.rb +0 -10
  57. data/lib/caterer/action/provisioner/validate/bootstrapped.rb +0 -22
  58. data/lib/caterer/action/provisioner/validate/engine.rb +0 -24
  59. data/lib/caterer/command/bootstrap.rb +0 -24
  60. data/lib/caterer/command/reboot.rb +0 -24
  61. data/lib/caterer/command/test.rb +0 -19
  62. data/lib/caterer/command/up.rb +0 -24
  63. data/lib/caterer/config/group.rb +0 -26
  64. data/lib/caterer/config/image.rb +0 -21
  65. data/lib/caterer/config/member.rb +0 -15
@@ -0,0 +1,106 @@
1
+ module Caterer
2
+ module Command
3
+ class Server < Base
4
+
5
+ def add_server_opts(parser, options)
6
+ parser.separator ""
7
+ parser.on("-c CONFIG", 'assumes Caterfile in current directory')
8
+ parser.separator ""
9
+ parser.on("-u USER", "--user USER", 'assumes current username') do |u|
10
+ options[:user] = u
11
+ end
12
+ parser.on('-p PASSWORD', '--password PASSWORD', 'assumes key') do |p|
13
+ options[:pass] = p
14
+ end
15
+ parser.on('-k KEY', '--key KEY', 'path to private key') do |k|
16
+ options[:key] = k
17
+ end
18
+ parser.on('-P PORT', '--port PORT', 'assumes 22') do |p|
19
+ options[:port] = p
20
+ end
21
+ parser.on('-i IMAGE', '--image IMAGE', 'corresponds to a image in Caterfile') do |i|
22
+ options[:image] = i
23
+ end
24
+ parser.on('-g GROUP', '--group GROUP', 'corresponds to a group in Caterfile') do |g|
25
+ options[:group] = g
26
+ end
27
+ parser.separator ""
28
+ end
29
+
30
+ def with_target_servers(argv, options={})
31
+ target_servers(argv, options).each do |server|
32
+ yield server if block_given?
33
+ end
34
+ end
35
+
36
+ def target_servers(argv, options={})
37
+ @servers ||= begin
38
+ servers = []
39
+
40
+ argv.first.split(",").each do |host|
41
+
42
+ if group = @env.config.groups[host.to_sym]
43
+ group.members.each do |key, member|
44
+ servers << init_server(group, member, options)
45
+ end
46
+ else
47
+
48
+ if not host.match /::/
49
+ host = "default::#{host}"
50
+ end
51
+
52
+ g, m = host.split "::"
53
+ group = nil
54
+ member = nil
55
+
56
+ if group = @env.config.groups[g.to_sym]
57
+ member = group.members[m.to_sym]
58
+ end
59
+
60
+ servers << init_server(group, member, options.merge(:host => m))
61
+ end
62
+ end
63
+
64
+ servers
65
+ end
66
+ end
67
+
68
+ def init_server(group=nil, member=nil, options={})
69
+
70
+ group ||= Config::Group.new
71
+ member ||= Config::Member.new
72
+
73
+ opts = {}
74
+ opts[:alias] = member.name
75
+ opts[:user] = options[:user] || member.user || group.user
76
+ opts[:pass] = options[:pass] || member.password || group.password
77
+ opts[:host] = member.host || options[:host]
78
+ opts[:port] = options[:port] || member.port
79
+ opts[:images] = image_list(options) || member.images || group.images
80
+ opts[:key] = options[:key] || member.key || group.key
81
+
82
+ opts[:data] = begin
83
+
84
+ data = group.data.merge(member.data)
85
+
86
+ if options[:data]
87
+ # todo: rather than puking if the json is valid, this should create a pretty language
88
+ json = MultiJson.load options[:data], :symbolize_keys => true
89
+ data = data.merge(json) if json and json.is_a? Hash
90
+ end
91
+
92
+ data
93
+ end
94
+
95
+ Caterer::Server.new(@env, opts)
96
+ end
97
+
98
+ def image_list(options={})
99
+ if images = options[:image]
100
+ images.split(',').map(&:to_sym)
101
+ end
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -1,15 +1,17 @@
1
1
  module Caterer
2
2
  module Command
3
- class Unlock < Base
3
+ class Unlock < Server
4
4
 
5
5
  def execute
6
6
  options = {}
7
- opts = OptionParser.new do |opts|
7
+ parser = OptionParser.new do |opts|
8
8
  opts.banner = "Usage: cater unlock HOST [options]"
9
9
  end
10
10
 
11
+ add_server_opts(parser, options)
12
+
11
13
  # Parse the options
12
- argv = parse_options(opts, options, true)
14
+ argv = parse_options(parser, true)
13
15
  return if not argv
14
16
 
15
17
  with_target_servers(argv, options) do |server|
@@ -1,8 +1,5 @@
1
1
  # commands
2
- Caterer.commands.register(:bootstrap) { Caterer::Command::Bootstrap }
3
2
  Caterer.commands.register(:clean) { Caterer::Command::Clean }
4
3
  Caterer.commands.register(:lock) { Caterer::Command::Lock }
5
4
  Caterer.commands.register(:provision) { Caterer::Command::Provision }
6
- Caterer.commands.register(:reboot) { Caterer::Command::Reboot }
7
5
  Caterer.commands.register(:unlock) { Caterer::Command::Unlock }
8
- Caterer.commands.register(:up) { Caterer::Command::Up }
@@ -2,11 +2,6 @@ module Caterer
2
2
  module Config
3
3
  autoload :Base, 'caterer/config/base'
4
4
  autoload :Berkshelf, 'caterer/config/berkshelf'
5
- autoload :Cluster, 'caterer/config/cluster'
6
- autoload :Group, 'caterer/config/group'
7
- autoload :Member, 'caterer/config/member'
8
- autoload :Node, 'caterer/config/node'
9
- autoload :Image, 'caterer/config/image'
10
5
  autoload :Provisioner, 'caterer/config/provisioner'
11
6
  end
12
7
  end
@@ -3,12 +3,13 @@ module Caterer
3
3
  class Base
4
4
 
5
5
  attr_reader :images, :groups
6
- attr_accessor :default_provisioner
6
+ attr_accessor :dest_dir
7
7
 
8
8
  def initialize
9
- @images = {}
10
- @groups = {}
11
- @keys = {}
9
+ @images = {}
10
+ @groups = {}
11
+ @keys = {}
12
+ @dest_dir = '/opt/cater'
12
13
  end
13
14
 
14
15
  def image(name)
@@ -2,10 +2,9 @@ module Caterer
2
2
  module Config
3
3
  module Provisioner
4
4
  class ChefSolo
5
- attr_accessor :dest_dir, :run_list, :json, :cookbooks_path, :roles_path, :data_bags_path, :bootstrap_scripts
5
+ attr_accessor :run_list, :json, :cookbooks_path, :roles_path, :data_bags_path, :bootstrap_scripts
6
6
 
7
7
  def initialize
8
- @dest_dir = '/opt/cater/chef_solo'
9
8
  @run_list = []
10
9
  @json = {}
11
10
  @cookbooks_path = ['cookbooks']
@@ -0,0 +1,24 @@
1
+ module Caterer
2
+ class Group
3
+
4
+ attr_reader :name
5
+ attr_accessor :images, :members, :user, :password, :key, :data
6
+
7
+ def initialize(name=nil)
8
+ @name = name
9
+ @images = []
10
+ @members = {}
11
+ @data = {}
12
+ end
13
+
14
+ def add_image(image)
15
+ @images << image
16
+ end
17
+
18
+ def member(name)
19
+ @members[name] ||= Member.new(name)
20
+ yield @members[name] if block_given?
21
+ @members[name]
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,88 @@
1
+ require 'tilt'
2
+
3
+ module Caterer
4
+ class Image
5
+
6
+ attr_reader :name, :provisioners
7
+
8
+ def initialize(name)
9
+ @name = name
10
+ @provisioners = []
11
+ end
12
+
13
+ def provision(type, opts={})
14
+ provisioner_klass = Caterer.provisioners.get(type)
15
+ raise ":#{type} is not a valid provisioner" if not provisioner_klass
16
+ provisioner = provisioner_klass.new(self, opts)
17
+ yield provisioner if block_given?
18
+ @provisioners << provisioner
19
+ provisioner
20
+ end
21
+
22
+ # actions
23
+
24
+ def prepare(server)
25
+ # create bin dir
26
+ server.ssh.sudo "mkdir -p #{bin_dir}", :stream => true
27
+ server.ssh.sudo "chown -R #{server.username} #{bin_dir}", :stream => true
28
+
29
+ # create lib dir
30
+ server.ssh.sudo "mkdir -p #{lib_dir}", :stream => true
31
+ server.ssh.sudo "chown -R #{server.username} #{lib_dir}", :stream => true
32
+
33
+ # create var dir
34
+ server.ssh.sudo "mkdir -p #{var_dir}", :stream => true
35
+ server.ssh.sudo "chown -R #{server.username} #{var_dir}", :stream => true
36
+
37
+ # create bin wrapper
38
+ server.ui.info "Generating bin wrapper..."
39
+ server.ssh.upload(StringIO.new(bin_wrapper_content), bin_wrapper_path)
40
+ server.ssh.sudo "chmod +x #{bin_wrapper_path}", :stream => true
41
+ end
42
+
43
+ def run(server)
44
+ # run
45
+ server.ui.info "Running #{name}..."
46
+ res = server.ssh.sudo bin_wrapper_path, :stream => true
47
+ unless res == 0
48
+ server.ui.error "#{name} failed with exit code: #{res}"
49
+ end
50
+ end
51
+
52
+ def cleanup(server)
53
+ server.ui.info "Cleaning #{name}..."
54
+ server.ssh.sudo "rm -rf #{var_dir}"
55
+ server.ssh.sudo "rm -rf #{lib_dir}"
56
+ server.ssh.sudo "rm -f #{bin_wrapper_path}"
57
+ end
58
+
59
+ # helpers
60
+
61
+ def bin_dir
62
+ "#{config.dest_dir}/bin"
63
+ end
64
+
65
+ def lib_dir
66
+ "#{config.dest_dir}/lib/#{name}"
67
+ end
68
+
69
+ def var_dir
70
+ "#{config.dest_dir}/var/#{name}"
71
+ end
72
+
73
+ def bin_wrapper_path
74
+ "#{bin_dir}/cater-#{name}"
75
+ end
76
+
77
+ protected
78
+
79
+ def config
80
+ @config ||= Caterer.config
81
+ end
82
+
83
+ def bin_wrapper_content
84
+ Tilt.new(File.expand_path('../../templates/image/bin_wrapper.erb', __FILE__)).render(self)
85
+ end
86
+
87
+ end
88
+ end
@@ -0,0 +1,13 @@
1
+ module Caterer
2
+ class Member
3
+
4
+ attr_reader :name
5
+ attr_accessor :host, :port, :user, :password, :key, :images, :data
6
+
7
+ def initialize(name=nil)
8
+ @name = name
9
+ @data = {}
10
+ end
11
+
12
+ end
13
+ end
@@ -2,5 +2,6 @@ module Caterer
2
2
  module Provisioner
3
3
  autoload :Base, 'caterer/provisioner/base'
4
4
  autoload :ChefSolo, 'caterer/provisioner/chef_solo'
5
+ autoload :Shell, 'caterer/provisioner/shell'
5
6
  end
6
7
  end
@@ -2,17 +2,18 @@ module Caterer
2
2
  module Provisioner
3
3
  class Base
4
4
 
5
+ attr_reader :image
6
+
5
7
  # config dsl
6
8
  def errors; end
7
9
 
8
10
  # provision dsl
9
- def bootstrap(server); end
10
- def bootstrapped?(server); true; end
11
11
  def cleanup(server); end
12
12
  def install(server); end
13
+ def installed?(server); true; end
13
14
  def prepare(server); end
14
- def provision(server); end
15
15
  def uninstall(server); end
16
+ def provision_cmd; end
16
17
 
17
18
  end
18
19
  end
@@ -10,18 +10,17 @@ module Caterer
10
10
 
11
11
  include Util::Shell
12
12
 
13
- attr_reader :run_list
14
- attr_accessor :dest_dir, :json, :cookbooks_path, :roles_path
15
- attr_accessor :data_bags_path, :bootstrap_scripts
16
-
17
- def initialize
18
- @dest_dir = config.dest_dir.dup
19
- @run_list = config.run_list.dup
20
- @json = config.json.dup
21
- @cookbooks_path = config.cookbooks_path.dup
22
- @roles_path = config.roles_path.dup
23
- @data_bags_path = config.data_bags_path.dup
24
- @bootstrap_scripts = config.bootstrap_scripts.dup
13
+ attr_reader :run_list
14
+ attr_accessor :json, :cookbooks_path, :roles_path
15
+ attr_accessor :data_bags_path
16
+
17
+ def initialize(image, opts={})
18
+ @image = image
19
+ @run_list = provisioner_config.run_list.dup
20
+ @json = provisioner_config.json.dup
21
+ @cookbooks_path = provisioner_config.cookbooks_path.dup
22
+ @roles_path = provisioner_config.roles_path.dup
23
+ @data_bags_path = provisioner_config.data_bags_path.dup
25
24
  end
26
25
 
27
26
  # config DSL
@@ -34,27 +33,6 @@ module Caterer
34
33
  @run_list << "role[#{role}]"
35
34
  end
36
35
 
37
- # I don't like this at all, but it seems to make the best Caterfile workflow
38
- def add_image(image)
39
- image = Caterer.config.images[image]
40
- raise "Unknown image :#{image}" if not image
41
-
42
- provisioner = image.provisioner
43
- raise "No provisioner for :#{image}" if not provisioner
44
-
45
- if not provisioner.class == self.class
46
- raise "add_image incompatibility: #{provisioner.class} != #{self.class}"
47
- end
48
-
49
- @run_list += provisioner.run_list
50
- @bootstrap_scripts += provisioner.bootstrap_scripts
51
- @json = @json.merge(provisioner.json)
52
- end
53
-
54
- def add_bootstrap(script)
55
- @bootstrap_scripts << script
56
- end
57
-
58
36
  def errors
59
37
  errors = {}
60
38
 
@@ -81,54 +59,6 @@ module Caterer
81
59
 
82
60
  # provision engine
83
61
 
84
- def bootstrap(server)
85
-
86
- # validate
87
- with_bootstrap_scripts do |script, count|
88
-
89
- if not File.exists? script
90
- server.ui.error "#{script} does not exist!"
91
- return
92
- end
93
-
94
- end
95
-
96
- # upload
97
- with_bootstrap_scripts do |script, count|
98
-
99
- server.ui.info "Uploading #{script}..."
100
- server.ssh.upload script, "#{target_bootstrap_path}-#{count}"
101
-
102
- server.ssh.sudo "chown #{server.username} #{target_bootstrap_path}-#{count}", :stream => true
103
- server.ssh.sudo "chmod +x #{target_bootstrap_path}-#{count}", :stream => true
104
-
105
- end
106
-
107
- # run
108
- with_bootstrap_scripts do |script, count|
109
-
110
- server.ui.info "Running #{script}..."
111
- res = server.ssh.sudo "#{target_bootstrap_path}-#{count}", :stream => true
112
-
113
- unless res == 0
114
- server.ui.error "#{script} failed with exit code: #{res}"
115
- end
116
-
117
- end
118
-
119
- end
120
-
121
- def bootstrapped?(server)
122
- res = server.ssh.sudo "command -v chef-solo &>/dev/null"
123
- res == 0 ? true : false
124
- end
125
-
126
- def prepare(server)
127
- # create base dir
128
- server.ssh.sudo "mkdir -p #{dest_dir}", :stream => true
129
- server.ssh.sudo "chown -R #{server.username} #{dest_dir}", :stream => true
130
- end
131
-
132
62
  def install(server)
133
63
  server.ui.info "Preparing installation..."
134
64
 
@@ -141,12 +71,30 @@ module Caterer
141
71
 
142
72
  res = server.ssh.sudo bash(File.read(installer)), :stream => true
143
73
 
74
+ # somewhere mark (on the server) that we installed chef-solo for later uninstall
75
+
144
76
  unless res == 0
145
77
  server.ui.error "install failed with exit code: #{res}"
146
78
  end
147
79
  end
148
80
 
149
- def provision(server)
81
+ def installed?(server)
82
+ res = server.ssh.sudo "command -v chef-solo &>/dev/null"
83
+ res == 0 ? true : false
84
+ end
85
+
86
+ def prepare(server)
87
+ # create lib dir
88
+ server.ssh.sudo "mkdir -p #{dest_lib_dir}", :stream => true
89
+ server.ssh.sudo "chown -R #{server.username} #{dest_lib_dir}", :stream => true
90
+
91
+ # create var dir
92
+ server.ssh.sudo "mkdir -p #{dest_var_dir}", :stream => true
93
+ server.ssh.sudo "chown -R #{server.username} #{dest_var_dir}", :stream => true
94
+
95
+ # create cache dir
96
+ server.ssh.sudo "mkdir -p #{dest_cache_dir}", :stream => true
97
+ server.ssh.sudo "chown -R #{server.username} #{dest_cache_dir}", :stream => true
150
98
 
151
99
  # create cookbooks directory
152
100
  server.ssh.sudo "mkdir -p #{target_cookbooks_path}", :stream => true
@@ -187,82 +135,73 @@ module Caterer
187
135
  server.ssh.upload(StringIO.new(json_config(config_data.merge(server.data))), target_json_config_path)
188
136
 
189
137
  # set permissions on everything
190
- server.ssh.sudo "chown -R #{server.username} #{dest_dir}", :stream => true
138
+ server.ssh.sudo "chown -R #{server.username} #{dest_lib_dir}", :stream => true
139
+ server.ssh.sudo "chown -R #{server.username} #{dest_var_dir}", :stream => true
191
140
 
192
- # run
193
- server.ui.info "Running chef-solo..."
194
- res = server.ssh.sudo command_string, :stream => true
195
- unless res == 0
196
- server.ui.error "chef-solo failed with exit code: #{res}"
197
- end
198
141
  end
199
142
 
200
- def cleanup(server)
201
- server.ui.info "Cleaning up..."
202
-
203
- # installer
204
- server.ssh.sudo "rm -f #{target_install_path}", :stream => true
205
-
206
- # bootstrap scripts
207
- server.ssh.sudo "rm -f #{target_bootstrap_path}*", :stream => true
208
-
209
- # solo.rb
210
- server.ssh.sudo "rm -f #{target_solo_path}", :stream => true
211
-
212
- # json
213
- server.ssh.sudo "rm -f #{target_json_config_path}", :stream => true
214
-
215
- # for now, leave cookbooks, roles, and data bags for faster provisioning
143
+ def provision_cmd
144
+ "chef-solo -c #{target_solo_path} -j #{target_json_config_path}"
216
145
  end
217
146
 
218
147
  def uninstall(server)
219
148
  server.ui.info "Uninstalling..."
220
149
 
221
- server.ssh.sudo "rm -rf #{dest_dir}", :stream => true
150
+ # figure out how to uninstall chef_solo IF we installed it
222
151
  end
223
152
 
224
153
  protected
225
154
 
226
155
  def config
227
- @config ||= Caterer.config.provisioner.chef_solo
156
+ @config ||= Caterer.config
228
157
  end
229
158
 
230
- def with_bootstrap_scripts
231
- bootstrap_scripts.each_with_index do |script, index|
232
- yield script, index if block_given?
233
- end
159
+ def provisioner_config
160
+ @provisioner_config ||= config.provisioner.chef_solo
161
+ end
162
+
163
+ def dest_lib_dir
164
+ "#{image.lib_dir}/chef-solo"
165
+ end
166
+
167
+ def dest_var_dir
168
+ "#{image.var_dir}/chef-solo"
169
+ end
170
+
171
+ def dest_cache_dir
172
+ "#{dest_var_dir}/cache"
234
173
  end
235
174
 
236
175
  def target_install_path
237
- "#{dest_dir}/install"
176
+ "#{dest_lib_dir}/install"
238
177
  end
239
178
 
240
179
  def target_bootstrap_path
241
- "#{dest_dir}/bootstrap"
180
+ "#{dest_lib_dir}/bootstrap"
242
181
  end
243
182
 
244
183
  def target_cookbooks_path
245
- "#{dest_dir}/cookbooks"
184
+ "#{dest_lib_dir}/cookbooks"
246
185
  end
247
186
 
248
187
  def target_roles_path
249
- "#{dest_dir}/roles"
188
+ "#{dest_lib_dir}/roles"
250
189
  end
251
190
 
252
191
  def target_data_bags_path
253
- "#{dest_dir}/data_bags"
192
+ "#{dest_lib_dir}/data_bags"
254
193
  end
255
194
 
256
195
  def target_solo_path
257
- "#{dest_dir}/solo.rb"
196
+ "#{dest_lib_dir}/solo.rb"
258
197
  end
259
198
 
260
199
  def target_json_config_path
261
- "#{dest_dir}/config.json"
200
+ "#{dest_lib_dir}/config.json"
262
201
  end
263
202
 
264
203
  def install_script(platform)
265
- File.expand_path("../../../templates/provisioner/chef_solo/bootstrap/#{platform}.sh", __FILE__)
204
+ File.expand_path("../../../templates/provisioner/chef_solo/install/#{platform}.sh", __FILE__)
266
205
  end
267
206
 
268
207
  def solo_content(server)
@@ -287,10 +226,6 @@ module Caterer
287
226
  end
288
227
  end
289
228
 
290
- def command_string
291
- "chef-solo -c #{target_solo_path} -j #{target_json_config_path}"
292
- end
293
-
294
229
  end
295
230
  end
296
231
  end