caterer 0.11.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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