packer-config 1.0.0 → 1.1.0

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: 53d3143e6e5d9d38f42ce4bfd9a3058342cb76d6
4
- data.tar.gz: a1c1a866ef9269219854bd308982432db11fb402
3
+ metadata.gz: 148517d2535b585d2b88e40901b6f5c5e393b715
4
+ data.tar.gz: 04f60d496b44cfb03181914a6657a789be35a8f9
5
5
  SHA512:
6
- metadata.gz: c6335a14566099a7b0ba0c3f597c8746084d37de59bd97069350e3826aeb66fbc7e239aa65ed086bfa41bd13b1a27b58bd08c9ce19a498ee5d8aa3596024b412
7
- data.tar.gz: d7b7723bd04c85d172a80eb11c108efffdba7eaad43bcc94418acc05c405ac9eb5e01228c474084206ef49c1d77f8db15b3252b74e8687bfce1fda3ced5e05dc
6
+ metadata.gz: c45a724bbd36bcb1746e91e15e5499452970c1474e347c71307035cd571d0446cfaa4ca04df27915f4ecaa0985254f479fd34fb177719f28dfe73f5a11502589
7
+ data.tar.gz: ffacf9de4ecd57ff523123cf29ba7a03dc07106aba1b21f259c55942a986972300e44a6930a97f5b31bce9abb246e2b990718690b75b560123b35ac688857260
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /spec/integration/*.json
10
+ spec/integration/centos-6.*-x86_64-virtualbox
10
11
  /test/tmp/
11
12
  /test/version_tmp/
12
13
  /tmp/
@@ -34,4 +35,4 @@ Gemfile.lock
34
35
  .ruby-gemset
35
36
 
36
37
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
37
- .rvmrc
38
+ .rvmrc
data/COPYRIGHT CHANGED
@@ -4,6 +4,7 @@ Including, but not limited to:
4
4
 
5
5
  Ian Chesal
6
6
  Fraser Cobb
7
+ Greg Poirier
7
8
 
8
9
  For licensing information please see LICENSE. Copyright holders contributing to
9
10
  this project agree to have their contributions licensed under the terms of the
@@ -1,5 +1,8 @@
1
1
  # packer-config Release Notes
2
2
 
3
+ ## 1.1.0
4
+ * Thanks to [grepory](https://github.com/grepory) we have a `vmware-vmx` builder
5
+
3
6
  ## 1.0.0
4
7
  * A 1.0.0 release because...why not? You're either working or you're not and this is working so let's drop the `0.x.x` pretense and tango.
5
8
  * Thanks to [frasercobb](https://github.com/frasercobb) we have `puppet-server` and `puppet-masterless` provisioner interfaces
data/Rakefile CHANGED
@@ -1,33 +1,3 @@
1
1
  # Encoding: utf-8
2
- require 'rubocop/rake_task'
3
- require 'rspec/core/rake_task'
4
- require 'fileutils'
5
-
6
- RuboCop::RakeTask.new(:lint)
7
-
2
+ Dir.glob('tasks/**/*.rake').each(&method(:import))
8
3
  task :default => [:lint, 'test:spec']
9
-
10
- task :build => [:lint, 'test:spec', :clean] do
11
- `gem build packer-config.gemspec`
12
- end
13
-
14
- namespace :test do
15
- RSpec::Core::RakeTask.new(:spec) do |t|
16
- t.pattern = Dir['spec/**/*_spec.rb'].reject{ |f| f['/integration'] }
17
- end
18
-
19
- RSpec::Core::RakeTask.new(:integration) do |t|
20
- t.pattern = "spec/integration/**/*_spec.rb"
21
- end
22
- end
23
-
24
- CLEAN = FileList['deployment_dir/**/*'].exclude('*.txt')
25
-
26
- task :clean do
27
- FileList['spec/integration/packer_cache/*'].each do |f|
28
- FileUtils.rm_f(f)
29
- end
30
- Dir.glob('spec/integration/builds/*').select {|f| File.directory? f}.each do |d|
31
- FileUtils.rm_rf(d)
32
- end
33
- end
@@ -7,11 +7,10 @@ require 'packer/provisioner'
7
7
  require 'packer/postprocessor'
8
8
  require 'packer/macro'
9
9
  require 'packer/envvar'
10
+ require 'packer/version'
10
11
 
11
12
  module Packer
12
13
  class Config < Packer::DataObject
13
- VERSION = '1.0.0'
14
-
15
14
  attr_accessor :builders
16
15
  attr_accessor :postprocessors
17
16
  attr_accessor :provisioners
@@ -7,6 +7,7 @@ module Packer
7
7
  AMAZON_INSTANCE = 'amazon-instance'
8
8
  DOCKER = 'docker'
9
9
  VIRTUALBOX_ISO = 'virtualbox-iso'
10
+ VMWARE_VMX = 'vmware-vmx'
10
11
  NULL = 'null'
11
12
 
12
13
  VALID_BUILDER_TYPES = [
@@ -14,6 +15,7 @@ module Packer
14
15
  AMAZON_INSTANCE,
15
16
  DOCKER,
16
17
  VIRTUALBOX_ISO,
18
+ VMWARE_VMX,
17
19
  NULL
18
20
  ]
19
21
 
@@ -29,6 +31,7 @@ module Packer
29
31
  AMAZON_INSTANCE => Packer::Builder::Amazon::Instance,
30
32
  DOCKER => Packer::Builder::Docker,
31
33
  VIRTUALBOX_ISO => Packer::Builder::VirtualBoxISO,
34
+ VMWARE_VMX => Packer::Builder::VMWareVMX,
32
35
  NULL => Packer::Builder::Null
33
36
  }.fetch(type).new
34
37
  end
@@ -2,4 +2,5 @@
2
2
  require 'packer/builders/amazon'
3
3
  require 'packer/builders/docker'
4
4
  require 'packer/builders/virtualbox'
5
+ require 'packer/builders/vmware_vmx'
5
6
  require 'packer/builders/null'
@@ -0,0 +1,110 @@
1
+ module Packer
2
+ class Builder
3
+ class VMWareVMX < Builder
4
+ def initialize
5
+ super
6
+ data['type'] = VMWARE_VMX
7
+ add_required(
8
+ 'source_path',
9
+ 'ssh_username'
10
+ )
11
+ end
12
+
13
+ def source_path(path)
14
+ __add_string('source_path', path)
15
+ end
16
+
17
+ def ssh_username(username)
18
+ __add_string('ssh_username', username)
19
+ end
20
+
21
+ def ssh_password(password)
22
+ __add_string('ssh_password', password)
23
+ end
24
+
25
+ def boot_command(commands)
26
+ __add_array_of_strings('boot_command', commands)
27
+ end
28
+
29
+ def boot_wait(wait)
30
+ __add_string('boot_wait', wait)
31
+ end
32
+
33
+ def floppy_files(files)
34
+ __add_array_of_strings('floppy_files', files)
35
+ end
36
+
37
+ def fusion_app_path(app_path)
38
+ __add_string('fusion_app_path', app_path)
39
+ end
40
+
41
+ def headless(bool)
42
+ __add_boolean('headless', bool)
43
+ end
44
+
45
+ def http_directory(path)
46
+ __add_string('http_directory', path)
47
+ end
48
+
49
+ def http_port_min(port)
50
+ __add_integer('http_port_min', port)
51
+ end
52
+
53
+ def http_port_max(port)
54
+ __add_integer('http_port_max', port)
55
+ end
56
+
57
+ def output_directory(path)
58
+ __add_string('output_directory', path)
59
+ end
60
+
61
+ def shutdown_command(command)
62
+ __add_string('shutdown_command', command)
63
+ end
64
+
65
+ def shutdown_timeout(timeout)
66
+ __add_string('shutdown_timeout', timeout)
67
+ end
68
+
69
+ def skip_compaction(bool)
70
+ __add_boolean('skip_compaction', bool)
71
+ end
72
+
73
+ def ssh_key_path(path)
74
+ __add_string('ssh_key_path', path)
75
+ end
76
+
77
+ def ssh_port(port)
78
+ __add_integer('ssh_port', port)
79
+ end
80
+
81
+ def ssh_skip_request_pty(bool)
82
+ __add_boolean('ssh_skip_request_pty', bool)
83
+ end
84
+
85
+ def ssh_wait_timeout(timeout)
86
+ __add_string('ssh_wait_timeout', timeout)
87
+ end
88
+
89
+ def vm_name(name)
90
+ __add_string('vm_name', name)
91
+ end
92
+
93
+ def vmx_data(data_hash)
94
+ __add_hash('vmx_data', data_hash)
95
+ end
96
+
97
+ def vmx_data_post(data_hash)
98
+ __add_hash('vmx_data_post', data_hash)
99
+ end
100
+
101
+ def vnc_port_min(port)
102
+ __add_integer('vnc_port_min', port)
103
+ end
104
+
105
+ def vnc_port_max(port)
106
+ __add_integer('vnc_port_max', port)
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,3 @@
1
+ module Packer
2
+ VERSION = "1.1.0"
3
+ end
@@ -1,9 +1,11 @@
1
1
  # Encoding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'packer/version'
5
+
2
6
  Gem::Specification.new do |spec|
3
7
  spec.name = "packer-config"
4
- spec.version = "1.0.0"
5
- # For deploying alpha versions via Travis CI
6
- spec.version = "#{spec.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
8
+ spec.version = Packer::VERSION
7
9
  spec.authors = ["Ian Chesal", "Fraser Cobb"]
8
10
  spec.email = ["ian.chesal@gmail.com"]
9
11
  spec.summary = 'An object model to build packer.io configurations in Ruby.'
@@ -24,10 +26,11 @@ END
24
26
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
27
  spec.require_paths = ["lib"]
26
28
 
27
- spec.add_development_dependency "bundler", "~> 1.6"
29
+ spec.add_development_dependency "bundler", "~> 1.7"
28
30
  spec.add_development_dependency "rake", "~> 10.3"
29
31
  spec.add_development_dependency "rspec", "~> 3.0"
30
32
  spec.add_development_dependency "rspec-mocks", "~> 3.0"
31
33
  spec.add_development_dependency "fakefs", "~> 0.5"
32
34
  spec.add_development_dependency "rubocop", "~> 0.24"
35
+ spec.add_development_dependency "rubygems-tasks", "~> 0.2"
33
36
  end
@@ -0,0 +1,29 @@
1
+ # Encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Packer::Builder::VMWareVMX do
5
+ let(:builder) { Packer::Builder.get_builder(Packer::Builder::VMWARE_VMX) }
6
+
7
+ describe '#initialize' do
8
+ it 'has a type of VMWare VMX' do
9
+ expect(builder.data['type']).to eq(Packer::Builder::VMWARE_VMX)
10
+ end
11
+
12
+ it 'requires source_path' do
13
+ expect { builder.validate }.to raise_error(Packer::DataObject::DataValidationError)
14
+ builder.source_path 'path'
15
+ builder.ssh_username 'user'
16
+ expect { builder.validate }.not_to raise_error
17
+ end
18
+ end
19
+
20
+ describe '#vmx_data' do
21
+ it 'adds a hash of arbitrary data' do
22
+ builder.vmx_data(
23
+ key1: 'value1',
24
+ key2: 'value2'
25
+ )
26
+ expect(builder.data['vmx_data'].keys.length).to eq(2)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ require 'fileutils'
2
+
3
+ CLEAN = FileList['deployment_dir/**/*'].exclude('*.txt')
4
+
5
+ task :clean do
6
+ FileList['spec/integration/packer_cache/*'].each do |f|
7
+ FileUtils.rm_f(f)
8
+ end
9
+ Dir.glob('spec/integration/builds/*').select {|f| File.directory? f}.each do |d|
10
+ FileUtils.rm_rf(d)
11
+ end
12
+ Dir.glob('spec/integration/*.json').select {|f| File.file? f}.each do |d|
13
+ FileUtils.rm_f(d)
14
+ end
15
+ end
16
+
@@ -0,0 +1,12 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ namespace :test do
4
+ RSpec::Core::RakeTask.new(:spec) do |t|
5
+ t.pattern = Dir['spec/**/*_spec.rb'].reject{ |f| f['/integration'] }
6
+ end
7
+
8
+ RSpec::Core::RakeTask.new(:integration) do |t|
9
+ t.pattern = "spec/integration/**/*_spec.rb"
10
+ end
11
+ end
12
+
@@ -0,0 +1,3 @@
1
+ require 'rubocop/rake_task'
2
+
3
+ RuboCop::RakeTask.new(:lint)
@@ -0,0 +1,2 @@
1
+ require 'rubygems/tasks'
2
+ Gem::Tasks.new
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.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Chesal
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-26 00:00:00.000000000 Z
12
+ date: 2015-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.6'
20
+ version: '1.7'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.6'
27
+ version: '1.7'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.24'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubygems-tasks
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.2'
98
112
  description: |
99
113
  Building the Packer JSON configurations in raw JSON can be quite an adventure.
100
114
  There's limited facilities for variable expansion and absolutely no support for
@@ -125,6 +139,7 @@ files:
125
139
  - lib/packer/builders/docker.rb
126
140
  - lib/packer/builders/null.rb
127
141
  - lib/packer/builders/virtualbox.rb
142
+ - lib/packer/builders/vmware_vmx.rb
128
143
  - lib/packer/dataobject.rb
129
144
  - lib/packer/envvar.rb
130
145
  - lib/packer/macro.rb
@@ -143,6 +158,7 @@ files:
143
158
  - lib/packer/provisioners/salt.rb
144
159
  - lib/packer/provisioners/shell.rb
145
160
  - lib/packer/runner.rb
161
+ - lib/packer/version.rb
146
162
  - packer-config.gemspec
147
163
  - spec/integration/README.md
148
164
  - spec/integration/builds/.gitignore
@@ -152,7 +168,7 @@ files:
152
168
  - spec/integration/scripts/cleanup.sh
153
169
  - spec/integration/scripts/fix-slow-dns.sh
154
170
  - spec/integration/scripts/hello.sh
155
- - spec/integration/scripts/kickstart/centos-6.5-ks.cfg
171
+ - spec/integration/scripts/kickstart/centos-6.6-ks.cfg
156
172
  - spec/integration/scripts/minimize.sh
157
173
  - spec/integration/scripts/sshd.sh
158
174
  - spec/integration/scripts/vagrant.sh
@@ -162,6 +178,7 @@ files:
162
178
  - spec/packer/builders/docker_spec.rb
163
179
  - spec/packer/builders/null_spec.rb
164
180
  - spec/packer/builders/virtualbox_spec.rb
181
+ - spec/packer/builders/vmware_vmx_spec.rb
165
182
  - spec/packer/dataobject_spec.rb
166
183
  - spec/packer/envvar_spec.rb
167
184
  - spec/packer/macro_spec.rb
@@ -182,6 +199,10 @@ files:
182
199
  - spec/packer_config_spec.rb
183
200
  - spec/spec_helper.rb
184
201
  - spec/unit_helper.rb
202
+ - tasks/clean.rake
203
+ - tasks/rspec.rake
204
+ - tasks/rubocop.rake
205
+ - tasks/rubygems.rake
185
206
  homepage: https://github.com/ianchesal/packer-config
186
207
  licenses:
187
208
  - Apache 2.0
@@ -215,7 +236,7 @@ test_files:
215
236
  - spec/integration/scripts/cleanup.sh
216
237
  - spec/integration/scripts/fix-slow-dns.sh
217
238
  - spec/integration/scripts/hello.sh
218
- - spec/integration/scripts/kickstart/centos-6.5-ks.cfg
239
+ - spec/integration/scripts/kickstart/centos-6.6-ks.cfg
219
240
  - spec/integration/scripts/minimize.sh
220
241
  - spec/integration/scripts/sshd.sh
221
242
  - spec/integration/scripts/vagrant.sh
@@ -225,6 +246,7 @@ test_files:
225
246
  - spec/packer/builders/docker_spec.rb
226
247
  - spec/packer/builders/null_spec.rb
227
248
  - spec/packer/builders/virtualbox_spec.rb
249
+ - spec/packer/builders/vmware_vmx_spec.rb
228
250
  - spec/packer/dataobject_spec.rb
229
251
  - spec/packer/envvar_spec.rb
230
252
  - spec/packer/macro_spec.rb