vagrant-pe_build 0.13.7 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +25 -0
  3. data/README.markdown +24 -26
  4. data/lib/pe_build/archive.rb +6 -1
  5. data/lib/pe_build/cap.rb +5 -0
  6. data/lib/pe_build/cap/detect_installer/debian.rb +1 -1
  7. data/lib/pe_build/cap/detect_installer/sles.rb +1 -1
  8. data/lib/pe_build/cap/detect_installer/ubuntu.rb +1 -1
  9. data/lib/pe_build/cap/run_install/posix.rb +9 -25
  10. data/lib/pe_build/cap/run_install/windows.rb +26 -29
  11. data/lib/pe_build/cap/stage_installer/posix.rb +38 -0
  12. data/lib/pe_build/cap/stage_installer/windows.rb +33 -0
  13. data/lib/pe_build/config/global.rb +11 -0
  14. data/lib/pe_build/config_builder.rb +9 -3
  15. data/lib/pe_build/config_builder/0_x.rb +6 -0
  16. data/lib/pe_build/config_builder/{pe_agent.rb → 0_x/pe_agent.rb} +0 -0
  17. data/lib/pe_build/config_builder/{pe_bootstrap.rb → 0_x/pe_bootstrap.rb} +1 -0
  18. data/lib/pe_build/config_builder/1_x.rb +6 -0
  19. data/lib/pe_build/config_builder/1_x/pe_agent.rb +35 -0
  20. data/lib/pe_build/config_builder/1_x/pe_bootstrap.rb +91 -0
  21. data/lib/pe_build/config_builder/global.rb +10 -0
  22. data/lib/pe_build/plugin.rb +18 -0
  23. data/lib/pe_build/provisioner/pe_agent.rb +19 -16
  24. data/lib/pe_build/provisioner/pe_bootstrap.rb +64 -9
  25. data/lib/pe_build/provisioner/pe_bootstrap/post_install.rb +6 -1
  26. data/lib/pe_build/release.rb +2 -1
  27. data/lib/pe_build/release/2015_3.rb +1 -4
  28. data/lib/pe_build/release/2016_1.rb +29 -0
  29. data/lib/pe_build/util/pe_packaging.rb +2 -1
  30. data/lib/pe_build/version.rb +1 -1
  31. data/spec/unit/provisioner/pe_agent_spec.rb +1 -3
  32. data/templates/locales/en.yml +6 -2
  33. data/vagrant-pe_build.gemspec +3 -3
  34. metadata +32 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6fb108a09ab72f010038b21ddc2933bf0efe832c
4
- data.tar.gz: fbdb45d716f89915161d5b03544d652e0c7470fc
3
+ metadata.gz: aa2b46e048a5920609c5e99569e2f9465fbae3fa
4
+ data.tar.gz: f6040fefce357fe8921d77752972cb62cf19fc8a
5
5
  SHA512:
6
- metadata.gz: 0386ae66e02cf584543d6a6d59a620daec5bf132f9dbfec7f6d3659347c7e645446801f95a6ea36b6f479de0ed613eabe0def88c9bb02f9c267f0fda75909fe6
7
- data.tar.gz: 0c8ff26242f7b9de5a74633591e8158169b3804a3e7969f120a5506e4f1849c685576d660282250c1b3f25d65fac98cd8623c55378934bdb08fb1b48e2a86837
6
+ metadata.gz: d76bfcb63e366be1e748c5158878cbeb3b0c606999a95b47ce1b300171b9e357d5e4df6209604bebae54e614dca224102ffffc7bc31f7146cf4dc0aa325b08f9
7
+ data.tar.gz: 0d0e9dae36cb87e9c33a340e87296a00a2e0023001956020ce11cea8a5358ad81a080ee15246f5e4e390ce06aec4c633883470edb94cbfeca3ab596851d6996d
data/CHANGELOG CHANGED
@@ -1,6 +1,31 @@
1
1
  vagrant-pe_build
2
2
  ================
3
3
 
4
+ 0.14.0
5
+ ------
6
+
7
+ 2016-03-26
8
+
9
+ The is a backwards compatible feature release.
10
+
11
+ * (GH-40) The pe_bootstrap provisioner has been refactored to skip most
12
+ actions if PE is already installed.
13
+
14
+ * (GH-78) Provisioners running Windows installs now wait for msiexec to
15
+ complete and write logs to puppet-enterprise-installer.log.
16
+
17
+ * (GH-110) The pe_agent provisioner now installs Windows agents using packages
18
+ provided by pe_repo instead of falling back to the pe_bootstrap installer.
19
+
20
+ * (GH-112) The pe_boostrap provisioner can be configured to download
21
+ installers directly to the vm instead of relying on the /vagrant shared
22
+ filesystem by setting shared_installer to false. This is useful for
23
+ compute environments such as AWS and OpenStack where VMs are not running
24
+ directly on the Vagrant host.
25
+
26
+ * Add support for PE 3.8.4, 2015.3.3 and 2016.1.0.
27
+
28
+
4
29
  0.13.7
5
30
  ------
6
31
 
data/README.markdown CHANGED
@@ -25,7 +25,7 @@ optional and can be overridden in a VM's individual provisioner config.
25
25
  * `config.pe_build.version_file`
26
26
  * Description: A fully-qualified URI or a path relative to `download_root`. The contents of this file will be read and used to set `version` --- overriding any value that may already be set.
27
27
  * `config.pe_build.suffix` - Suffix of the Puppet Enterprise installer to use.
28
- * Description: The distribution specifix suffix of the Puppet Enterprise
28
+ * Description: The distribution specific suffix of the Puppet Enterprise
29
29
  installer to use.
30
30
  * Default: `:detect`
31
31
  * `config.pe_build.filename`
@@ -41,6 +41,11 @@ optional and can be overridden in a VM's individual provisioner config.
41
41
  * ftp
42
42
  * file
43
43
  * A blank URI will default to `file`.
44
+ * `config.pe_build.shared_installer`
45
+ * Description: Whether to run PE installation using installers and answers
46
+ shared using the `/vagrant` directory. If set to `false`, resources will
47
+ be downloaded remotely from `download_root`
48
+ to the home directory of whichever user account Vagrant is using. Defaults to `true`.
44
49
 
45
50
  ### `pe_bootstrap` Provisioner Settings
46
51
 
@@ -113,11 +118,7 @@ with the global `config.pe_build` settings.
113
118
  `master_vm` is set and `master_vm` if `vm.hostname` is not set.
114
119
  * `version`
115
120
  * Description: The version number of the PE Agent to install. **NOTE:**
116
- this setting is currently used only for Windows agents. POSIX agents will
117
- always receive the `'current'` version installed on the master. Support
118
- for setting the version number of POSIX agents will be added in a future
119
- release.
120
- * Options: A version string, `x.y.z[-optional-stuff]`, or the string
121
+ Currently, agents always receive the `'current'` version installed on the master. Support for setting the version number of agents will be added in a future release. * Options: A version string, `x.y.z[-optional-stuff]`, or the string
121
122
  `'current'`.
122
123
  * Default: `'current'`.
123
124
 
@@ -135,10 +136,10 @@ added with `vagrant pe-build copy`.
135
136
 
136
137
  ```ruby
137
138
  Vagrant.configure('2') do |config|
138
- config.pe_build.version = '3.8.2'
139
+ config.pe_build.version = '3.8.4'
139
140
 
140
141
  config.vm.define 'master' do |node|
141
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
142
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
142
143
 
143
144
  node.vm.provision :pe_bootstrap do |p|
144
145
  p.role = :master
@@ -146,7 +147,7 @@ Vagrant.configure('2') do |config|
146
147
  end
147
148
 
148
149
  config.vm.define 'agent1' do |node|
149
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
150
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
150
151
  node.vm.provision :pe_bootstrap
151
152
  end
152
153
  end
@@ -160,10 +161,10 @@ of `pe_bootstrap`.
160
161
 
161
162
  ```ruby
162
163
  Vagrant.configure('2') do |config|
163
- config.pe_build.version = '2015.2.2'
164
+ config.pe_build.version = '2015.3.3'
164
165
 
165
166
  config.vm.define 'master' do |node|
166
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
167
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
167
168
 
168
169
  node.vm.provision :pe_bootstrap do |p|
169
170
  p.role = :master
@@ -171,7 +172,7 @@ Vagrant.configure('2') do |config|
171
172
  end
172
173
 
173
174
  config.vm.define 'agent1' do |node|
174
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
175
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
175
176
  node.vm.provision :pe_agent do |p|
176
177
  p.master_vm = 'master'
177
178
  end
@@ -184,14 +185,14 @@ end
184
185
 
185
186
  ```ruby
186
187
  Vagrant.configure('2') do |config|
187
- config.pe_build.version = '3.8.2'
188
+ config.pe_build.version = '3.8.4'
188
189
  config.pe_build.download_root = 'http://my.pe.download.mirror/installers'
189
190
 
190
191
  # Alternately, a local directory can be specified
191
192
  #config.pe_build.download_root = 'file://Users/luke/Downloads'
192
193
 
193
194
  config.vm.define 'master' do |node|
194
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
195
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
195
196
 
196
197
  node.vm.provision :pe_bootstrap do |p|
197
198
  p.role = :master
@@ -199,7 +200,7 @@ Vagrant.configure('2') do |config|
199
200
  end
200
201
 
201
202
  config.vm.define 'agent1' do |node|
202
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
203
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
203
204
 
204
205
  node.vm.provision :pe_bootstrap
205
206
  end
@@ -211,14 +212,14 @@ end
211
212
 
212
213
  ```ruby
213
214
  Vagrant.configure('2') do |config|
214
- config.pe_build.version = '3.8.2'
215
+ config.pe_build.version = '3.8.4'
215
216
  config.pe_build.download_root = 'http://my.pe.download.mirror/installers'
216
217
 
217
218
  # Alternately, a local directory can be specified
218
219
  #config.pe_build.download_root = 'file://Users/luke/Downloads'
219
220
 
220
221
  config.vm.define 'master' do |node|
221
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
222
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
222
223
 
223
224
  node.vm.provision :pe_bootstrap do |p|
224
225
  p.role = :master
@@ -227,7 +228,7 @@ Vagrant.configure('2') do |config|
227
228
  end
228
229
 
229
230
  config.vm.define 'agent1' do |node|
230
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
231
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
231
232
 
232
233
  node.vm.provision :pe_bootstrap
233
234
  end
@@ -235,18 +236,15 @@ end
235
236
  ```
236
237
 
237
238
 
238
- ### Manually setting a filename
239
+ ### Manually setting an installer filename
239
240
 
240
241
  ```ruby
241
242
  Vagrant.configure('2') do |config|
242
- config.pe_build.version = '3.8.2'
243
- config.pe_build.filename = 'puppet-enterprise-3.8.2-el-7-x86_64.tar.gz'
244
-
245
- # Alternately, a local directory can be specified
246
- #config.pe_build.download_root = 'file://Users/luke/Downloads'
243
+ config.pe_build.version = '3.8.4'
244
+ config.pe_build.filename = 'puppet-enterprise-3.8.4-el-7-x86_64.tar.gz'
247
245
 
248
246
  config.vm.define 'master' do |node|
249
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
247
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
250
248
 
251
249
  node.vm.provision :pe_bootstrap do |p|
252
250
  p.role = :master
@@ -254,7 +252,7 @@ Vagrant.configure('2') do |config|
254
252
  end
255
253
 
256
254
  config.vm.define 'agent1' do |node|
257
- node.vm.box = 'puppetlabs/centos-7.0-64-nocm'
255
+ node.vm.box = 'puppetlabs/centos-7.2-64-nocm'
258
256
 
259
257
  node.vm.provision :pe_bootstrap
260
258
  end
@@ -64,7 +64,7 @@ module PEBuild
64
64
  raise PEBuild::ArchiveNoInstallerSource, :filename => versioned_path(@filename)
65
65
  end
66
66
 
67
- uri = URI.parse(versioned_path("#{str}/#{@filename}"))
67
+ uri = source_uri(str)
68
68
  dst = File.join(@archive_dir, versioned_path(@filename))
69
69
 
70
70
  PEBuild::Transfer.copy(uri, dst)
@@ -94,6 +94,11 @@ module PEBuild
94
94
  versioned_path(@filename)
95
95
  end
96
96
 
97
+ # @param base_uri [String, URI] A base uri for downloads.
98
+ def source_uri(base_uri)
99
+ URI.parse(versioned_path("#{base_uri.to_s}/#{@filename}"))
100
+ end
101
+
97
102
  def installer_dir
98
103
  versioned_path(@filename).gsub(/.tar(?:\.gz)?/, '')
99
104
  end
data/lib/pe_build/cap.rb CHANGED
@@ -30,5 +30,10 @@ module PEBuild
30
30
  require 'pe_build/cap/run_install/posix'
31
31
  require 'pe_build/cap/run_install/windows'
32
32
  end
33
+
34
+ module StageInstaller
35
+ require 'pe_build/cap/stage_installer/posix'
36
+ require 'pe_build/cap/stage_installer/windows'
37
+ end
33
38
  end
34
39
  end
@@ -13,7 +13,7 @@ class PEBuild::Cap::DetectInstaller::Debian < PEBuild::Cap::DetectInstaller::POS
13
13
  end
14
14
 
15
15
  def supported_releases
16
- %w[6 7]
16
+ %w[6 7 8]
17
17
  end
18
18
 
19
19
  def arch
@@ -13,7 +13,7 @@ class PEBuild::Cap::DetectInstaller::SLES < PEBuild::Cap::DetectInstaller::POSIX
13
13
  end
14
14
 
15
15
  def supported_releases
16
- %w[11]
16
+ %w[10 11 12]
17
17
  end
18
18
  end
19
19
 
@@ -13,7 +13,7 @@ class PEBuild::Cap::DetectInstaller::Ubuntu < PEBuild::Cap::DetectInstaller::POS
13
13
  end
14
14
 
15
15
  def supported_releases
16
- %w[10.04 12.04 14.04]
16
+ %w[10.04 12.04 14.04 15.04 15.10]
17
17
  end
18
18
 
19
19
  def arch
@@ -3,31 +3,15 @@ class PEBuild::Cap::RunInstall::POSIX
3
3
 
4
4
  extend PEBuild::OnMachine
5
5
 
6
- def self.run_install(machine, config, archive)
7
-
8
- # NOTE: This test for both the 3.x and 4.x installation locations. Should
9
- # probably refactor this into something cleaner.
10
- if machine.communicate.test('test -f /opt/puppet/pe_version || test -f /opt/puppetlabs/server/pe_version')
11
- machine.ui.warn I18n.t('pebuild.cap.run_install.already_installed'),
12
- :name => machine.name
13
- return
14
- end
15
-
16
- root = File.join('/vagrant', PEBuild::WORK_DIR)
17
-
18
- cmd_path = []
19
- cmd_path << root
20
-
21
- cmd_path << archive.installer_dir
22
- cmd_path << "puppet-enterprise-installer"
23
-
24
- cmd = File.join(cmd_path)
25
- answers = File.join(root, 'answers', "#{machine.name}.txt")
26
-
27
- argv = "#{cmd} -a #{answers}"
28
-
29
- on_machine(machine, argv)
30
-
6
+ # Run the PE installer on POSIX systems
7
+ #
8
+ # @param installer_dir [String] A path to the directory where PE installers
9
+ # are kept.
10
+ # @param answers [String] A path to a file containing installation answers.
11
+ #
12
+ # @return [void]
13
+ def self.run_install(machine, installer_path, answers)
14
+ on_machine(machine, "#{installer_path} -a #{answers}")
31
15
 
32
16
  if machine.communicate.test('which at')
33
17
  machine.ui.info I18n.t('pebuild.cap.run_install.scheduling_run')
@@ -3,34 +3,31 @@ class PEBuild::Cap::RunInstall::Windows
3
3
 
4
4
  extend PEBuild::OnMachine
5
5
 
6
- def self.run_install(machine, config, archive)
7
-
8
- gt_win2k3_path = '${Env:ALLUSERSPROFILE}\\PuppetLabs'
9
- le_win2k3_path = '${Env:ALLUSERSPROFILE}\\Application Data\\PuppetLabs'
10
- testpath = "(Test-Path \"#{gt_win2k3_path}\") -or (Test-Path \"#{le_win2k3_path}\")"
11
-
12
- if machine.communicate.test("If (#{testpath}) { Exit 0 } Else { Exit 1 }")
13
- machine.ui.warn I18n.t('pebuild.cap.run_install.already_installed'),
14
- :name => machine.name
15
- return
16
- end
17
-
18
- root = machine.communicate.shell.cmd('ECHO %SYSTEMDRIVE%')[:data][0][:stdout].chomp
19
- root = File.join("#{root}\\vagrant", PEBuild::WORK_DIR)
20
-
21
- # The installer will be fed to msiexec. That means the File.join() method
22
- # is of limited use since it won't execute on the Windows system
23
- installer = File.join(root, archive.to_s).gsub('/', '\\')
24
-
25
- cmd = []
26
- cmd << 'msiexec' << '/qn' << '/i' << installer
27
-
28
- cmd << "PUPPET_MASTER_SERVER=#{config.master}"
29
- cmd << "PUPPET_AGENT_CERTNAME=#{machine.name}"
30
-
31
- argv = cmd.join(' ')
32
-
33
- on_machine(machine, argv)
34
-
6
+ # Run the PE installer on Windows systems
7
+ #
8
+ # @param installer_dir [String] A path to the PE installer.
9
+ # @param answers [Hash[String => String}] A hash of options that will be
10
+ # passed to msiexec as `key=value` pairs.
11
+ #
12
+ # @return [void]
13
+ def self.run_install(machine, installer_path, answers)
14
+ install_options = answers.map{|e| e.join('=')}.join(' ')
15
+ # Lots of PowerShell commands can handle UNIX-style paths. msiexec can't.
16
+ installer_path = installer_path.gsub('/', '\\')
17
+
18
+ cmd = <<-EOS
19
+ $params = @(
20
+ "/qn",
21
+ "/i `"#{installer_path}`"",
22
+ "/l*v puppet-enterprise-installer.log",
23
+ "#{install_options}"
24
+ )
25
+
26
+ (Start-Process -FilePath "msiexec.exe" -ArgumentList $params -Wait -Passthru).ExitCode
27
+ EOS
28
+
29
+ machine.ui.info "Running: #{cmd}"
30
+
31
+ on_machine(machine, cmd)
35
32
  end
36
33
  end
@@ -0,0 +1,38 @@
1
+ require 'pe_build/on_machine'
2
+
3
+ # Download PE installers to a POSIX VM
4
+ #
5
+ # @since 0.14.0
6
+ class PEBuild::Cap::StageInstaller::POSIX
7
+
8
+ extend PEBuild::OnMachine
9
+
10
+ # Download an installer to a remote VM
11
+ #
12
+ # @param uri [URI] A URI containing the download source.
13
+ # @param dest_dir [String] The destination directory to download the
14
+ # installer to.
15
+ #
16
+ # @return [void]
17
+ def self.stage_installer(machine, uri, dest_dir='.')
18
+ filename = File.basename(uri.path)
19
+ installer_dir = filename.gsub(/.tar(?:\.gz)?/, '')
20
+
21
+ # GNU tar will attempt to guess the file format. Other versions of tar,
22
+ # such as those shipped with Solaris, take the approach that trying to
23
+ # interpret unknown binaries is none of their business.
24
+ tar_flags = if filename.end_with?('.tar.gz')
25
+ 'xzf'
26
+ else
27
+ 'xf'
28
+ end
29
+
30
+ unless machine.communicate.test("test -d #{dest_dir}/#{installer_dir}")
31
+ machine.ui.info I18n.t('pebuild.cap.stage_installer.downloading_installer',
32
+ :url => uri)
33
+
34
+ on_machine(machine, "curl -fsSLk #{uri} -o #{dest_dir}/#{filename}")
35
+ on_machine(machine, "tar #{tar_flags} #{dest_dir}/#{filename} -C #{dest_dir}")
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,33 @@
1
+ require 'pe_build/on_machine'
2
+
3
+ # Download PE installers to a Windows VM
4
+ #
5
+ # @since 0.14.0
6
+ class PEBuild::Cap::StageInstaller::Windows
7
+
8
+ extend PEBuild::OnMachine
9
+
10
+ # Download an installer to a remote VM
11
+ #
12
+ # @param uri [URI] A URI containing the download source.
13
+ # @param dest_dir [String] The destination directory to download the
14
+ # installer to.
15
+ #
16
+ # @return [void]
17
+ def self.stage_installer(machine, uri, dest_dir='.')
18
+ filename = File.basename(uri.path)
19
+
20
+ unless machine.communicate.test(%Q[If (Test-Path "#{dest_dir}/#{filename}) { Exit 0 } Else { Exit 1 }])
21
+ machine.ui.info I18n.t('pebuild.cap.stage_installer.downloading_installer',
22
+ :url => uri)
23
+
24
+ # Setting ServerCertificateValidationCallback to always return true
25
+ # allows us to download from HTTPS sources that present a self-signed
26
+ # certificate. For example, a Puppet Master.
27
+ on_machine(machine, <<-EOS)
28
+ [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
29
+ (New-Object System.Net.WebClient).DownloadFile("#{uri}","#{dest_dir}/#{filename}")
30
+ EOS
31
+ end
32
+ end
33
+ end
@@ -45,6 +45,15 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
45
45
  # @since 0.1.0
46
46
  attr_accessor :filename
47
47
 
48
+ # @!attribute shared_installer
49
+ # @return [Boolean] Whether to run PE installation using installers and
50
+ # answers shared using the `/vagrant` mount. If set to `false`, resources
51
+ # will be downloaded remotely to the home directory of whichever user
52
+ # account Vagrant is using. Defaults to `true`.
53
+ #
54
+ # @since 0.14.0
55
+ attr_accessor :shared_installer
56
+
48
57
  def initialize
49
58
  @download_root = UNSET_VALUE
50
59
  @version = UNSET_VALUE
@@ -52,6 +61,7 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
52
61
  @series = UNSET_VALUE
53
62
  @suffix = UNSET_VALUE
54
63
  @filename = UNSET_VALUE
64
+ @shared_installer = UNSET_VALUE
55
65
  end
56
66
 
57
67
  include PEBuild::ConfigDefault
@@ -63,6 +73,7 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
63
73
  set_default :@suffix, :detect
64
74
  set_default :@download_root, nil
65
75
  set_default :@filename, nil
76
+ set_default :@shared_installer, true
66
77
  end
67
78
 
68
79
  def validate(machine)
@@ -1,7 +1,13 @@
1
+ require 'config_builder/version'
2
+
1
3
  module PEBuild
2
4
  module ConfigBuilder
3
- require 'pe_build/config_builder/global'
4
- require 'pe_build/config_builder/pe_bootstrap'
5
- require 'pe_build/config_builder/pe_agent'
5
+ require_relative 'config_builder/global'
6
6
  end
7
7
  end
8
+
9
+ if ConfigBuilder::VERSION > '1.0'
10
+ require_relative 'config_builder/1_x'
11
+ else
12
+ require_relative 'config_builder/0_x'
13
+ end
@@ -0,0 +1,6 @@
1
+ module PEBuild
2
+ module ConfigBuilder
3
+ require_relative '0_x/pe_bootstrap'
4
+ require_relative '0_x/pe_agent'
5
+ end
6
+ end
@@ -56,6 +56,7 @@ class PEBuild::ConfigBuilder::PEBootstrap < ::PEBuild::ConfigBuilder::Global
56
56
  with_attr(:series) { |val| pe.series = val }
57
57
  with_attr(:suffix) { |val| pe.suffix = val }
58
58
  with_attr(:filename) { |val| pe.filename = val }
59
+ with_attr(:shared_installer) { |val| pe.shared_installer = val }
59
60
 
60
61
  with_attr(:role) { |val| pe.role = val }
61
62
  with_attr(:verbose) { |val| pe.verbose = val }
@@ -0,0 +1,6 @@
1
+ module PEBuild
2
+ module ConfigBuilder
3
+ require_relative '1_x/pe_bootstrap'
4
+ require_relative '1_x/pe_agent'
5
+ end
6
+ end
@@ -0,0 +1,35 @@
1
+ require 'config_builder/model'
2
+
3
+ # @since 0.13.0
4
+ class PEBuild::ConfigBuilder::PEAgent < ::ConfigBuilder::Model::Provisioner::Base
5
+ # @!attribute [rw] autosign
6
+ # If true, and {#master_vm} is set, the agent's certificate will be signed
7
+ # on the master VM.
8
+ #
9
+ # @return [true, false] Defaults to `true` if {#master_vm} is set,
10
+ # otherwise `false`.
11
+ def_model_attribute :autosign
12
+ # @!attribute [rw] autopurge
13
+ # If true, and {#master_vm} is set, the agent's certificate and data will
14
+ # be purged from the master VM if the agent is destroyed by Vagrant.
15
+ #
16
+ # @return [true, false] Defaults to `true` if {#master_vm} is set,
17
+ # otherwise `false`.
18
+ def_model_attribute :autopurge
19
+ # @!attribute master
20
+ # @return [String] The DNS hostname of the Puppet master for this node.
21
+ # If {#master_vm} is set, the hostname of that machine will be used
22
+ # as a default. If the hostname is unset, the name of the VM will be
23
+ # used as a secondary default.
24
+ def_model_attribute :master
25
+ # @!attribute master_vm
26
+ # @return [String] The name of a Vagrant VM to use as the master.
27
+ def_model_attribute :master_vm
28
+ # @!attribute version
29
+ # @return [String] The version of PE to install. May be either a version
30
+ # string of the form `x.y.x[-optional-arbitrary-stuff]` or the string
31
+ # `current`. Defaults to `current`.
32
+ def_model_attribute :version
33
+
34
+ ::ConfigBuilder::Model::Provisioner.register('pe_agent', self)
35
+ end
@@ -0,0 +1,91 @@
1
+ require 'config_builder/model'
2
+
3
+ class PEBuild::ConfigBuilder::PEBootstrap < ::ConfigBuilder::Model::Provisioner::Base
4
+
5
+ # @!attribute [rw] version
6
+ # @return [String] The version of Puppet Enterprise to install.
7
+ def_model_attribute :version
8
+
9
+ # @!attribute [rw] version_file
10
+ # @return [String] The path to a file relative to {#download_root}. The
11
+ # contents of this file will be read and used to specify {#version}.
12
+ # @since 0.9.0
13
+ def_model_attribute :version_file
14
+
15
+ # @!attribute [rw] series
16
+ # @return [String] The release series of PE. Completely optional and
17
+ # currently has no effect other than being an interpolation token
18
+ # available for use in {#download_root}.
19
+ #
20
+ # @since 0.9.0
21
+ def_model_attribute :series
22
+
23
+ # @!attribute [rw] suffix
24
+ # @return [String] The distribution specifix suffix of the Puppet
25
+ # Enterprise installer to use.
26
+ def_model_attribute :suffix
27
+
28
+ # @!attribute [rw] filename
29
+ # @return [String] The filename of the Puppet Enterprise installer.
30
+ def_model_attribute :filename
31
+
32
+ # @!attribute [rw] download_root
33
+ # @return [String] The URI to the directory containing Puppet Enterprise
34
+ # installers if the installer is not yet cached. This setting is optional.
35
+ def_model_attribute :download_root
36
+
37
+ # @!attribute shared_installer
38
+ # @return [Boolean] Whether to run PE installation using installers and
39
+ # answers shared using the `/vagrant` mount. If set to `false`, resources
40
+ # will be downloaded remotely to the home directory of whichever user
41
+ # account Vagrant is using. Defaults to `true`.
42
+ #
43
+ # @since 0.14.0
44
+ def_model_attribute :shared_installer
45
+
46
+ # @!attribute [rw] role
47
+ # @return [Symbol] The role of the Puppet Enterprise install.
48
+ def_model_attribute :role
49
+
50
+ # @!attribute [rw] verbose
51
+ # @return [Boolean] Whether or not to show the verbose output of the Puppet
52
+ # Enterprise install.
53
+ def_model_attribute :verbose
54
+
55
+ # @!attribute [rw] master
56
+ # @return [String] The address of the puppet master.
57
+ def_model_attribute :master
58
+
59
+ # @!attribute [rw] answer_file
60
+ # @return [String] The location of alternate answer file for PE
61
+ # installation. Values can be paths relative to the Vagrantfile's project
62
+ # directory.
63
+ def_model_attribute :answer_file
64
+
65
+ # @!attribute answer_extras
66
+ # @return [Array<String>] An array of additional answer strings that will
67
+ # be appended to the answer file. (Optional)
68
+ # @since 0.11.0
69
+ def_model_attribute :answer_extras
70
+
71
+ # @!attribute [rw] relocate_manifests
72
+ # @return [Boolean] Whether or not to change the PE master to use a config
73
+ # of manifestdir=/manifests and modulepath=/modules. This is meant to be
74
+ # used when the vagrant working directory manifests and modules are
75
+ # remounted on the guest.
76
+ def_model_attribute :relocate_manifests
77
+
78
+ # @!attribute [rw] autosign
79
+ # Configure the certificates that will be autosigned by the puppet master.
80
+ #
81
+ # @return [TrueClass] All CSRs will be signed
82
+ # @return [FalseClass] The autosign config file will be unmanaged
83
+ # @return [Array<String>] CSRs with the given addresses
84
+ #
85
+ # @see http://docs.puppetlabs.com/guides/configuring.html#autosignconf
86
+ #
87
+ # @since 0.4.0
88
+ def_model_attribute :autosign
89
+
90
+ ::ConfigBuilder::Model::Provisioner.register('pe_bootstrap', self)
91
+ end
@@ -34,6 +34,15 @@ class PEBuild::ConfigBuilder::Global < ::ConfigBuilder::Model::Base
34
34
  # installers if the installer is not yet cached. This setting is optional.
35
35
  def_model_attribute :download_root
36
36
 
37
+ # @!attribute shared_installer
38
+ # @return [Boolean] Whether to run PE installation using installers and
39
+ # answers shared using the `/vagrant` mount. If set to `false`, resources
40
+ # will be downloaded remotely to the home directory of whichever user
41
+ # account Vagrant is using. Defaults to `true`.
42
+ #
43
+ # @since 0.14.0
44
+ def_model_attribute :shared_installer
45
+
37
46
  def to_proc
38
47
  Proc.new do |global_config|
39
48
  with_attr(:download_root) { |val| global_config.pe_build.download_root = val }
@@ -42,6 +51,7 @@ class PEBuild::ConfigBuilder::Global < ::ConfigBuilder::Model::Base
42
51
  with_attr(:series) { |val| global_config.pe_build.series = val }
43
52
  with_attr(:suffix) { |val| global_config.pe_build.suffix = val }
44
53
  with_attr(:filename) { |val| global_config.pe_build.filename = val }
54
+ with_attr(:shared_installer) { |val| global_config.pe_build.shared_installer = val }
45
55
  end
46
56
  end
47
57
  end
@@ -85,6 +85,24 @@ module PEBuild
85
85
 
86
86
  ## Run install
87
87
 
88
+ guest_capability('linux', 'stage_installer') do
89
+ require_relative 'cap'
90
+ PEBuild::Cap::StageInstaller::POSIX
91
+ end
92
+
93
+ [:solaris, :solaris11].each do |os|
94
+ guest_capability(os, 'stage_installer') do
95
+ require_relative 'cap'
96
+ PEBuild::Cap::StageInstaller::POSIX
97
+ end
98
+ end
99
+
100
+ guest_capability('windows', 'stage_installer') do
101
+ require_relative 'cap'
102
+ PEBuild::Cap::StageInstaller::Windows
103
+ end
104
+
105
+
88
106
  guest_capability('linux', 'run_install') do
89
107
  require_relative 'cap'
90
108
  PEBuild::Cap::RunInstall::POSIX
@@ -1,6 +1,8 @@
1
1
  require 'pe_build/util/pe_packaging'
2
2
  require 'pe_build/util/machine_comms'
3
3
 
4
+ require 'uri'
5
+
4
6
  module PEBuild
5
7
  module Provisioner
6
8
  # Provision PE agents using simplified install
@@ -17,9 +19,9 @@ module PEBuild
17
19
  def provision
18
20
  provision_init!
19
21
 
20
- # As of 2015.x, pe_repo doesn't support windows installation, so skip
21
- # provisioning the repositories.
22
- unless master_vm.nil? || provision_windows?
22
+ # NOTE: When enabling installation for PE 3.x, Windows isn't supported
23
+ # by that build of pe_repo.
24
+ unless master_vm.nil?
23
25
  provision_pe_repo
24
26
  end
25
27
  provision_agent
@@ -164,19 +166,20 @@ bash pe_frictionless_installer.sh
164
166
  #
165
167
  # Executes a `pe_bootstrap` provisioner running in agent mode.
166
168
  def provision_windows_agent
167
- pe_config = ::PEBuild::Config::PEBootstrap.new
168
- pe_config.role = :agent
169
- # Windows won't reconize 'current' as a version number, so fall through
170
- # to the global default by leaving it unset.
171
- pe_config.version = config.version unless config.version == 'current'
172
- pe_config.master = config.master
173
- pe_config.finalize!
174
-
175
- machine.ui.info "Installing Windows agent with PE Bootstrap"
176
-
177
- pe_provisioner = Vagrant.plugin('2').manager.provisioners[:pe_bootstrap].new(machine, pe_config)
178
- pe_provisioner.configure(machine.config)
179
- pe_provisioner.provision
169
+ platform_tag = platform_tag(facts)
170
+ installer = "puppet-agent-#{facts['architecture']}.msi"
171
+ # TODO: Extend to allow passing arbitrary install options.
172
+ answers = {
173
+ 'PUPPET_MASTER_SERVER' => config.master,
174
+ 'PUPPET_AGENT_CERTNAME' => machine.name,
175
+ }
176
+
177
+ # TODO: Extend to use `config.version` once {#provision_pe_repo}
178
+ # supports it.
179
+ installer_url = URI.parse("https://#{config.master}:8140/packages/current/#{platform_tag}/#{installer}")
180
+
181
+ machine.guest.capability(:stage_installer, installer_url, '.')
182
+ machine.guest.capability(:run_install, installer, answers)
180
183
  end
181
184
 
182
185
  def provision_agent_cert
@@ -53,19 +53,35 @@ module PEBuild
53
53
  FileUtils.mkdir_p work_dir
54
54
  end
55
55
  end
56
-
57
56
  def provision
58
- prepare_answers_file
59
57
  load_archive
60
- fetch_installer
61
-
62
- @machine.guest.capability('run_install', @config, @archive)
63
58
 
64
- run_postinstall_tasks
59
+ if pe_installed?
60
+ machine.ui.warn I18n.t('pebuild.provisioner.pe_bootstrap.already_installed'),
61
+ :name => machine.name
62
+ else
63
+ prepare_answers_file
64
+ fetch_installer
65
+ run_install
66
+ run_postinstall_tasks
67
+ end
65
68
  end
66
69
 
67
70
  private
68
71
 
72
+ def pe_installed?
73
+ case machine.guest.capability_host_chain.first.first
74
+ when :windows
75
+ gt_win2k3_path = '${Env:ALLUSERSPROFILE}\\PuppetLabs'
76
+ le_win2k3_path = '${Env:ALLUSERSPROFILE}\\Application Data\\PuppetLabs'
77
+ testpath = "(Test-Path \"#{gt_win2k3_path}\") -or (Test-Path \"#{le_win2k3_path}\")"
78
+
79
+ machine.communicate.test("If (#{testpath}) { Exit 0 } Else { Exit 1 }")
80
+ else
81
+ machine.communicate.test('test -f /opt/puppet/pe_version || test -f /opt/puppetlabs/server/pe_version')
82
+ end
83
+ end
84
+
69
85
  def late_config_merge(root_config)
70
86
  provision = @config
71
87
  global = root_config.pe_build
@@ -85,6 +101,10 @@ module PEBuild
85
101
  def prepare_answers_file
86
102
  af = AnswersFile.new(@machine, @config, @work_dir)
87
103
  af.generate
104
+
105
+ unless @config.shared_installer
106
+ @machine.communicate.upload(File.join(@answer_dir, "#{@machine.name}.txt"), "#{machine.name}.txt")
107
+ end
88
108
  end
89
109
 
90
110
  def load_archive
@@ -115,9 +135,44 @@ module PEBuild
115
135
 
116
136
  # @todo panic if @config.download_root is undefined
117
137
  def fetch_installer
118
- uri = @config.download_root
119
- @archive.fetch(@config.download_root)
120
- @archive.unpack_to(@work_dir)
138
+ if @config.shared_installer
139
+ uri = @config.download_root
140
+ @archive.fetch(@config.download_root)
141
+ @archive.unpack_to(@work_dir)
142
+ else
143
+ @machine.guest.capability(:stage_installer, @archive.source_uri(@config.download_root), '.')
144
+ end
145
+ end
146
+
147
+ def run_install
148
+ case machine.guest.capability_host_chain.first.first
149
+ when :windows
150
+ if @config.shared_installer
151
+ drive = machine.communicate.shell.cmd('ECHO %SYSTEMDRIVE%')[:data][0][:stdout].chomp
152
+ installer_dir = File.join(drive, 'vagrant', PEBuild::WORK_DIR)
153
+
154
+ installer_path = File.join(installer_dir, @archive.filename)
155
+ else
156
+ installer_path = @archive.filename
157
+ end
158
+
159
+ # Windows installations don't use answer files.
160
+ answers = {
161
+ 'PUPPET_MASTER_SERVER' => @config.master,
162
+ 'PUPPET_AGENT_CERTNAME' => machine.name,
163
+ }
164
+ else
165
+ if @config.shared_installer
166
+ root = File.join('/vagrant', PEBuild::WORK_DIR)
167
+ installer_path = File.join(root, @archive.installer_dir, 'puppet-enterprise-installer')
168
+ answers = File.join(root, 'answers', "#{machine.name}.txt")
169
+ else
170
+ installer_path = File.join(@archive.installer_dir, 'puppet-enterprise-installer')
171
+ answers = File.join("#{machine.name}.txt")
172
+ end
173
+ end
174
+
175
+ machine.guest.capability('run_install', installer_path, answers)
121
176
  end
122
177
 
123
178
  def run_postinstall_tasks
@@ -41,7 +41,12 @@ class PEBuild::Provisioner::PEBootstrap::PostInstall
41
41
  puppet_apply = "/opt/puppetlabs/bin/puppet apply"
42
42
  end
43
43
 
44
- manifest_path = "/vagrant/.pe_build/post-install/#{@machine.name}.pp"
44
+ if @config.shared_installer
45
+ manifest_path = "/vagrant/.pe_build/post-install/#{@machine.name}.pp"
46
+ else
47
+ @machine.communicate.upload(@post_install_manifest, "#{@machine.name}.pp")
48
+ manifest_path = "#{@machine.name}.pp"
49
+ end
45
50
 
46
51
  on_machine(@machine, "#{puppet_apply} #{manifest_path}")
47
52
  end
@@ -39,7 +39,8 @@ module PEBuild
39
39
  require 'pe_build/release/3_8'
40
40
  require 'pe_build/release/2015_2'
41
41
  require 'pe_build/release/2015_3'
42
+ require 'pe_build/release/2016_1'
42
43
 
43
- LATEST_VERSION = '2015.3.0'
44
+ LATEST_VERSION = '2015.3.3'
44
45
  end
45
46
  end
@@ -16,10 +16,6 @@ module PEBuild::Release
16
16
  add_release :ubuntu, '12.04'
17
17
  add_release :ubuntu, '14.04'
18
18
 
19
- # Nothing has changed for installation of Windows agents.
20
-
21
- add_release :windows, '2003'
22
- add_release :windows, '2003R2'
23
19
  add_release :windows, '2008'
24
20
  add_release :windows, '2008R2'
25
21
  add_release :windows, '7'
@@ -35,4 +31,5 @@ module PEBuild::Release
35
31
  @releases['2015.3.0'] = twentyfifteen_three_x
36
32
  @releases['2015.3.1'] = twentyfifteen_three_x
37
33
  @releases['2015.3.2'] = twentyfifteen_three_x
34
+ @releases['2015.3.3'] = twentyfifteen_three_x
38
35
  end
@@ -0,0 +1,29 @@
1
+ require 'pe_build/release'
2
+
3
+ module PEBuild::Release
4
+
5
+ twentyfifteen_six_x = newrelease do
6
+
7
+ add_release :el, '6'
8
+ add_release :el, '7'
9
+
10
+ add_release :sles, '11'
11
+ add_release :sles, '12'
12
+
13
+ add_release :ubuntu, '12.04'
14
+ add_release :ubuntu, '14.04'
15
+
16
+ add_release :windows, '2008'
17
+ add_release :windows, '2008R2'
18
+ add_release :windows, '7'
19
+ add_release :windows, '2012'
20
+ add_release :windows, '2012R2'
21
+ add_release :windows, '8'
22
+ add_release :windows, '8.1'
23
+
24
+ set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2015.x.txt.erb')
25
+ set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2015.x.txt.erb')
26
+ end
27
+
28
+ @releases['2016.1.0'] = twentyfifteen_six_x
29
+ end
@@ -26,6 +26,7 @@ module PEBuild
26
26
  arch = facts['architecture']
27
27
  when 'windows'
28
28
  os = 'windows'
29
+ # Windows packages don't discriminate based on version.
29
30
  version = nil
30
31
  arch = (facts['architecture'] == 'x64' ? 'x86_64' : 'i386')
31
32
  when 'debian'
@@ -48,7 +49,7 @@ module PEBuild
48
49
  end
49
50
  # TODO: Add "unknown os" error.
50
51
 
51
- [os, version, arch].join('-').downcase
52
+ [os, version, arch].compact.join('-').downcase
52
53
  end
53
54
  module_function :platform_tag
54
55
 
@@ -1,3 +1,3 @@
1
1
  module PEBuild
2
- VERSION = '0.13.7'
2
+ VERSION = '0.14.0'
3
3
  end
@@ -78,12 +78,10 @@ EOF
78
78
  context 'when osfamily is windows' do
79
79
  before(:each) do
80
80
  allow(subject).to receive(:provision_windows?).and_return(true)
81
- allow(subject).to receive(:master_vm).and_return(master_vm)
82
81
  end
83
82
 
84
- it 'invokes the windows provisioner and skips pe_repo' do
83
+ it 'invokes the windows provisioner' do
85
84
  expect(subject).to receive(:provision_windows_agent)
86
- expect(subject).to receive(:provision_pe_repo).never
87
85
 
88
86
  subject.provision
89
87
  end
@@ -28,6 +28,8 @@ en:
28
28
  pe_bootstrap:
29
29
  post_install: |-
30
30
  Applying post-install configuration to Puppet Enterprise.
31
+ already_installed: |-
32
+ Puppet Enterprise is already installed, skipping installation.
31
33
  errors:
32
34
  unset_version: |-
33
35
  The Puppet Enterprise version must be set either on the global pe_build config
@@ -114,9 +116,11 @@ en:
114
116
  The agent version %{version} is too old; pe_agent can only provision versions
115
117
  newer than %{minimum_version}.
116
118
  cap:
119
+ stage_installer:
120
+ downloading_installer: |-
121
+ Downloading PE installer from:
122
+ %{url}
117
123
  run_install:
118
- already_installed: |-
119
- Puppet Enterprise is already installed, skipping installation.
120
124
  scheduling_run: |-
121
125
  Scheduling Puppet run to kickstart node classification.
122
126
  detect_installer:
@@ -18,10 +18,10 @@ Gem::Specification.new do |gem|
18
18
 
19
19
  gem.license = 'Apache 2.0'
20
20
 
21
- gem.add_runtime_dependency 'progressbar'
22
- gem.add_runtime_dependency 'minitar'
21
+ gem.add_runtime_dependency 'progressbar', '~> 0.21.0'
22
+ gem.add_runtime_dependency 'minitar', '~> 0.5.4'
23
23
 
24
- gem.add_development_dependency 'rake'
24
+ gem.add_development_dependency 'rake', '~> 10.0'
25
25
  # Pin to 2.14.x for compatibility with vagrant-spec.
26
26
  gem.add_development_dependency 'rspec', '~> 2.14.0'
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-pe_build
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.7
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Thebo
@@ -9,62 +9,62 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-02-11 00:00:00.000000000 Z
12
+ date: 2016-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: progressbar
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 0.21.0
21
21
  type: :runtime
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: '0'
27
+ version: 0.21.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: minitar
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 0.5.4
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 0.5.4
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '10.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '10.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 2.14.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 2.14.0
70
70
  description:
@@ -75,10 +75,10 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
- - .gitignore
79
- - .rspec
80
- - .travis.yml
81
- - .yardopts
78
+ - ".gitignore"
79
+ - ".rspec"
80
+ - ".travis.yml"
81
+ - ".yardopts"
82
82
  - CHANGELOG
83
83
  - Gemfile
84
84
  - LICENSE
@@ -120,6 +120,8 @@ files:
120
120
  - lib/pe_build/cap/facts/windows.rb
121
121
  - lib/pe_build/cap/run_install/posix.rb
122
122
  - lib/pe_build/cap/run_install/windows.rb
123
+ - lib/pe_build/cap/stage_installer/posix.rb
124
+ - lib/pe_build/cap/stage_installer/windows.rb
123
125
  - lib/pe_build/command.rb
124
126
  - lib/pe_build/command/base.rb
125
127
  - lib/pe_build/command/copy.rb
@@ -130,9 +132,13 @@ files:
130
132
  - lib/pe_build/config/pe_agent.rb
131
133
  - lib/pe_build/config/pe_bootstrap.rb
132
134
  - lib/pe_build/config_builder.rb
135
+ - lib/pe_build/config_builder/0_x.rb
136
+ - lib/pe_build/config_builder/0_x/pe_agent.rb
137
+ - lib/pe_build/config_builder/0_x/pe_bootstrap.rb
138
+ - lib/pe_build/config_builder/1_x.rb
139
+ - lib/pe_build/config_builder/1_x/pe_agent.rb
140
+ - lib/pe_build/config_builder/1_x/pe_bootstrap.rb
133
141
  - lib/pe_build/config_builder/global.rb
134
- - lib/pe_build/config_builder/pe_agent.rb
135
- - lib/pe_build/config_builder/pe_bootstrap.rb
136
142
  - lib/pe_build/config_default.rb
137
143
  - lib/pe_build/idempotent.rb
138
144
  - lib/pe_build/on_machine.rb
@@ -145,6 +151,7 @@ files:
145
151
  - lib/pe_build/release/1_2.rb
146
152
  - lib/pe_build/release/2015_2.rb
147
153
  - lib/pe_build/release/2015_3.rb
154
+ - lib/pe_build/release/2016_1.rb
148
155
  - lib/pe_build/release/2_0.rb
149
156
  - lib/pe_build/release/2_5.rb
150
157
  - lib/pe_build/release/2_6.rb
@@ -204,17 +211,17 @@ require_paths:
204
211
  - lib
205
212
  required_ruby_version: !ruby/object:Gem::Requirement
206
213
  requirements:
207
- - - '>='
214
+ - - ">="
208
215
  - !ruby/object:Gem::Version
209
216
  version: '0'
210
217
  required_rubygems_version: !ruby/object:Gem::Requirement
211
218
  requirements:
212
- - - '>='
219
+ - - ">="
213
220
  - !ruby/object:Gem::Version
214
221
  version: '0'
215
222
  requirements: []
216
223
  rubyforge_project:
217
- rubygems_version: 2.0.14
224
+ rubygems_version: 2.4.5.1
218
225
  signing_key:
219
226
  specification_version: 4
220
227
  summary: Vagrant provisioners for installing Puppet Enterprise