packer-config 1.5.0 → 1.6.0
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 +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.
|