docker-builder 0.1.50 → 0.1.55

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/{Rakefile → Rakefile_temp} +8 -7
  3. data/install_local.sh +1 -1
  4. data/lib/docker_builder.rb +4 -1
  5. data/lib/docker_builder/cli.rb +23 -56
  6. data/lib/docker_builder/config.rb +75 -34
  7. data/lib/docker_builder/config/dsl.rb +17 -1
  8. data/lib/docker_builder/{manager.rb → manager_container.rb} +25 -308
  9. data/lib/docker_builder/manager_image.rb +103 -0
  10. data/lib/docker_builder/provisioner/base.rb +188 -0
  11. data/lib/docker_builder/provisioner/{provisioner_chef.rb → chef.rb} +5 -1
  12. data/lib/docker_builder/server_settings.rb +34 -64
  13. data/lib/docker_builder/version.rb +1 -1
  14. data/readme.md +118 -79
  15. data/temp_config.rb +17 -0
  16. metadata +8 -58
  17. data/examples/example-apps-php/.chef/knife.rb +0 -6
  18. data/examples/example-apps-php/config.rb +0 -19
  19. data/examples/example-apps-php/servers/apps-php/.chef/knife.rb +0 -2
  20. data/examples/example-apps-php/servers/apps-php/config.rb +0 -69
  21. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/README.md +0 -1
  22. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/metadata.rb +0 -9
  23. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/build.rb +0 -43
  24. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install.rb +0 -55
  25. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_app.rb +0 -27
  26. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/recipes/install_host.rb +0 -9
  27. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/index.html.erb +0 -4
  28. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb +0 -55
  29. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/app.conf.erb.1 +0 -55
  30. data/examples/example-apps-php/servers/apps-php/cookbooks/apps-php/templates/nginx-sites/default.conf.erb +0 -45
  31. data/examples/example-apps-php/servers/apps-php/readme.md +0 -0
  32. data/examples/example-apps-php/temp/apps-php.1.json +0 -14
  33. data/examples/example-base-chef/.chef/knife.rb +0 -6
  34. data/examples/example-base-chef/config.rb +0 -19
  35. data/examples/example-base-chef/readme.md +0 -8
  36. data/examples/example-base-chef/servers/my/.chef/knife.rb +0 -2
  37. data/examples/example-base-chef/servers/my/config.rb +0 -53
  38. data/examples/example-base-chef/servers/my/cookbooks/my/README.md +0 -1
  39. data/examples/example-base-chef/servers/my/cookbooks/my/metadata.rb +0 -9
  40. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/build.rb +0 -23
  41. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install.rb +0 -0
  42. data/examples/example-base-chef/servers/my/cookbooks/my/recipes/install_host.rb +0 -9
  43. data/examples/example-base-chef/servers/my/readme.md +0 -0
  44. data/examples/example-kafka-zookeeper/config.rb +0 -87
  45. data/examples/example-kafka-zookeeper/servers/kafka/Dockerfile +0 -21
  46. data/examples/example-kafka-zookeeper/servers/kafka/README.md +0 -78
  47. data/examples/example-kafka-zookeeper/servers/kafka/files/LICENSE +0 -202
  48. data/examples/example-kafka-zookeeper/servers/kafka/files/broker-list.sh +0 -5
  49. data/examples/example-kafka-zookeeper/servers/kafka/files/create-topics.sh +0 -32
  50. data/examples/example-kafka-zookeeper/servers/kafka/files/download-kafka.sh +0 -5
  51. data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka-shell.sh +0 -2
  52. data/examples/example-kafka-zookeeper/servers/kafka/files/start-kafka.sh +0 -67
  53. data/examples/example-nginx/config.rb +0 -19
  54. data/examples/example-nginx/servers/nginx/.chef/knife.rb +0 -8
  55. data/examples/example-nginx/servers/nginx/config.rb +0 -55
  56. data/examples/example-nginx/servers/nginx/cookbooks/nginx/README.md +0 -1
  57. data/examples/example-nginx/servers/nginx/cookbooks/nginx/metadata.rb +0 -9
  58. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/build.rb +0 -10
  59. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install.rb +0 -28
  60. data/examples/example-nginx/servers/nginx/cookbooks/nginx/recipes/install_host.rb +0 -9
  61. data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/index.html.erb +0 -4
  62. data/examples/example-nginx/servers/nginx/cookbooks/nginx/templates/nginx-sites/default.conf.erb +0 -45
  63. data/examples/example-nginx/servers/nginx/readme.md +0 -0
  64. data/examples/example-nginx/servers/nginx/scripts/install.sh +0 -3
  65. data/examples/example-nginx/temp/ex_nginx.json +0 -20
  66. data/examples/example-nginx/temp/nginx.json +0 -1
  67. data/examples/example-swarm-redis/config.rb +0 -61
  68. data/examples/example-swarm-redis/readme.md +0 -10
  69. data/lib/docker_builder/temp.rb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 788eee0ed4df18ea4e4a1fd77f10911e9cde33d1
4
- data.tar.gz: 624e35b8b6b25a1076a30dd14f3a63e5d8c3a63c
3
+ metadata.gz: 900f989de3f0c47d40b6494a9e419acd6ca42324
4
+ data.tar.gz: 491ee67ea44c3564aed1c1492b9f79198a69f9ef
5
5
  SHA512:
6
- metadata.gz: 2bbc60def511de0598840ab560068fc0ed2211f9e81eac2f6ce6004d2ad1c72b83187fae613a4b231b57096fcb46528896093c1ba45e87c0e9baae6278c7ee63
7
- data.tar.gz: ffe1afc13b3d998384dba5ff084d9370411d98daa5f6abeeef91fe4f87bab323a259c90b65d6e9f88ae11cacc32a08b59c89695b21ed0b582a8da3d7b633efe9
6
+ metadata.gz: 9613b5f3f6800d10c304ce9684dba601eab390abf7eec04f33db24893b390910bd2a59b5335dba6940b0e58029dd9cbe0c750923b2fff58e36636daba161d19c
7
+ data.tar.gz: 02022477d3b197ab3a17100fecffdda1542db020637af80b7b0d728bbbb86c1e21b0c9a6472f2a9b265876279a93128e28c7ba1a0c98f88e60b29ddb363985e6
@@ -7,7 +7,8 @@ SERVERS = %w(redis mysql elasticsearch phpmyadmin phpredisadmin apps-ruby nginx
7
7
 
8
8
  #
9
9
  require_relative 'lib/docker_builder/server_settings'
10
- require_relative 'lib/docker_builder/manager'
10
+ require_relative 'lib/docker_builder/manager_image'
11
+ require_relative 'lib/docker_builder/manager_container'
11
12
 
12
13
 
13
14
 
@@ -15,14 +16,14 @@ require_relative 'lib/docker_builder/manager'
15
16
  desc "Build image"
16
17
  task :build, [:name] do |task, args|
17
18
  #name = args[:name]
18
- Manager.build_image(name)
19
+ ManagerImage.build_image(name)
19
20
  #sh "sh build_#{name}.sh"
20
21
  end
21
22
 
22
23
  desc "Destroy image"
23
24
  task :destroy_image, [:name] do |task, args|
24
25
  name = args[:name]
25
- Manager.destroy_image(name)
26
+ ManagerImage.destroy_image(name)
26
27
  end
27
28
 
28
29
 
@@ -39,14 +40,14 @@ end
39
40
  desc "Run container"
40
41
  task :run, [:name] do |task, args|
41
42
  name = args[:name]
42
- Manager.run_container(name)
43
+ ManagerContainer.run_container(name)
43
44
  end
44
45
 
45
46
 
46
47
  desc "Start container"
47
48
  task :start, [:name] do |task, args|
48
49
  name = args[:name]
49
- Manager.start_container(name)
50
+ ManagerContainer.start_container(name)
50
51
  end
51
52
 
52
53
  desc "Restart container"
@@ -59,7 +60,7 @@ end
59
60
 
60
61
  desc "Destroy container"
61
62
  task :destroy, [:name] do |task, args|
62
- Manager.destroy_container(args[:name])
63
+ ManagerContainer.destroy_container(args[:name])
63
64
  end
64
65
 
65
66
  =begin
@@ -135,6 +136,6 @@ end
135
136
 
136
137
  desc 'Exec task, run_test[name,recipe_name]'
137
138
  task :exec, [:name, :recipe_name] do |task, args|
138
- Manager.exec_task(args[:name], args[:recipe_name])
139
+ ManagerContainer.exec_task(args[:name], args[:recipe_name])
139
140
 
140
141
  end
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.50.gem
2
+ gem install ./docker-builder-0.1.54.gem
@@ -14,7 +14,10 @@ module DockerBuilder
14
14
  command
15
15
  cli
16
16
  server_settings
17
- manager
17
+ manager_image
18
+ manager_container
18
19
  manager_swarm
20
+ provisioner/base
21
+ provisioner/chef
19
22
  }.each {|lib| require File.join(LIBRARY_PATH, lib) }
20
23
  end
@@ -46,46 +46,20 @@ class CLI < Thor
46
46
  warnings = false
47
47
  errors = false
48
48
 
49
-
50
- servers = nil
51
49
  begin
52
50
  Config.load(options)
53
51
 
54
- #puts "config servers: #{Config.inspect}"
55
- #puts "config: #{Config.options.inspect}"
56
- #exit
57
-
58
- Config.servers.each do |name, opts|
59
- server_settings = Settings.load_settings_for_server(name)
52
+ Config.servers.each do |name, server_settings|
53
+ #server_settings = Settings.load_settings_for_server(name)
60
54
 
61
55
  #puts "s: #{server_settings.inspect}"
62
- #exit
63
56
 
64
- Manager.destroy_image(name, server_settings)
65
- Manager.build_image(name, server_settings)
57
+ ManagerImage.destroy_image(name, server_settings)
58
+ ManagerImage.build_image(name, server_settings)
66
59
  end
67
60
 
68
61
 
69
- #servers = options[:server].split(',').map(&:strip)
70
- #models = triggers.map {|trigger|
71
- # Model.find_by_trigger(trigger)
72
- #}.flatten.uniq
73
-
74
- #raise Error, "No servers found " + "'#{ triggers.join(',') }'." if models.empty?
75
-
76
- # Finalize Logger and begin real-time logging.
77
- #Logger.start!
78
-
79
62
  rescue Exception => err
80
- #Logger.error Error.wrap(err)
81
- #unless Helpers.is_backup_error? err
82
- # Logger.error err.backtrace.join("\n")
83
- #end
84
-
85
- # Logger configuration will be ignored
86
- # and messages will be output to the console only.
87
- #Logger.abort!
88
-
89
63
  puts "exception: #{err.inspect}"
90
64
  raise err
91
65
  exit(3)
@@ -130,15 +104,13 @@ class CLI < Thor
130
104
  warnings = false
131
105
  errors = false
132
106
 
133
- servers = nil
134
-
135
107
  begin
136
108
  Config.load(options)
137
109
 
138
- Config.servers.each do |name, opts|
139
- server_settings = Settings.load_settings_for_server(name)
110
+ Config.servers.each do |name, server_settings|
111
+ #server_settings = Settings.load_settings_for_server(name)
140
112
 
141
- Manager.destroy_image(name, server_settings)
113
+ ManagerImage.destroy_image(name, server_settings)
142
114
  end
143
115
 
144
116
  rescue Exception => err
@@ -189,19 +161,18 @@ class CLI < Thor
189
161
  errors = false
190
162
 
191
163
 
192
- servers = nil
193
164
  begin
194
165
  Config.load(options)
195
166
 
196
- Config.servers.each do |name, opts|
197
- server_settings = Settings.load_settings_for_server(name)
167
+ Config.servers.each do |name, server_settings|
168
+ #server_settings = Settings.load_settings_for_server(name)
198
169
 
199
170
  if server_settings.is_swarm_mode?
200
171
  ManagerSwarm.destroy_service(name, server_settings)
201
172
  ManagerSwarm.create_service(name, server_settings)
202
173
  else
203
- Manager.destroy_container(name, server_settings)
204
- Manager.run_container(name, server_settings)
174
+ ManagerContainer.destroy_container(name, server_settings)
175
+ ManagerContainer.run_container(name, server_settings)
205
176
  end
206
177
 
207
178
  end
@@ -255,10 +226,10 @@ class CLI < Thor
255
226
  begin
256
227
  Config.load(options)
257
228
 
258
- Config.servers.each do |name, opts|
259
- server_settings = Settings.load_settings_for_server(name)
229
+ Config.servers.each do |name, server_settings|
230
+ #server_settings = Settings.load_settings_for_server(name)
260
231
 
261
- Manager.start_container(name, server_settings)
232
+ ManagerContainer.start_container(name, server_settings)
262
233
  end
263
234
 
264
235
  rescue Exception => err
@@ -309,18 +280,16 @@ class CLI < Thor
309
280
  warnings = false
310
281
  errors = false
311
282
 
312
-
313
- servers = nil
314
283
  begin
315
284
  Config.load(options)
316
285
 
317
- Config.servers.each do |name, opts|
318
- server_settings = Settings.load_settings_for_server(name)
286
+ Config.servers.each do |name, server_settings|
287
+ #server_settings = Settings.load_settings_for_server(name)
319
288
 
320
289
  if server_settings.is_swarm_mode?
321
290
  ManagerSwarm.destroy_service(name, server_settings)
322
291
  else
323
- Manager.destroy_container(name, server_settings)
292
+ ManagerContainer.destroy_container(name, server_settings)
324
293
  end
325
294
 
326
295
  end
@@ -375,14 +344,13 @@ class CLI < Thor
375
344
  errors = false
376
345
 
377
346
 
378
- servers = nil
379
347
  begin
380
348
  Config.load(options)
381
349
 
382
- Config.servers.each do |name, opts|
383
- server_settings = Settings.load_settings_for_server(name)
350
+ Config.servers.each do |name, server_settings|
351
+ #server_settings = Settings.load_settings_for_server(name)
384
352
 
385
- Manager.stop_container(name, server_settings)
353
+ ManagerContainer.stop_container(name, server_settings)
386
354
  end
387
355
 
388
356
  rescue Exception => err
@@ -435,14 +403,13 @@ class CLI < Thor
435
403
  warnings = false
436
404
  errors = false
437
405
 
438
- servers = nil
439
406
  begin
440
407
  Config.load(options)
441
408
 
442
- Config.servers.each do |name, opts|
443
- server_settings = Settings.load_settings_for_server(name)
409
+ Config.servers.each do |name, server_settings|
410
+ #server_settings = Settings.load_settings_for_server(name)
444
411
 
445
- Manager.clear_cache(name, server_settings)
412
+ ManagerContainer.clear_cache(name, server_settings)
446
413
  end
447
414
 
448
415
  rescue Exception => err
@@ -16,7 +16,8 @@ module DockerBuilder
16
16
  class << self
17
17
  #include Utilities::Helpers
18
18
 
19
- attr_reader :servers, :root_path, :config_file, :tmp_path, :options
19
+ attr_reader :servers, :options,
20
+ :root_path, :config_file, :tmp_path
20
21
 
21
22
 
22
23
  # Define on self, since it's a class method
@@ -36,9 +37,10 @@ module DockerBuilder
36
37
 
37
38
  # Loads the user's +config.rb+ and all model files.
38
39
  def load(opts = {})
39
- puts "update opts from #{opts}"
40
40
  update(opts) # from the command line
41
41
 
42
+ #config_file = 'temp_config.rb'
43
+
42
44
  puts "config file: #{config_file}"
43
45
 
44
46
  unless File.exist?(config_file)
@@ -46,27 +48,40 @@ module DockerBuilder
46
48
  raise "Could not find configuration file: '#{config_file}'."
47
49
  end
48
50
 
49
- config = File.read(config_file)
50
-
51
- #version = DockerBuilder::VERSION.split('.').first
52
- #unless config =~ /^# Backup v#{ version }\.x Configuration$/
53
- # raise Error, <<-EOS
54
- # Invalid Configuration File
55
- # EOS
56
- #end
51
+ text_config = File.read(config_file)
57
52
 
58
53
  dsl = DSL.new
59
- dsl.instance_eval(config, config_file)
54
+ dsl.instance_eval(text_config, config_file)
60
55
 
56
+ # set options from dsl object
61
57
  update(dsl._config_options) # from config.rb
62
- update(opts) # command line takes precedence
58
+ # command line takes precedence
59
+ update(opts)
63
60
 
64
61
  #Dir[File.join(File.dirname(config_file), 'models', '*.rb')].each do |model|
65
62
  # dsl.instance_eval(File.read(model), model)
66
63
  #end
67
64
 
68
65
  # servers
69
- load_servers(opts)
66
+ # Identify all servers
67
+ if @options['server']
68
+ srv_name = @options['server'] || @options[:server]
69
+ # one server
70
+ @servers = {srv_name => dsl._config_servers[srv_name]}
71
+ else
72
+ # all servers
73
+ @servers = dsl._config_servers
74
+ end
75
+
76
+
77
+ @servers.each do |name, sc|
78
+ # from common config
79
+ sc.common_config = self
80
+ sc.properties['name'] ||= name
81
+ #sc.properties['common'] = Config.options[:common]
82
+ end
83
+
84
+
70
85
 
71
86
  end
72
87
 
@@ -88,21 +103,57 @@ module DockerBuilder
88
103
  @options
89
104
  end
90
105
 
91
- def servers
92
- options[:servers]
93
- end
106
+ #def servers
107
+ #options[:servers]
108
+ #@_servers || []
109
+ #end
94
110
 
95
- def load_servers(opts)
96
- # Identify all servers
97
- if opts[:server]
98
- server_name = opts[:server]
99
- options[:servers] = {server_name=>options[:servers][server_name] }
100
- else
101
- # get from config
102
- #options[:servers] = options[:servers]
111
+
112
+ ### NOT USED
113
+ ## TODO: refactor
114
+ def self.load_settings_for_server(name, opts={})
115
+ settings = ServerSettings.new
116
+
117
+ settings.set 'name', name
118
+
119
+ # set from main Config
120
+ Config.servers[name].each do |k,v|
121
+ settings.properties[k]=v
103
122
  end
104
123
 
105
124
 
125
+ #puts "current=#{File.dirname(__FILE__)}"
126
+ #puts "ff=#{file_base_settings}"
127
+
128
+ #
129
+ #t = File.read(file_base_settings) rescue ''
130
+ #eval(t, settings.get_binding)
131
+
132
+
133
+ #
134
+ f = file_settings_for_server(name)
135
+ t = File.read(f) rescue ''
136
+ eval(t, settings.get_binding)
137
+
138
+ #
139
+ settings.properties['name'] ||= name
140
+
141
+ # from common config
142
+ settings.properties['common'] = Config.options[:common]
143
+
144
+ settings
145
+ end
146
+
147
+
148
+ ### helpers
149
+
150
+ def self.file_settings_for_server(name)
151
+ #File.join(File.dirname(__FILE__), '..', 'config', "#{name}.rb")
152
+ File.join(Config.root_path, 'servers', name, 'config.rb')
153
+ end
154
+
155
+ def self.file_server_base_settings
156
+ File.join(File.dirname(__FILE__), '..', 'config' ,'common.rb')
106
157
  end
107
158
 
108
159
 
@@ -119,23 +170,17 @@ module DockerBuilder
119
170
  #puts "root from opts = #{root_path}"
120
171
 
121
172
  if root_path.empty?
122
- #puts " set default"
123
173
  root_path = File.path(Dir.getwd)
124
- #puts "default root = #{root_path}"
125
174
  end
126
175
 
127
176
  new_root = root_path.empty? ? false : set_root_path(root_path)
128
177
 
129
- #puts "FINAL root= #{@root_path}"
130
- #exit
131
-
132
178
  DEFAULTS.each do |name, ending|
133
179
  set_path_variable(name, options[name], ending, new_root)
134
180
  end
135
181
 
136
182
  # options
137
183
  opts.each do |name, v|
138
- #puts "set var #{name} == #{v}"
139
184
  set_variable(name, v)
140
185
  end
141
186
 
@@ -147,8 +192,6 @@ module DockerBuilder
147
192
  # Sets the @root_path to the given +path+ and returns it.
148
193
  # Raises an error if the given +path+ does not exist.
149
194
  def set_root_path(path)
150
- #puts "set path = #{path}"
151
-
152
195
  # allows #reset! to set the default @root_path,
153
196
  # then use #update to set all other paths,
154
197
  # without requiring that @root_path exist.
@@ -156,8 +199,6 @@ module DockerBuilder
156
199
 
157
200
  path = File.expand_path(path)
158
201
 
159
- #puts " res root path=#{path}"
160
-
161
202
  unless File.directory?(path)
162
203
  raise Error, <<-EOS
163
204
  Root Path Not Found
@@ -8,9 +8,11 @@ module DockerBuilder
8
8
  #Server = DockerBuilder::Server
9
9
 
10
10
  attr_reader :_config_options
11
+ attr_reader :_config_servers
11
12
 
12
13
  def initialize
13
14
  @_config_options = {}
15
+ @_config_servers = {}
14
16
  end
15
17
 
16
18
  # Allow users to set command line path options in config.rb
@@ -18,12 +20,26 @@ module DockerBuilder
18
20
  define_method name, lambda {|path| _config_options[name] = path }
19
21
  end
20
22
 
23
+ # options - common
24
+ [
25
+ :prefix, :image_prefix, :container_prefix, :service_prefix,
26
+ :dir_data
27
+ ].each do |name|
28
+ define_method name, lambda {|path| _config_options[name] = path }
29
+ end
30
+
21
31
  # allowed options
22
- [:servers, :common, :base].each do |name|
32
+ [:common, :base].each do |name|
23
33
  define_method name, lambda {|v| _config_options[name] = v }
24
34
  end
25
35
 
26
36
 
37
+ def server(server_name, &block)
38
+ sc = ServerSettings.new
39
+ block.call(sc)
40
+ #sc.instance_eval(&block)
41
+ _config_servers[server_name] = sc
42
+ end
27
43
 
28
44
  # Allows users to create preconfigured models.
29
45
  =begin