docker-builder 0.1.18 → 0.1.19

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