packer-config 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +1 -1
- data/Gemfile +10 -0
- data/README.md +1 -1
- data/RELEASENOTES.md +5 -1
- data/lib/packer-config.rb +17 -14
- data/lib/packer/dataobject.rb +1 -1
- data/lib/packer/version.rb +1 -1
- data/packer-config.gemspec +5 -15
- data/spec/packer/provisioners/puppet/masterless_spec.rb +2 -2
- data/spec/packer_config_spec.rb +14 -21
- data/tasks/rubocop.rake +3 -1
- metadata +4 -116
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdd9616df0548b2607fc93a93880270f58ca46fa
|
4
|
+
data.tar.gz: 9a184d7d17f0a6682aefd1f17fbf3d66a53978ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3b494a1807f093cd67c9e700d9c622941cef01b5c3d613aa74f59d55ada1665372deac186da75fbc224c49adbc31d6a8f636a3509e3993804729de9465cd2df
|
7
|
+
data.tar.gz: d93976dd629da5c2437d2f071e51ad4db552fe886adf388a231de2a015f8db473216deb74e4950bba610a9187e1f460c140902ddcd9a488f380929c0768c4f50
|
data/.rubocop_todo.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,3 +1,13 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
+
group :development, :test do
|
4
|
+
gem 'bundler', '~> 1.11'
|
5
|
+
gem 'rake', '~> 10.5'
|
6
|
+
gem 'rspec', '~> 3.4'
|
7
|
+
gem 'rspec-mocks', '~> 3.4'
|
8
|
+
gem 'fakefs', '~> 0.7'
|
9
|
+
gem 'rubocop', '~> 0.36'
|
10
|
+
gem 'rubygems-tasks', '~> 0.2'
|
11
|
+
end
|
12
|
+
|
3
13
|
gemspec
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ model to build the Packer configurations in that would easily write to the
|
|
13
13
|
correct JSON format. It also saved me having to remember the esoteric Packer
|
14
14
|
syntax for referencing variables and whatnot in the JSON.
|
15
15
|
|
16
|
-
Bonus: you can really go to town with templates when it's all done
|
16
|
+
Bonus: you can really go to town with templates when it's all done in Ruby.
|
17
17
|
|
18
18
|
## Installation
|
19
19
|
|
data/RELEASENOTES.md
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
# packer-config Release Notes
|
2
2
|
|
3
|
+
## 1.6.0
|
4
|
+
|
5
|
+
* Support for running Packer on Windows!
|
6
|
+
|
3
7
|
## 1.5.0
|
4
8
|
|
5
|
-
* Adds json object support the the chef-solo provisioner (via [
|
9
|
+
* Adds json object support the the chef-solo provisioner (via [enzor][]).
|
6
10
|
* Fixes Travis-CI setup so tests work with newer bundler
|
7
11
|
|
8
12
|
## 1.4.0
|
data/lib/packer-config.rb
CHANGED
@@ -8,7 +8,7 @@ require 'packer/postprocessor'
|
|
8
8
|
require 'packer/macro'
|
9
9
|
require 'packer/envvar'
|
10
10
|
require 'packer/version'
|
11
|
-
require '
|
11
|
+
require 'rubygems/dependency'
|
12
12
|
|
13
13
|
module Packer
|
14
14
|
class Config < Packer::DataObject
|
@@ -21,7 +21,7 @@ module Packer
|
|
21
21
|
attr_reader :envvar
|
22
22
|
attr_reader :output_file
|
23
23
|
|
24
|
-
PACKER_VERSION = '0.
|
24
|
+
PACKER_VERSION = '0.9.0'
|
25
25
|
|
26
26
|
def initialize(file)
|
27
27
|
super()
|
@@ -39,7 +39,7 @@ module Packer
|
|
39
39
|
def validate
|
40
40
|
super
|
41
41
|
verify_packer_version
|
42
|
-
if self.builders.
|
42
|
+
if self.builders.empty?
|
43
43
|
raise DataValidationError.new("At least one builder is required")
|
44
44
|
end
|
45
45
|
self.builders.each(&:validate)
|
@@ -67,13 +67,13 @@ module Packer
|
|
67
67
|
self.builders.each do |thing|
|
68
68
|
data_copy['builders'].push(thing.deep_copy)
|
69
69
|
end
|
70
|
-
|
70
|
+
unless self.provisioners.empty?
|
71
71
|
data_copy['provisioners'] = []
|
72
72
|
self.provisioners.each do |thing|
|
73
73
|
data_copy['provisioners'].push(thing.deep_copy)
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
unless self.postprocessors.empty?
|
77
77
|
data_copy['post-processors'] = []
|
78
78
|
self.postprocessors.each do |thing|
|
79
79
|
data_copy['post-processors'].push(thing.deep_copy)
|
@@ -159,19 +159,22 @@ module Packer
|
|
159
159
|
"{{user `#{name}`}}"
|
160
160
|
end
|
161
161
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
162
|
+
def verify_packer_version
|
163
|
+
min_packer_version PACKER_VERSION
|
164
|
+
version = /Packer v(\d+\.\d+\.\d+)/.match(
|
165
|
+
Packer::Runner.run!(packer, 'version', quiet: true)
|
166
|
+
)[1]
|
167
|
+
Gem::Dependency.new('', ">= #{PACKER_VERSION}").match?('', version) || raise("Packer version #{version} is not new enough (requires >= #{PACKER_VERSION})")
|
168
|
+
end
|
167
169
|
|
168
170
|
def min_packer_version(version)
|
169
171
|
self.__add_string('min_packer_version', version)
|
170
172
|
end
|
171
173
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
174
|
+
private
|
175
|
+
|
176
|
+
attr_writer :output_file
|
177
|
+
attr_writer :macro
|
178
|
+
attr_writer :envvar
|
176
179
|
end
|
177
180
|
end
|
data/lib/packer/dataobject.rb
CHANGED
@@ -24,7 +24,7 @@ module Packer
|
|
24
24
|
|
25
25
|
def validate_required
|
26
26
|
self.required.each do |r|
|
27
|
-
if (r.is_a? Array) &&
|
27
|
+
if (r.is_a? Array) && !r.empty?
|
28
28
|
if r.length - (r - self.data.keys).length == 0
|
29
29
|
raise DataValidationError.new("Missing one required setting from the set #{r}")
|
30
30
|
end
|
data/lib/packer/version.rb
CHANGED
data/packer-config.gemspec
CHANGED
@@ -4,10 +4,10 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'packer/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'packer-config'
|
8
8
|
spec.version = Packer::VERSION
|
9
9
|
spec.authors = ["Ian Chesal", "Fraser Cobb", "Greg Poirier", "Matasano Security", "Greg Diamond", "Enzo Rivello"]
|
10
|
-
spec.email =
|
10
|
+
spec.email = %w(ian.chesal@gmail.com)
|
11
11
|
spec.summary = 'An object model to build packer.io configurations in Ruby.'
|
12
12
|
spec.description = <<-END
|
13
13
|
Building the Packer JSON configurations in raw JSON can be quite an adventure.
|
@@ -17,22 +17,12 @@ model to build the Packer configurations in that would easily write to the
|
|
17
17
|
correct JSON format. It also saved me having to remember the esoteric Packer
|
18
18
|
syntax for referencing variables and whatnot in the JSON.
|
19
19
|
END
|
20
|
-
spec.homepage =
|
21
|
-
spec.license =
|
20
|
+
spec.homepage = 'https://github.com/ianchesal/packer-config'
|
21
|
+
spec.license = 'Apache 2.0'
|
22
22
|
spec.required_ruby_version = '>= 2.0.0'
|
23
23
|
|
24
24
|
spec.files = `git ls-files -z`.split("\x0")
|
25
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
26
26
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
27
|
-
spec.require_paths =
|
28
|
-
|
29
|
-
spec.add_runtime_dependency "lowered-expectations", '~> 1'
|
30
|
-
|
31
|
-
spec.add_development_dependency "bundler", "~> 1.11"
|
32
|
-
spec.add_development_dependency "rake", "~> 10.5"
|
33
|
-
spec.add_development_dependency "rspec", "~> 3.4"
|
34
|
-
spec.add_development_dependency "rspec-mocks", "~> 3.4"
|
35
|
-
spec.add_development_dependency "fakefs", "~> 0.7"
|
36
|
-
spec.add_development_dependency "rubocop", "~> 0.36"
|
37
|
-
spec.add_development_dependency "rubygems-tasks", "~> 0.2"
|
27
|
+
spec.require_paths = %w(lib)
|
38
28
|
end
|
@@ -104,7 +104,7 @@ RSpec.describe Packer::Provisioner do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
describe '#module_paths' do
|
107
|
-
it 'accepts an array of strings'do
|
107
|
+
it 'accepts an array of strings' do
|
108
108
|
provisioner.module_paths(some_array_of_strings)
|
109
109
|
expect(provisioner.data['module_paths']).to eq(some_array_of_strings)
|
110
110
|
provisioner.data.delete('module_paths')
|
@@ -138,4 +138,4 @@ RSpec.describe Packer::Provisioner do
|
|
138
138
|
provisioner.data.delete('staging_directory')
|
139
139
|
end
|
140
140
|
end
|
141
|
-
end
|
141
|
+
end
|
data/spec/packer_config_spec.rb
CHANGED
@@ -20,32 +20,13 @@ RSpec.describe Packer::Config do
|
|
20
20
|
|
21
21
|
describe "#validate" do
|
22
22
|
it 'returns true for a valid instance' do
|
23
|
-
expect(packer.builders).to receive(:
|
23
|
+
expect(packer.builders).to receive(:empty?).and_return(false)
|
24
24
|
expect(Packer::Runner).to receive(:run!).and_return('')
|
25
|
-
expect(
|
25
|
+
expect(packer).to receive(:verify_packer_version).and_return(true)
|
26
26
|
FakeFS do
|
27
27
|
expect(packer.validate).to be_truthy
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
31
|
-
it 'raises an error for an invalid instance' do
|
32
|
-
expect(packer.builders).to receive(:length).and_return(0)
|
33
|
-
expect(LoweredExpectations).to receive(:expect).and_return(true)
|
34
|
-
FakeFS do
|
35
|
-
expect { packer.validate }.to raise_error
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'sets the minimum Packer version' do
|
40
|
-
expect(packer.builders).to receive(:length).and_return(1)
|
41
|
-
expect(Packer::Runner).to receive(:run!).and_return('')
|
42
|
-
expect(LoweredExpectations).to receive(:expect).and_return(true)
|
43
|
-
expect(packer.data['min_packer_version']).to be_falsey
|
44
|
-
FakeFS do
|
45
|
-
expect(packer.validate).to be_truthy
|
46
|
-
end
|
47
|
-
expect(packer.data['min_packer_version']).to eq(Packer::Config::PACKER_VERSION)
|
48
|
-
end
|
49
30
|
end
|
50
31
|
|
51
32
|
describe '#dump' do
|
@@ -190,4 +171,16 @@ RSpec.describe Packer::Config do
|
|
190
171
|
expect(packer.macro.var).to eq('{{ .Var }}')
|
191
172
|
end
|
192
173
|
end
|
174
|
+
|
175
|
+
describe '#verify_packer_version' do
|
176
|
+
it 'validates Packer is a high enough version' do
|
177
|
+
expect(Packer::Runner).to receive(:run!).and_return('Packer v1.0.0')
|
178
|
+
expect(packer.verify_packer_version).to be_truthy
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'raises an error if the version of Packer is not high enough' do
|
182
|
+
expect(Packer::Runner).to receive(:run!).and_return('Packer v0.0.1')
|
183
|
+
expect{ packer.verify_packer_version }.to raise_error
|
184
|
+
end
|
185
|
+
end
|
193
186
|
end
|
data/tasks/rubocop.rake
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packer-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Chesal
|
@@ -13,120 +13,8 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2016-
|
17
|
-
dependencies:
|
18
|
-
- !ruby/object:Gem::Dependency
|
19
|
-
name: lowered-expectations
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
requirements:
|
22
|
-
- - "~>"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '1'
|
25
|
-
type: :runtime
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - "~>"
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '1'
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: bundler
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - "~>"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '1.11'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - "~>"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '1.11'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rake
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - "~>"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '10.5'
|
53
|
-
type: :development
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '10.5'
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: rspec
|
62
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '3.4'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '3.4'
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: rspec-mocks
|
76
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - "~>"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: '3.4'
|
81
|
-
type: :development
|
82
|
-
prerelease: false
|
83
|
-
version_requirements: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - "~>"
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '3.4'
|
88
|
-
- !ruby/object:Gem::Dependency
|
89
|
-
name: fakefs
|
90
|
-
requirement: !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - "~>"
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '0.7'
|
95
|
-
type: :development
|
96
|
-
prerelease: false
|
97
|
-
version_requirements: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - "~>"
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0.7'
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: rubocop
|
104
|
-
requirement: !ruby/object:Gem::Requirement
|
105
|
-
requirements:
|
106
|
-
- - "~>"
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version: '0.36'
|
109
|
-
type: :development
|
110
|
-
prerelease: false
|
111
|
-
version_requirements: !ruby/object:Gem::Requirement
|
112
|
-
requirements:
|
113
|
-
- - "~>"
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
version: '0.36'
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
|
-
name: rubygems-tasks
|
118
|
-
requirement: !ruby/object:Gem::Requirement
|
119
|
-
requirements:
|
120
|
-
- - "~>"
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: '0.2'
|
123
|
-
type: :development
|
124
|
-
prerelease: false
|
125
|
-
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - "~>"
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '0.2'
|
16
|
+
date: 2016-04-08 00:00:00.000000000 Z
|
17
|
+
dependencies: []
|
130
18
|
description: |
|
131
19
|
Building the Packer JSON configurations in raw JSON can be quite an adventure.
|
132
20
|
There's limited facilities for variable expansion and absolutely no support for
|
@@ -252,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
252
140
|
version: '0'
|
253
141
|
requirements: []
|
254
142
|
rubyforge_project:
|
255
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.4.6
|
256
144
|
signing_key:
|
257
145
|
specification_version: 4
|
258
146
|
summary: An object model to build packer.io configurations in Ruby.
|