docker-builder 0.1.23 → 0.1.24

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: 67fd03923ffadd7432eb6e42694a94cdbf79af8c
4
- data.tar.gz: ad52f2eb9e4555b16bd497cd123e923b0d05f83e
3
+ metadata.gz: 23bcf79f32645c64e052f96e3a743a7a656bea21
4
+ data.tar.gz: 4747e4c276d7145149992f09b0653fa13d8ce116
5
5
  SHA512:
6
- metadata.gz: 92bb939895e8996ce507e00d43cba1e004c71a2e26e7ec0e259b15044a6f6f72adce8208c4770facc7421ec9d211fca4ab72b59e2e208aaf94e8598755443f83
7
- data.tar.gz: 8dd28c16a1ed9717f443f93ad24a04003f9df818e4c2cbb54555df70c74e7a894fcb41d84d91795a6f1d64a1f0251989a6877e8c2b8523185cb055562fa3036c
6
+ metadata.gz: 146476754d251afd605c5703ce701412fe8f427978fe19ab7569e0b6e4fabb6827451b3ba45e0ae95b2345471e01be938c4df40a624dfc3bd79a1235b1dc6356
7
+ data.tar.gz: 58613941f11efc95a40fa20e3c84e634db8972dc3dbfa139c7525a5da4d2b2abed2da42514ddd12d0cb896bbc9ee61d0c719d7fbb7f70911cd636e55a9bb86d2
data/install_local.sh CHANGED
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.21.gem
2
+ gem install ./docker-builder-0.1.24.gem
@@ -8,7 +8,7 @@ module DockerBuilder
8
8
 
9
9
 
10
10
  ##
11
- # Require Backup base files
11
+ # Require base files
12
12
  %w{
13
13
  config
14
14
  command
@@ -0,0 +1,102 @@
1
+ module DockerBuilder
2
+ module Builder
3
+ class Packer
4
+
5
+ attr_accessor :server
6
+
7
+ def server=(v)
8
+ @server = v
9
+ @server
10
+ end
11
+
12
+ def server
13
+ @server
14
+ end
15
+
16
+ def settings
17
+ server
18
+ end
19
+
20
+
21
+ def initialize(_settings)
22
+ puts "init: #{_settings}"
23
+ self.server = _settings
24
+
25
+ #puts "set settings: #{server}"
26
+ #puts "set settings: #{server}"
27
+ end
28
+
29
+ def build
30
+ #puts "build with settings: #{server}"
31
+
32
+ # config json
33
+ save_packer_config
34
+
35
+ DockerBuilder::Command.cmd %Q(packer build #{filename_config} )
36
+
37
+ end
38
+
39
+ # helpers
40
+ def save_packer_config
41
+ require 'json'
42
+ filename = filename_config
43
+ FileUtils.mkdir_p(File.dirname(filename))
44
+ File.open(filename,"w+") do |f|
45
+ f.write(build_packer_config.to_json)
46
+ end
47
+
48
+ true
49
+ end
50
+
51
+ def filename_config
52
+ File.join(Config.root_path, 'temp', "packer-#{settings.name}.json")
53
+ end
54
+
55
+ def build_packer_config
56
+
57
+ res = {}
58
+
59
+ res['variables'] = {}
60
+
61
+ res['builders'] = []
62
+
63
+ bi = settings.attributes['build']['base_image']
64
+ base_image_name = "#{bi['name']}:#{bi['tag']}"
65
+ res['builders'] << {
66
+ pull: false,
67
+ type: "docker",
68
+ image: base_image_name,
69
+ commit: true
70
+ }
71
+
72
+ #
73
+ recipe_name = settings['build']['packer']['recipe_name'] || 'build'
74
+ cookbook_paths = settings['build']['packer']['cookbook_paths'] || []
75
+ cookbook_paths << settings.dir_cookbooks
76
+
77
+ res["provisioners"] = [
78
+ {
79
+ type: "chef-solo",
80
+ prevent_sudo: true,
81
+ cookbook_paths: cookbook_paths,
82
+ json: settings.attributes['attributes'],
83
+ run_list: ["recipe[#{settings.name}::#{recipe_name}]"]
84
+ },
85
+ ]
86
+
87
+ # tag image
88
+ res["post-processors"] = [
89
+ {
90
+ repository: "#{settings.image_name}",
91
+ type: "docker-tag"
92
+ }
93
+ ]
94
+
95
+ res
96
+ end
97
+
98
+ end
99
+ end
100
+ end
101
+
102
+
@@ -30,6 +30,8 @@ class Manager
30
30
  return build_image_with_dockerfile(settings)
31
31
  elsif t=='chef'
32
32
  return build_image_with_chef(settings)
33
+ elsif t=='packer'
34
+ return build_image_with_packer(settings)
33
35
  end
34
36
  end
35
37
 
@@ -56,6 +58,15 @@ class Manager
56
58
  end
57
59
 
58
60
 
61
+ def self.build_image_with_packer(settings)
62
+ require_relative '../../lib/docker_builder/builder/packer'
63
+
64
+ puts "build image with packer"
65
+
66
+ builder = DockerBuilder::Builder::Packer.new(settings)
67
+ builder.build
68
+ end
69
+
59
70
 
60
71
 
61
72
  ### run
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.23"
2
+ VERSION = "0.1.24"
3
3
  end
data/readme.md CHANGED
@@ -188,7 +188,7 @@ http://localhost:8080
188
188
 
189
189
  # Basic usage
190
190
 
191
- # Provision wich shell script
191
+ # Provision with shell script
192
192
 
193
193
  * put scripts in `/path/to/project/ <<server_name>> / scripts / install.sh`
194
194
 
@@ -328,7 +328,8 @@ Config files:
328
328
  Build types:
329
329
  * 'none' - no build required
330
330
  * 'Dockerfile' - using Dockerfile and docker build command
331
- * 'chef' - using Chef provisioning
331
+ * 'chef' - using Chef provisioning (gem chef-provisioning-docker)
332
+ * 'packer' - using Packer tool
332
333
 
333
334
 
334
335
  # Chef provisioning
@@ -418,6 +419,36 @@ data for nginx server:
418
419
  },
419
420
  ```
420
421
 
422
+
423
+ ## Build with Packer
424
+
425
+ * config for server
426
+ ```
427
+ 'build' => {
428
+ 'build_type' => 'packer',
429
+ "image_name" => "myname",
430
+
431
+ "base_image" => {
432
+ "name" => "nginx",
433
+ "repository" => "nginx",
434
+ "tag" => "1.10"
435
+ },
436
+
437
+ "packer" => { options for packer }
438
+ },
439
+ ```
440
+
441
+ * options for packer
442
+
443
+ * cookbook_paths - list of paths
444
+ * recipe_name
445
+
446
+
447
+ * examples:
448
+ ```
449
+ ```
450
+
451
+
421
452
  # Run container
422
453
 
423
454
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-17 00:00:00.000000000 Z
11
+ date: 2017-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -123,6 +123,7 @@ files:
123
123
  - exe/docker-builder
124
124
  - install_local.sh
125
125
  - lib/docker_builder.rb
126
+ - lib/docker_builder/builder/packer.rb
126
127
  - lib/docker_builder/chef/.chef/knife.rb
127
128
  - lib/docker_builder/chef/chef_build_image.copy0.rb
128
129
  - lib/docker_builder/chef/chef_build_image.rb