beaker-pe 1.7.0 → 1.8.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZWU4ZTk5NzEzNTQyM2YzNDAzZjY0YWMxMmQwMjA4MDE3MTkwM2JhNg==
4
+ MzU2YTU0MGFkMGFiZjliMGU4MTQ2NGM5NThkNDBiZTM5NGJhMmIyOQ==
5
5
  data.tar.gz: !binary |-
6
- Y2RiZDllMDhiY2Q4ZDhlMzUzNDU3ZTg1MjU1MjlhYzg3ZmFiODdmNg==
6
+ NzFhYjVmY2NhMjZjMDY3ODM5NDhhMDgxYjU2ZmE4N2YyNmQyZGQwOQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTM1YjU2ODYwZGZmMDVlNGQ4MDhjMzcwNDU1Yzc3N2IxNTIzODFkZTQ4YzEy
10
- OTBhZjI5NjIxY2ZmYjA0ODBiMTljZWViNDFhNGNhZDI4Y2RhMDQ4MmVlNTlm
11
- MTcwZGQ1NmZmNTkyZjQ5ZTFkM2QyYTJkOWNjOTc4Y2NmNmMyZWM=
9
+ MjA2YWRkMTBhMDg4YjFlNWE2Y2JiYTk1YThhZWU2ZDJmODM1YmQwYmIzN2Mz
10
+ ZGEzNDZiNjhhYjcxNDliNzM0YWU2MDYxODZmM2RhNjJiM2FjZTViYjQ1ZjM1
11
+ MWVhZDYyYzdmMWNlZjg4ZmY1MzczMWVmNTliYTI2MzhjOTQ5ZWM=
12
12
  data.tar.gz: !binary |-
13
- NmExZjQzNzA1OTMxMmMyZDJiZmExMTgwODMyMjBjMmIwZmE1YjI1M2U0YTBi
14
- YzIxM2I2Mzc0N2RkZjhkYjk2OTdmMDU1OGViYmM0MzMzYTYzYTY2MjJhNzA4
15
- ODFhYTgzYzAyNTdmMjE2MGVjNWEyN2FkZTY5ZjRiY2M3OTg2MzY=
13
+ MDNlZjMxZDQ3Yzk3ODU1ZDllMTE1MjFmM2M2ZTY2ODk3MmE1NDUyYTc1Y2U3
14
+ NmFmYTE0YTU5OWMxZjI4YTAyMDBlMjg3YTFjYzJlNzE2ZDcwZmNlZDBmMTI0
15
+ Y2VmN2RiMTJjMGI1MDRlZDNhOGZhMzY3NTI1ZTZhYjIyNjkwMTE=
data/HISTORY.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # default - History
2
2
  ## Tags
3
- * [LATEST - 20 Dec, 2016 (80c18a2b)](#LATEST)
3
+ * [LATEST - 30 Dec, 2016 (75d22036)](#LATEST)
4
+ * [1.7.0 - 20 Dec, 2016 (99e6bbde)](#1.7.0)
4
5
  * [1.6.1 - 22 Nov, 2016 (52e30609)](#1.6.1)
5
6
  * [1.6.0 - 16 Nov, 2016 (0da1b64c)](#1.6.0)
6
7
  * [1.5.0 - 7 Nov, 2016 (24d78992)](#1.5.0)
@@ -26,7 +27,36 @@
26
27
  * [0.1.0 - 29 Feb, 2016 (4fc88d8c)](#0.1.0)
27
28
 
28
29
  ## Details
29
- ### <a name = "LATEST">LATEST - 20 Dec, 2016 (80c18a2b)
30
+ ### <a name = "LATEST">LATEST - 30 Dec, 2016 (75d22036)
31
+
32
+ * (GEM) update beaker-pe version to 1.8.0 (75d22036)
33
+
34
+ * (PE-18728) Skip frictionless install if agent is affected by powershell 2 bug (#45) (48b3b788)
35
+
36
+
37
+ ```
38
+ (PE-18728) Skip frictionless install if agent is affected by powershell 2 bug (#45)
39
+
40
+ We introduced frictionless installs for Windows agents in PE 2016.4.0.
41
+ For upgrade scenarios where we are testing frictionless upgrades, to
42
+ install we need to use the old MSI method if we are installing less then
43
+ PE 2016.4.0.
44
+ However, we have discovered that frictionless installs of windows2008r2
45
+ will fail on PE 2016.4.0 and PE 2016.4.2.
46
+ This PR adds in logic to install with the non-frictionless method if the
47
+ agent is windows2008r2 and version is less then PE 2016.4.3.
48
+ ```
49
+ * (MAINT) add install PE doc (#41) (2e748b9c)
50
+
51
+
52
+ ```
53
+ (MAINT) add install PE doc (#41)
54
+
55
+ [skip ci]
56
+ ```
57
+ ### <a name = "1.7.0">1.7.0 - 20 Dec, 2016 (99e6bbde)
58
+
59
+ * (HISTORY) update beaker-pe history for gem release 1.7.0 (99e6bbde)
30
60
 
31
61
  * (GEM) update beaker-pe version to 1.7.0 (80c18a2b)
32
62
 
data/README.md CHANGED
@@ -17,6 +17,9 @@ that help someone acceptance test PE easier with Beaker.
17
17
  technical reference for APIs and other aspects of beaker-pe. They describe
18
18
  how it works and how to use it but assume that you have a basic understanding
19
19
  of key concepts.
20
+ - [How-to guides](docs/how_to) are recipes. They guide you through the steps
21
+ involved in addressing key problems and use-cases. For instance, checkout our
22
+ [How-to Install Puppet Enterprise doc](docs/how_to/install_puppet_enterprise.md).
20
23
 
21
24
  # Upgrading from 0.y to 1.y?
22
25
 
@@ -0,0 +1,87 @@
1
+ # How To Install Puppet Enterprise
2
+
3
+ Welcome to the choose your own adventure of installing Puppet Enterprise (PE)!
4
+ This doc will guide you through the process beaker's DSL helpers use to install
5
+ PE for acceptance testing.
6
+
7
+ Note that this is not a complete documentation of the process, but a general
8
+ overview. There will be specific hiccups for particular platforms and special
9
+ cases. These are not included at this point. The idea is that as we come upon
10
+ them, we will now have a place to document those details, so that we can
11
+ over time bring this to 100% completeness.
12
+
13
+ # First Things First: What Do You Want to Install?
14
+
15
+ PE comes in all varieties. Not only in any number of ever-growing versions, but
16
+ in different install methods & locations as Puppet improves the install methods
17
+ over time.
18
+
19
+ The first questions to ask yourself are:
20
+
21
+ 1. Are you installing Puppet Agent, or other services?
22
+ 1. What version of PE are you installing from?
23
+
24
+ If you're installing PE 2015.2 or newer and you're installing PE's Puppet Agent,
25
+ then you're on track for our newest agent install strategy, installing from PE's
26
+ promoted agents location. Check our next section for more information on that.
27
+
28
+ If one (or both) of these conditions don't apply to you, then skip to the next
29
+ section: All Other Installs.
30
+
31
+ # PE Promoted Agent Installs
32
+
33
+ Installing Puppet Agent from the PE promoted locations is handled in core beaker,
34
+ not in beaker-pe itself. You can read more about doing this in
35
+ [beaker's How To Install Puppet Doc](https://github.com/puppetlabs/beaker/tree/master/docs/how_to/install_puppet.md).
36
+
37
+ ### Higher-level Install Methods
38
+
39
+ Below, there's a section on "General Installer Methods." The method in beaker's
40
+ "How To Install Puppet" doc (link above) is the only one specifically for
41
+ installing Puppet Agent from the PE promoted location, but the higher methods
42
+ will call that one if certain conditions are met
43
+ ([conditions doc](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Roles#aio_version%3F-instance_method)).
44
+
45
+ # All Other Installs
46
+
47
+ If you need any other services besides an agent, or you're installing from a
48
+ version before 2015.2, you'll end up with our traditional tarball (compressed
49
+ `*.tar.gz` file) installer. These installers are described in the next section.
50
+
51
+ # Generic Installer Methods
52
+
53
+ ### [`install_pe_on`](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PEUtils#install_pe_on-instance_method)
54
+
55
+ This method is a wrapper on our install PE behavior that allows you to pass in
56
+ which hosts in particular you'd like to call, as well as specifying the options
57
+ used yourself.
58
+
59
+ Note that there are a number of properties needed for installing
60
+ PE and they haven't been all documented, so the general workaround is to pass
61
+ the global options hash (the `options` TestCase accessor is best, you don't have
62
+ to qualify or include anything to get the method, just use the method by name)
63
+ as the `opts` parameter.
64
+
65
+ Note that this method does the work to figure out `pe_ver` if you don't pass it
66
+ in as an argument. As a last result, beaker-pe will try to put together a URL
67
+ in this form from these beaker global settings:
68
+
69
+ ```ruby
70
+ #{ pe_dir }/${ pe_version_file }
71
+ ```
72
+
73
+ `pe_version_file` is set to `LATEST` by default. This is the file that will tell
74
+ beaker which PE installer in the directory it should install. This file should
75
+ be plain text, and just include the PE version number of the installer to use.
76
+ To check further into how this code works, you'll have to read the code
77
+
78
+ To see how the filename for the package itself is built, please checkout how the
79
+ `host['dist']` property is built for a particular platform in
80
+ [this code](https://github.com/puppetlabs/beaker-pe/blob/master/lib/beaker-pe/install/pe_utils.rb#L388-L421).
81
+
82
+ ### [`install_pe`](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PEUtils#install_pe-instance_method)
83
+
84
+ This method is our generic "install PE on all hosts" convenience method. As a
85
+ matter of fact, it just calls `install_pe_on`, passing the entire `hosts` array
86
+ and the global options hash as the `opts` parameter, just as we suggested in the
87
+ `install_pe_on` documentation above. Please check those docs for more info.
@@ -397,10 +397,8 @@ module Beaker
397
397
  end
398
398
 
399
399
  install_hosts.each do |host|
400
- #windows agents from 4.0 -> 2016.1.2 were only installable via the aio method
401
- is_windows_msi_and_aio = (host['platform'] =~ /windows/ && (version_is_less(host['pe_ver'], '2016.3.0') && !version_is_less(host['pe_ver'], '3.99')))
402
400
 
403
- if agent_only_check_needed && hosts_agent_only.include?(host) || is_windows_msi_and_aio
401
+ if agent_only_check_needed && hosts_agent_only.include?(host) || install_via_msi?(host)
404
402
  host['type'] = 'aio'
405
403
  install_puppet_agent_pe_promoted_repo_on(host, {
406
404
  :puppet_agent_version => get_puppet_agent_version(host, opts),
@@ -413,7 +411,7 @@ module Beaker
413
411
  acceptable_exit_codes << 2 if opts[:type] == :upgrade
414
412
  setup_defaults_and_config_helper_on(host, master, acceptable_exit_codes)
415
413
  #Windows allows frictionless installs starting with PE Davis, if frictionless we need to skip this step
416
- elsif (host['platform'] =~ /windows/ && !(host['roles'].include?('frictionless')))
414
+ elsif (host['platform'] =~ /windows/ && !(host['roles'].include?('frictionless')) || install_via_msi?(host))
417
415
  opts = { :debug => host[:pe_debug] || opts[:pe_debug] }
418
416
  msi_path = "#{host['working_dir']}\\#{host['dist']}.msi"
419
417
  install_msi_on(host, msi_path, {}, opts)
@@ -615,6 +613,15 @@ module Beaker
615
613
  !version_is_less(version, MEEP_CUTOVER_VERSION)
616
614
  end
617
615
 
616
+ # Check if windows host is able to frictionlessly install puppet
617
+ # @param [Beaker::Host] host that we are checking if it is possible to install frictionlessly to
618
+ # @return [Boolean] true if frictionless is supported and not affected by known bugs
619
+ def install_via_msi?(host)
620
+ #windows agents from 4.0 -> 2016.1.2 were only installable via the aio method
621
+ #powershell2 bug was fixed in PE 2016.4.3
622
+ (host['platform'] =~ /windows/ && (version_is_less(host['pe_ver'], '2016.4.0') && !version_is_less(host['pe_ver'], '3.99'))) || (host['platform'] =~ /windows-2008r2/ && (version_is_less(host['pe_ver'], '2016.4.3') && !version_is_less(host['pe_ver'], '3.99')))
623
+ end
624
+
618
625
  # On July 8th, 2016, the gpg key that was shipped and used to sign repos in
619
626
  # PE tarballs expired. This affects all PE version earlier then 3.8.5, and
620
627
  # versions between 2015.2 to 2016.1.2.
@@ -3,7 +3,7 @@ module Beaker
3
3
  module PE
4
4
 
5
5
  module Version
6
- STRING = '1.7.0'
6
+ STRING = '1.8.0'
7
7
  end
8
8
 
9
9
  end
@@ -251,6 +251,38 @@ describe ClassMixedWithDSLInstallUtils do
251
251
  the_host[:pe_debug] = true
252
252
  expect( subject.installer_cmd( the_host, {} ) ).to be === "cd /tmp && curl --tlsv1 -kO https://testmaster:8140/packages/3.8.0/install.bash && bash -x install.bash"
253
253
  end
254
+ end
255
+
256
+ describe 'install_via_msi?' do
257
+ it 'returns true if pe_version is before PE 2016.4.0' do
258
+ the_host = winhost.dup
259
+ the_host['roles'] = ['frictionless']
260
+ the_host['pe_ver'] = '2015.2.3'
261
+ expect(subject.install_via_msi?(the_host)).to eq(true)
262
+ end
263
+
264
+ it 'returns nil if pe_version is PE 2016.4.0 or newer' do
265
+ the_host = winhost.dup
266
+ the_host['roles'] = ['frictionless']
267
+ the_host['pe_ver'] = '2016.4.2'
268
+ expect(subject.install_via_msi?(the_host)).to be nil
269
+ end
270
+
271
+ it 'returns true if pe_version is 2016.4.0 and platform is windows-2008r2 bug' do
272
+ the_host = winhost.dup
273
+ the_host['roles'] = ['frictionless']
274
+ the_host['platform'] = 'windows-2008r2'
275
+ the_host['pe_ver'] = '2016.4.0'
276
+ expect(subject.install_via_msi?(the_host)).to eq(true)
277
+ end
278
+
279
+ it 'returns false if pe_version is 2016.4.3 and platform is windows-2008r2 bug' do
280
+ the_host = winhost.dup
281
+ the_host['roles'] = ['frictionless']
282
+ the_host['platform'] = 'windows-2008r2'
283
+ the_host['pe_ver'] = '2016.4.3'
284
+ expect(subject.install_via_msi?(the_host)).to eq(false)
285
+ end
254
286
 
255
287
  end
256
288
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-pe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-20 00:00:00.000000000 Z
11
+ date: 2016-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -188,6 +188,7 @@ files:
188
188
  - acceptance/tests/install_smoke_test.rb
189
189
  - beaker-pe.gemspec
190
190
  - bin/beaker-template
191
+ - docs/how_to/install_puppet_enterprise.md
191
192
  - lib/beaker-pe.rb
192
193
  - lib/beaker-pe/install/pe_utils.rb
193
194
  - lib/beaker-pe/options/pe_version_scraper.rb