docker-builder 0.1.50 → 0.1.55

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