docker-builder 0.1.18 → 0.1.19

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d4320cc85611a30b29aee60fab02a876f69b0be1
4
- data.tar.gz: 37d32f80ee68ecf05165d11b49df8d489c2dc247
3
+ metadata.gz: 9decd6798b5b0e74debf337079619b93a7f9b55b
4
+ data.tar.gz: bb395e7fd4f4ec4f7401e72956f2d6e255ec1125
5
5
  SHA512:
6
- metadata.gz: fb167023690c10af147ee0a9d3f363f38c9e9afb3a868ba59c354ef32d828fe6abee975d1e49ec86402c08d1b1ce1df4c6254d4778a3a7f0a5c589100a355b79
7
- data.tar.gz: 0bb3ed630bc2a25674d1c0ae3d0b3f962ba9c6aa2b8e9ce006c142bdd8748a88e68aee75bb41819a3b1e42674e019a38212742e5b6dbbe2dcd8aad9728969a08
6
+ metadata.gz: a6be299c8ce18ac07a5948551e4e5e41e2c125a25eb57cf2f63b5159166635e82c482d3a6f2a7093703880d6ea89f362a08d1aca8ebc56b57cedd92ee06582f7
7
+ data.tar.gz: 04ad6e29653eb83590d8685ebf8ab73644af52e4ea8b46dcce1b5fcd2f23ed95d86fccd4069f31e84bd71333d268f3d11022276e56d58a3285cf61343e11ed16
@@ -0,0 +1,61 @@
1
+ common({
2
+ 'prefix' => "example-",
3
+ 'image_prefix' => 'example-',
4
+ 'dir_data' => '/disk3/data/my-examples/',
5
+
6
+ })
7
+
8
+ servers({
9
+ 'redis'=>{
10
+
11
+ 'build' => {
12
+ "image_name" => "redis",
13
+ 'build_type' => 'none',
14
+
15
+ "base_image" => {
16
+ "name" => "redis",
17
+ "repository" => "redis",
18
+ "tag" => "3.2.4"
19
+
20
+ },
21
+
22
+ },
23
+
24
+ 'install'=> {
25
+ },
26
+
27
+ 'docker'=> {
28
+ #"command"=> "",
29
+ 'ports' => [
30
+ [6379,80],
31
+ ],
32
+ 'volumes' => [
33
+ ],
34
+ 'links' => [
35
+ ],
36
+
37
+ # network
38
+ #"ip"=>"10.1.0.144",
39
+ #"net"=> "pub_net",
40
+
41
+ # for swarm
42
+ "swarm_network"=> "pub_net",
43
+ #"swarm_options" => ""
44
+ "swarm_options" => "--replicas=1 --restart-max-attempts=1"
45
+ #"swarm_options" => "-e constraint:node==mmxpc "
46
+ # --net=pub_net --ip=10.1.0.131
47
+
48
+ },
49
+
50
+ 'attributes'=> {
51
+ }
52
+
53
+ }, # / redis
54
+
55
+
56
+ })
57
+
58
+
59
+ base({
60
+
61
+ })
@@ -0,0 +1,10 @@
1
+ * create swarm and network
2
+ docker swarm init ...
3
+
4
+
5
+ * run in swarm mode
6
+
7
+ docker-builder up_swarm -s redis
8
+
9
+ * destroy
10
+ docker-builder up_swarm -s redis
data/install_local.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.18.gem
2
+ gem install ./docker-builder-0.1.19.gem
@@ -11,8 +11,10 @@ module DockerBuilder
11
11
  # Require Backup base files
12
12
  %w{
13
13
  config
14
+ command
14
15
  cli
15
16
  server_settings
16
17
  manager
18
+ manager_swarm
17
19
  }.each {|lib| require File.join(LIBRARY_PATH, lib) }
18
20
  end
@@ -329,6 +329,120 @@ class CLI < Thor
329
329
 
330
330
  end
331
331
 
332
+
333
+ ### swarm mode
334
+
335
+ ##
336
+ # [up_swarm]
337
+ #
338
+ #
339
+ desc 'up_swarm', 'Run Docker container in swarm mode'
340
+
341
+ long_desc <<-EOS.gsub(/^ +/, '')
342
+ Run Docker container in swarm mode.
343
+ EOS
344
+
345
+ method_option :server,
346
+ :aliases => ['-s', '--server'],
347
+ :required => false,
348
+ :type => :string,
349
+ :desc => "Server name"
350
+
351
+ method_option :root_path,
352
+ :aliases => '-r',
353
+ :type => :string,
354
+ :default => '',
355
+ :desc => 'Root path to base all relative path on.'
356
+
357
+ method_option :config_file,
358
+ :aliases => '-c',
359
+ :type => :string,
360
+ :default => 'config.rb',
361
+ :desc => 'Path to your config.rb file.'
362
+
363
+ def up_swarm
364
+ puts "running..."
365
+
366
+ warnings = false
367
+ errors = false
368
+
369
+
370
+ servers = nil
371
+ begin
372
+ Config.load(options)
373
+
374
+ Config.servers.each do |name, opts|
375
+ server_settings = Settings.load_settings_for_server(name)
376
+
377
+ ManagerSwarm.destroy_service(name, server_settings)
378
+ ManagerSwarm.create_service(name, server_settings)
379
+ end
380
+
381
+ rescue Exception => err
382
+ puts "exception: #{err.inspect}"
383
+ raise err
384
+ exit(3)
385
+ end
386
+
387
+ exit(errors ? 2 : 1) if errors || warnings
388
+
389
+ end
390
+
391
+ ##
392
+ # [destroy_swarm]
393
+ #
394
+ #
395
+ desc 'destroy_swarm', 'Remove service in Docker swarm mode'
396
+
397
+ long_desc <<-EOS.gsub(/^ +/, '')
398
+ Remove service in Docker swarm mode
399
+ EOS
400
+
401
+ method_option :server,
402
+ :aliases => ['-s', '--server'],
403
+ :required => false,
404
+ :type => :string,
405
+ :desc => "Server name"
406
+
407
+ method_option :root_path,
408
+ :aliases => '-r',
409
+ :type => :string,
410
+ :default => '',
411
+ :desc => 'Root path to base all relative path on.'
412
+
413
+ method_option :config_file,
414
+ :aliases => '-c',
415
+ :type => :string,
416
+ :default => 'config.rb',
417
+ :desc => 'Path to your config.rb file.'
418
+
419
+ def destroy_swarm
420
+ puts "destroying..."
421
+
422
+ warnings = false
423
+ errors = false
424
+
425
+ servers = nil
426
+ begin
427
+ Config.load(options)
428
+
429
+ Config.servers.each do |name, opts|
430
+ server_settings = Settings.load_settings_for_server(name)
431
+ ManagerSwarm.destroy_service(name, server_settings)
432
+ end
433
+
434
+ rescue Exception => err
435
+ puts "exception: #{err.inspect}"
436
+ raise err
437
+ exit(3)
438
+ end
439
+
440
+ exit(errors ? 2 : 1) if errors || warnings
441
+
442
+ end
443
+
444
+
445
+
332
446
  ##
333
447
  # [clear_cache]
334
448
  #
@@ -0,0 +1,16 @@
1
+ module DockerBuilder
2
+ class Command
3
+
4
+ def self.cmd(s)
5
+ puts "running: #{s}"
6
+
7
+ res = nil
8
+ Bundler.with_clean_env do
9
+ res = `#{s}`
10
+ end
11
+
12
+ puts "#{res}"
13
+ end
14
+
15
+ end
16
+ end
@@ -361,14 +361,7 @@ class Manager
361
361
  ###
362
362
 
363
363
  def self.cmd(s)
364
- puts "running: #{s}"
365
-
366
- res = nil
367
- Bundler.with_clean_env do
368
- res = `#{s}`
369
- end
370
-
371
- puts "#{res}"
364
+ Command.cmd(s)
372
365
  end
373
366
 
374
367
 
@@ -0,0 +1,46 @@
1
+ module DockerBuilder
2
+ class ManagerSwarm
3
+
4
+ def self.destroy_service(server_name, settings)
5
+ puts "destroying service #{server_name}..."
6
+
7
+ #
8
+ cmd %Q(docker service rm #{settings.container_name} )
9
+
10
+ #
11
+ return true
12
+ end
13
+
14
+
15
+ def self.create_service(server_name, settings={})
16
+ puts "create swarm service.."
17
+
18
+ # destroy
19
+ destroy_service(server_name, settings)
20
+
21
+
22
+ # create service
23
+ docker_opts = settings.attributes['docker']
24
+
25
+ run_opts = []
26
+ run_opts << "--network #{docker_opts['swarm_network']}" if docker_opts['swarm_network']
27
+ run_opts << docker_opts['swarm_options']
28
+
29
+ cmd %Q(docker service create \
30
+ --name #{settings.container_name} #{settings.docker_ports_string} \
31
+ #{run_opts.join(' ')} \
32
+ #{settings.image_name} #{settings['docker']['command']}
33
+ )
34
+ end
35
+
36
+
37
+
38
+ # helpers
39
+
40
+ def self.cmd(s)
41
+ Command.cmd(s)
42
+ end
43
+
44
+
45
+ end
46
+ end
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.18"
2
+ VERSION = "0.1.19"
3
3
  end
data/readme.md CHANGED
@@ -485,3 +485,25 @@ Sometimes you need to clear cache with server info in chef-zero server
485
485
  ```
486
486
  docker-builder clear_cache
487
487
  ```
488
+
489
+
490
+ # Run in swarm mode
491
+
492
+ * commands
493
+
494
+ docker-builder :up_swarm
495
+
496
+ docker-builder :destroy_swarm
497
+
498
+
499
+ * config
500
+
501
+ ```
502
+ docker: {
503
+ # options here...
504
+ }
505
+ ```
506
+
507
+ * swarm_network - network name
508
+ * swarm_options - options to pass to docker service create command
509
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak
@@ -67,7 +67,6 @@ files:
67
67
  - Rakefile
68
68
  - bin/console
69
69
  - bin/setup
70
- - bootstrap_local.sh
71
70
  - docker-builder.gemspec
72
71
  - examples/example-apps-php/.chef/knife.rb
73
72
  - examples/example-apps-php/config.rb
@@ -119,6 +118,8 @@ files:
119
118
  - examples/example-nginx/servers/nginx/scripts/install.sh
120
119
  - examples/example-nginx/temp/ex_nginx.json
121
120
  - examples/example-nginx/temp/nginx.json
121
+ - examples/example-swarm-redis/config.rb
122
+ - examples/example-swarm-redis/readme.md
122
123
  - exe/docker-builder
123
124
  - install_local.sh
124
125
  - lib/docker_builder.rb
@@ -135,6 +136,7 @@ files:
135
136
  - lib/docker_builder/chef/config_run_install_container_service.json
136
137
  - lib/docker_builder/chef/install_container_service.rb
137
138
  - lib/docker_builder/cli.rb
139
+ - lib/docker_builder/command.rb
138
140
  - lib/docker_builder/config.rb
139
141
  - lib/docker_builder/config/dsl.rb
140
142
  - lib/docker_builder/config/helpers.rb
@@ -148,6 +150,7 @@ files:
148
150
  - lib/docker_builder/cookbooks/docker-builder/recipes/provision_container.rb
149
151
  - lib/docker_builder/cookbooks/docker-builder/resources/mycontainer.rb
150
152
  - lib/docker_builder/manager.rb
153
+ - lib/docker_builder/manager_swarm.rb
151
154
  - lib/docker_builder/server_settings.rb
152
155
  - lib/docker_builder/version.rb
153
156
  - lib/templates/example-chef/.chef/knife.rb
data/bootstrap_local.sh DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
-
3
- chef exec knife zero bootstrap 10.1.0.12 --node-name server-api-local --overwrite --ssh-user mmx --ssh-password Galactic1 --sudo --use-sudo-password 2>&1