Compare commits

...

144 Commits

Author SHA1 Message Date
Auto-release
86a66d5732 Release version 6.2.0 2020-02-18 14:31:44 +00:00
sheenaajay
cc50bff4e2 Merge pull request #411 from carabasdaniel/master
[IAC-545] Skip acceptance tests for AdoptOpenJDK on SLES
2020-02-18 14:25:16 +00:00
Daniel Carabas
35dba98f4b Skip acceptance tests for AdoptOpenJDK on SLES 2020-02-18 15:35:38 +02:00
cmccrisken-puppet
35dcaf1cb5 Merge pull request #410 from puppetlabs/pdksync_IAC-215-2
pdksync - (IAC-215) - Implement use_litmus:true
2020-02-17 14:27:47 +00:00
David Swan
2e72a1e255 (IAC-215) - Pdk Update 2020-02-14 14:37:07 +00:00
David Swan
84654700bc (IAC-215) - Implement use_litmus:true 2020-02-14 14:29:32 +00:00
sheenaajay
9651f5e630 Merge pull request #370 from timdeluxe/adoptopenjdk
Support AdoptOpenJDK
2020-02-13 11:12:36 +00:00
Daniel Carabas
1cdeba11f1 Fix unit tests 2020-02-13 11:46:28 +02:00
daianamezdrea
11c314814e Merge pull request #406 from hdeheer/modern_facts
Replace legacy facts by modern facts
2020-02-11 14:09:02 +02:00
david22swan
358d1e85d0 Merge pull request #408 from puppetlabs/pdksync_pdksync-honeycombsetup
(IAC-365) updating tokens and dataset for honeycomb
2020-02-06 16:29:27 +00:00
sheena
415f1283d2 (IAC-365) updating tokens and dataset for honeycomb 2020-02-06 13:41:12 +00:00
Michael T Lombardi (He/Him)
db27f84760 Merge pull request #407 from puppetlabs/release
(maint) Merge back for release version 6.1.0
2020-02-03 15:43:05 -06:00
Auto-release
e54f5b4f08 Release version 6.1.0 2020-02-03 16:07:00 +00:00
Hubert de Heer
93cc972768 Replace legacy facts by modern facts
Fix minor puppet-lint issues.
2020-02-03 13:27:36 +01:00
lionce
84546ca9a7 Rebase with master, fix conflicts and rubocop issues 2020-01-16 15:39:32 +02:00
lionce
c4c56cd6c5 Merge pull request #405 from puppetlabs/pdksync_deb10
pdksync - (FM-8581) - Debian 10 added to travis and provision file refactored
2020-01-15 12:40:50 +02:00
Tim Eilers
61ace5ea01 Fixing several facts due to different version scheme and locations in
specific java versions
2020-01-14 14:19:14 +02:00
Tim Eilers
4f52cee832 Fixing java_version fact, because OpenJDK puts a date after version 2020-01-14 14:17:18 +02:00
Tim Eilers
4dbf9321eb Fix basedir management (correctly avoid duplicate resource declarations) 2020-01-14 14:15:52 +02:00
Tim Eilers
da548082fe Clean up code according to rubocop checks 2020-01-14 14:15:52 +02:00
Tim Eilers
c0748f164f Refactor and improve code with experience from testing.
Add spec and acceptance tests for new code.
Extend documentation for new AdoptOpenJDK feature.
2020-01-14 14:15:51 +02:00
Tim Eilers
a88f01321d Fixing install path for default values for jdk 8 and improving comparison when version was given as integer 2020-01-14 11:08:54 +02:00
Tim Eilers
4c336b3ca7 Fixing downloadfolder prefix for AdoptOpenJDK installation 2020-01-14 11:08:54 +02:00
Tim Eilers
f44bc27a17 Adding defined type for AdoptOpenJDK installation 2020-01-14 11:08:54 +02:00
David Swan
6cda8ef5ba (FM-8581) - Debian 10 added to travis and provision file refactored 2020-01-13 12:07:04 +00:00
david22swan
0a77898e3d Merge pull request #404 from puppetlabs/pdksync_travis-updates
pdksync - (maint) travis updates: bundler and slack
2019-12-17 09:41:48 +00:00
David Schmitt
2b641fd530 (maint) update travis to notify puppet slack 2019-12-16 20:57:22 +00:00
David Schmitt
1bfe4da05a (maint) update travis to not use bundle update --system 2019-12-16 20:14:40 +00:00
Molly Waggett
6bdf734416 (maint) Remove MAINTAINERS file 2019-12-10 10:14:10 -08:00
david22swan
c288dbec0e Merge pull request #403 from puppetlabs/pdksync_pdksync-disableforge
pdksync - "MODULES-10236 disable deploy_to_forge for the module"
2019-12-09 15:59:33 +00:00
sheena
aa255af5ad MODULES-10236 disable deploy_to_forge for the module 2019-12-06 14:39:12 +00:00
lionce
69a75c8e6a Merge pull request #402 from puppetlabs/pdksync_pdksync-addubuntu14
pdksync - "MODULES-10242 Add ubuntu14 support back to the modules"
2019-12-06 14:48:03 +02:00
sheena
60a4af1843 MODULES-10242 Add ubuntu14 support back to the modules 2019-12-06 11:24:25 +00:00
Daniel Carabas
4ad9ec6191 Add Github Actions release workflow 2019-12-03 12:37:39 +02:00
cmccrisken-puppet
0a09bce58f Merge pull request #401 from puppetlabs/pdksync_simplecov
(MODULES-10120) enable simplecov; update to PDK 1.14.1; minor cleanups
2019-11-29 12:28:43 +00:00
David Schmitt
26e9bcfc1a (maint) Update to PDK 1.14.1 2019-11-27 18:31:35 +00:00
David Schmitt
a57d124d7d (maint) enable simplecov for ruby codecoverage testing 2019-11-25 18:25:27 +00:00
David Schmitt
e300649623 (maint) update gitignore and pdkignore for .project file removal 2019-11-21 18:16:13 +00:00
David Schmitt
d30c38266b (maint) remove obsolete gepetto .project files 2019-11-21 18:06:18 +00:00
David Schmitt
4610ca34a8 (maint) mark .gitlab-ci.yml as deleted 2019-11-21 17:18:40 +00:00
David Schmitt
fb850647a8 (maint) sort and canonicalise .sync.yml 2019-11-21 17:17:50 +00:00
lionce
0d23711e7d Merge pull request #400 from puppetlabs/release
Merge back release version v6.0.0
2019-11-11 16:23:06 +02:00
lionce
a0bab6cf38 Release version 6.0.0 2019-11-11 15:31:38 +02:00
lionce
8b451e161c Merge pull request #399 from david22swan/FM-8676
(FM-8676) - Support added for CentOS 8
2019-11-11 11:04:03 +02:00
David Swan
afb5531a4a (FM-8676) - Support added for CentOS 8 2019-11-08 16:07:59 +00:00
carabasdaniel
47a51b4490 Merge pull request #397 from lionce/MODULES-10062
MODULES-10062 - fix acceptance tests on sles
2019-11-07 12:33:16 +02:00
david22swan
b64e9a2f88 Merge pull request #398 from puppetlabs/pdksync_remove_ubuntu14_support
pdksync - FM-8499 - remove ubuntu14 support
2019-11-07 09:16:10 +00:00
lionce
6f05978750 FM-8499 - remove ubuntu14 support 2019-11-06 17:45:14 +02:00
lionce
c477db3b59 MODULES-10062 - fix acceptance tests on sles 2019-11-06 14:25:09 +02:00
lionce
00588d2b96 Merge pull request #396 from puppetlabs/pdksync_encrypt-git
pdksync - (FM-8634) ensure encrypted communication for fixtures
2019-11-05 12:43:17 +02:00
lionce
2ea5a4adb5 Merge pull request #395 from glennsarti/manage-travis
(PDK-1501) Allow Travis CI config to be templated
2019-11-05 10:46:05 +02:00
Glenn Sarti
018de0aef6 (PDK-1501) Fix acceptance stages in Travis CI
Previously the Travis CI file was brought under PDK control, however the
sync.yml did not contain the stage settings for the Litmus jobs which meant
that they did not run.  This commit fixes that error and runs PDK Update again
2019-11-05 13:31:09 +08:00
David Schmitt
74c5c27108 (FM-8634) ensure encrypted communication for fixtures 2019-11-01 16:48:53 +00:00
Glenn Sarti
ee0e10dc12 (maint) Fix rubocop failures in download_spec.rb
This commit updates the download_spec.rb file to remote the global variable and
use let based test fixture.
2019-11-01 09:49:19 +08:00
Glenn Sarti
4913dc0bef (PDK-1501) Allow Travis CI config to be templated
Previously the module unmanaged the Travis CI file when converted to Litmus.
This commit allows the Travis CI file to be managed.
2019-11-01 09:49:19 +08:00
Glenn Sarti
459757dd65 (maint) Update for PDK templates
This commit updates the module as per PDK-Templates commit 0b5b39b
2019-11-01 09:49:19 +08:00
david22swan
7ce9df174f Merge pull request #392 from michaeltlombardi/ticket/master/FM-8275-add-vagrant-provision
(FM-8275) Add vagrant provision list
2019-10-25 15:17:35 +01:00
cmccrisken-puppet
b1ea376937 Merge pull request #393 from puppetlabs/pdksync_pdksync-pdkgemupdate
pdksync - (maint) Override pdk gem version to master branch (PDK-1525 workaround until release)
2019-10-24 21:09:25 +01:00
Ciaran McCrisken
de79582baf Point pdk gem to head of master until PDK-1525 resolved 2019-10-24 15:21:53 +01:00
Michael T Lombardi
ea006c0587 (FM-8275) Add vagrant provision list
Prior to this commit the only provisioners included in
the provision lists were docker and vmpooler, neither
of which are particularly accessible to folks developing
on Windows outside of Puppet.

This commit adds a list which leverages the vagrant
provisioner.
2019-10-18 17:18:02 -05:00
carabasdaniel
e57cbc84ec Merge pull request #391 from robmbrooks/master
we need to check if java_default_home has a value before we attempt t…
2019-09-30 10:03:51 +03:00
Robert Brooks
d4e5461c26 we need to check if java_default_home has a value before we attempt to find libjvm.so, otherwise we search the entire filesystem 2019-09-26 09:57:55 -07:00
TP Honey
a5aad36b86 Merge pull request #390 from puppetlabs/fix_acceptance_tests
Fix fake paths that always cause errors
2019-09-26 10:40:37 +01:00
tphoney
f70d15207a fake paths always cause errors 2019-09-26 11:31:23 +03:00
sheenaajay
0b1f8df952 Merge pull request #389 from puppetlabs/pdksync_add_codeowners
(maint) Add a codeowners file
2019-09-18 10:38:02 +01:00
tphoney
f83cf9fc38 (maint) Add a codeowners file 2019-09-17 15:50:40 +01:00
sheenaajay
074162d034 Merge pull request #386 from vrtdev/feature/java11
Add support for java 11, the default in debian buster 10
2019-09-12 11:22:33 +01:00
sheenaajay
71b6a47798 Merge pull request #385 from leitmedium/master
ensure Java8 update number is being handled as a number
2019-09-12 09:15:14 +01:00
TP Honey
b670aca0cc Merge pull request #387 from puppetlabs/FM-8403
FM-8403 - add support Debain10
2019-09-11 15:27:19 +01:00
Caspar Clemens Mierau
27fed78308 ensure Java8 update number is being handled as a number when doing version comparing 2019-09-11 13:12:45 +02:00
lionce
ba9a1dbe45 add support Debain10 2019-09-10 16:27:01 +03:00
Jeroen Hooyberghs
197213e517 Put test result in variable to satisfy RuboCop 2019-09-10 14:33:49 +02:00
Jeroen Hooyberghs
21d39590b0 Add support for java 11, the default in debian buster 10 2019-09-10 12:21:19 +02:00
TP Honey
00c05a826f Merge pull request #384 from puppetlabs/pdksync_net-ssh-fix
pdksync - (MAINT) pdksync: fix for net-ssh 5 host_key check
2019-08-29 16:02:07 +01:00
Florin Dragos
d277391efc (MAINT) pdksync: fix for net-ssh 5 host_key check 2019-08-29 17:09:24 +03:00
sheenaajay
ce34499671 Merge pull request #382 from puppetlabs/release
MODULES-9673 Release merge back v5.0.1
2019-08-12 12:18:21 +01:00
lionce
b632db3a3e Merge pull request #381 from sheenaajay/releaseprep
MODULES-9669 Release preparation for v5.0.1
2019-08-05 13:48:01 +03:00
sheena
9c8d34f7e7 MODULES-9669 Release preparation for v5.0.1 2019-08-05 11:10:39 +01:00
carabasdaniel
af9c6c1bbe Merge pull request #380 from puppetlabs/release
MODULES-9608 Release Merge back v5.0.0
2019-08-05 12:58:18 +03:00
sheenaajay
70fa42b5c7 Merge pull request #379 from RandomNoun7/release
(MODULES-9604) Release prep - 5.0.0
2019-07-29 15:57:20 +01:00
Bill Hurt
0026df5de1 (MODULES-9604) Release prep - 5.0.0 2019-07-29 07:31:19 -07:00
TP Honey
ce58b6793e Merge pull request #372 from carabasdaniel/master
[FM-8320] Remove Oracle download
2019-07-29 11:02:29 +01:00
Daniel Carabas
a7f5b49404 Remove Oracle download support 2019-07-26 17:47:20 +02:00
William Hurt
c3d6da014f Merge pull request #377 from tphoney/pdk_convert_gemfile
(maint) rerun pdk convert,remove systemtests gems
2019-07-25 10:08:26 -07:00
tphoney
ab9efa8405 (maint) rerun pdk convert,remove systemtests gems 2019-07-25 17:20:07 +01:00
Michael T Lombardi (He/Him)
983efef86a (FM-8223) converted to use litmus (#376)
(FM-8223) converted to use litmus
2019-07-25 10:32:11 -05:00
tphoney
b9564626d3 (FM-8223) converted to use litmus 2019-07-25 14:46:20 +01:00
lionce
ff0b03eb72 Merge pull request #375 from tphoney/FM-8343
(FM-8343) use release numbers not lsbdistcodename
2019-07-25 13:48:43 +03:00
tphoney
7b73f579c0 (FM-8343) use release numbers not lsbdistcodename 2019-07-25 10:46:05 +01:00
TP Honey
614d624e5d Merge pull request #369 from mhjacks/master
Add buster support, default to 11
2019-07-17 13:37:35 +01:00
carabasdaniel
2bdc458965 Merge pull request #374 from puppetlabs/revert-364-feature/debian_buster
Revert "Add support for debian buster"
2019-07-17 14:30:53 +03:00
TP Honey
48b5d0209d Revert "Add support for debian buster" 2019-07-17 12:14:28 +01:00
carabasdaniel
bd22547e1e Merge pull request #373 from puppetlabs/pdksync_pdksync_heads/master-0-gb096033
pdksync - pdksync_heads/master-0-gb096033
2019-07-16 12:06:09 +03:00
lionce
77c18be58b pdksync_heads/master-0-gb096033 2019-07-16 10:05:15 +03:00
TP Honey
88d31a7a64 Merge pull request #364 from vrtdev/feature/debian_buster
Add support for debian buster
2019-07-15 10:42:23 +01:00
Eimhin Laverty
2a81a6cd07 Merge pull request #371 from puppetlabs/readme_bsd
(maint) Remove BSD section for puppet < 4
2019-07-11 16:00:36 +01:00
TP Honey
68e1d7681d (maint) Remove BSD section for puppet < 4 2019-07-10 16:24:09 +01:00
Martin Jackson
9d0301b1ef Add buster support, default to 11 2019-06-18 20:57:32 -05:00
Paula Muir
ae2baf0006 Merge pull request #368 from puppetlabs/pdksync_pdksync_heads/master-0-g7827fc2
pdksync - pdksync_heads/master-0-g7827fc2
2019-06-10 14:49:36 +01:00
Erick Banks
4e36ff899c pdksync_heads/master-0-g7827fc2 2019-06-10 13:35:53 +01:00
sheenaajay
bcc6263e14 Merge pull request #357 from mhjacks/master
Support defaults for ubuntu cosmic and dingo
2019-06-06 10:12:09 +01:00
Tom Ritserveldt
92a9700ad3 Add support for Debian buster 2019-06-04 07:49:14 +02:00
TP Honey
2c624c2800 Merge pull request #367 from puppetlabs/release
(MODULES-9189) - Release Merge back 4.1.0
2019-05-29 18:14:33 +01:00
TP Honey
d12df5926b Merge pull request #366 from eimlav/modules-9185
(MODULES-9185) Release prep v4.1.0
2019-05-29 15:45:00 +01:00
Eimhin Laverty
16fb46b958 (MODULES-9185) Release prep v4.1.0 2019-05-29 14:57:44 +01:00
TP Honey
f52a16d613 Merge pull request #365 from eimlav/modules-9184
(MODULES-9184) Update puppet-archive dependency
2019-05-29 14:45:50 +01:00
Eimhin Laverty
33864e88b1 (MODULES-9184) Update puppet-archive dependency 2019-05-29 12:16:03 +01:00
sheenaajay
35192452d9 Merge pull request #363 from eimlav/fm-8028
(FM-8028) Add RedHat 8 support
2019-05-21 10:04:17 +01:00
sheenaajay
2b03380440 Merge pull request #362 from puppetlabs/release
(MODULES-9132) Release mergeback v4.0.0
2019-05-20 10:19:58 +01:00
lionce
412ad38d93 Merge pull request #361 from sheenaajay/releaseprep
(MODULES-9128) Release 4.0.0
2019-05-20 10:34:18 +03:00
Eimhin Laverty
0418aaa3c2 (FM-8028) Add RedHat 8 support 2019-05-16 16:24:38 +01:00
sheena
7474169cbe (MODULES-9128) Release prep 4.0.0 2019-05-16 14:41:56 +01:00
carabasdaniel
45d9a2fb48 Merge pull request #359 from lionce/MODULES-9017
(MODULES-9017) - update metadata to support current version of stdlib
2019-05-03 05:59:27 -07:00
lionce
ba62a166d8 (MODULES-9017) - update metadata to support current version of stdlib 2019-05-03 14:54:46 +03:00
Martin Jackson
2ede3f1f06 Support eoan too while we're here 2019-04-27 08:39:23 -05:00
lionce
b174146dd0 Merge pull request #344 from HielkeJ/jce_link
MODULES-8613: Add option to set a custom JCE download URL
2019-04-23 13:16:18 +03:00
Hielke Jager
f195588082 Merge branch 'master' into jce_link 2019-04-18 19:46:07 +02:00
sheenaajay
c3e09bf110 Merge pull request #358 from puppetlabs/pdksync_pdksync_f778803
pdksync - (maint) Update pdk-template to f778803
2019-04-16 11:10:33 +01:00
Eimhin Laverty
b8e5438663 pdksync - (maint) Update pdk-template to f778803 2019-04-15 10:34:13 +01:00
TP Honey
76da37deb7 Merge pull request #353 from david22swan/FM-7921
(FM-7921) - Implement Puppet Strings
2019-04-15 10:33:36 +01:00
Martin Jackson
16fa2379a2 Support defaults for ubuntu cosmic and dingo 2019-04-14 15:08:46 -05:00
David Swan
8abe137a8c (FM-7921) - Implement Puppet Strings 2019-04-12 11:57:31 +01:00
Lavinia Dan
78bdfa2ffe Merge pull request #356 from puppetlabs/pdksync_MODULES-8444
pdksync - (MODULES-8444) - Raise lower Puppet bound
2019-04-11 16:07:20 +03:00
David Swan
24da374183 (MODULES-8444) - Raise lower Puppet bound 2019-04-10 16:39:28 +01:00
david22swan
b998142817 Merge pull request #351 from puppetlabs/pdksync_modules-8728
pdksync - Remove .project from .gitignore
2019-03-07 14:19:09 +00:00
Eimhin Laverty
881bcfabea (MODULES-8728) Remove .project from .gitignore 2019-03-07 12:43:24 +00:00
david22swan
ce348b258f Merge pull request #349 from fraenki/creates_path
MODULES-8698: Fix $install_path on CentOS with tar.gz package type
2019-03-06 15:25:23 +00:00
david22swan
fa7003da95 Merge pull request #348 from fraenki/symlink
MODULES-8699: Add option to manage symlink
2019-03-06 12:00:06 +00:00
Eimhin Laverty
7cd34dd291 (FM-7795) Cleanup java tests (#350)
* Add idempotent_apply function

* Remove unsupported OS specific code

* Remove outdated comments

* Improve unit test coverage

* Fix typo
2019-02-26 14:22:27 +02:00
Frank Wall
c81254a23a Fix $install_path on CentOS with tar.gz package type
When using tar.gz packages on CentOS, the architecture is not
part of the name of the installation directory. In this case
it's just "jdk1.8.0_201" instead of "jdk1.8.0_201-amd64".
2019-02-25 16:14:14 +01:00
Frank Wall
343ad7c468 Add option to manage symlink 2019-02-25 14:44:26 +01:00
Valentin
5509042cd1 Update default version & java 8 version from 8u192 to 8u201 (#347)
* Update default version & java 8 version from 8u192 to 8u201
2019-02-25 11:46:52 +00:00
Eimhin Laverty
3d8f80e4d9 Merge pull request #346 from tphoney/MODULES-3958
(MODULES-3958) use rspec-mock and add coverage
2019-02-14 14:25:22 +00:00
tphoney
7293c4991b (MODULES-3958) use rspec-mock and add coverage 2019-02-14 13:51:16 +00:00
david22swan
7bede1a384 Merge pull request #345 from fraenki/location_fix
Add ability to override basedir and package type for oracle java
2019-02-12 15:20:18 +00:00
Frank Wall
c4100556f0 use variable instead of hardcoded value, refs #298 2019-02-12 13:29:18 +01:00
Frank Wall
e247902da5 fix tests, refs #298 2019-02-12 13:28:56 +01:00
Elyse Salberg
82cd45647a Add ability to override basedir and package type 2019-02-12 13:27:32 +01:00
Hielke Jager
9b40ca6935 Add option to set a custom JCE download URL 2019-02-08 16:10:03 +01:00
david22swan
1e8954727e Merge pull request #332 from TLmaK0/master
Get architecture when no os/architecture exists
2019-02-07 16:08:22 +00:00
Paula Muir
b2a0626787 Merge pull request #343 from puppetlabs/pdksync_pdksync_1.9.0-0-g7281db5
pdksync - pdksync_1.9.0-0-g7281db5
2019-01-31 12:15:24 +00:00
lionce
f7f3fb9da2 pdksync_1.9.0-0-g7281db5 2019-01-31 11:22:53 +02:00
david22swan
25898c0fc9 Merge pull request #342 from puppetlabs/release
(maint) - 3.3.0 Release mergeback
2019-01-18 10:51:14 +00:00
Hugo Freire
4372aea5bf Get architecture when no os/architecture exists 2018-10-26 13:12:53 +02:00
52 changed files with 2473 additions and 1417 deletions

View File

@@ -1,6 +1,9 @@
fixtures: fixtures:
repositories: repositories:
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git" archive: "https://github.com/voxpupuli/puppet-archive.git"
archive: "git://github.com/voxpupuli/puppet-archive.git" facts: 'https://github.com/puppetlabs/puppetlabs-facts.git'
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
puppet_agent: 'https://github.com/puppetlabs/puppetlabs-puppet_agent.git'
provision: 'https://github.com/puppetlabs/provision.git'
symlinks: symlinks:
java: "#{source_dir}" java: "#{source_dir}"

54
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: "release"
on:
push:
branches:
- 'release'
jobs:
LitmusAcceptance:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks]
agent_family: ['puppet5', 'puppet6']
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@master
with:
platform: ${{ matrix.platform }}
agent_family: ${{ matrix.agent_family }}
Spec:
runs-on: self-hosted
strategy:
matrix:
check: [parallel_spec, 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop']
ruby_version: [2.4.x, 2.5.x]
puppet_gem_version: [~> 5.0, ~> 6.0]
exclude:
- puppet_gem_version: ~> 5.0
check: 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop'
- ruby_version: 2.4.x
puppet_gem_version: ~> 6.0
- ruby_version: 2.5.x
puppet_gem_version: ~> 5.0
steps:
- uses: actions/checkout@v1
- name: Spec Tests
uses: puppetlabs/action-litmus_spec@master
with:
puppet_gem_versionm: ${{ matrix.puppet_gem_version }}
check: ${{ matrix.check }}

3
.gitignore vendored
View File

@@ -22,3 +22,6 @@
/convert_report.txt /convert_report.txt
/update_report.txt /update_report.txt
.DS_Store .DS_Store
.project
.envrc
/inventory.yaml

View File

@@ -22,6 +22,9 @@
/convert_report.txt /convert_report.txt
/update_report.txt /update_report.txt
.DS_Store .DS_Store
.project
.envrc
/inventory.yaml
/appveyor.yml /appveyor.yml
/.fixtures.yml /.fixtures.yml
/Gemfile /Gemfile
@@ -30,8 +33,10 @@
/.gitlab-ci.yml /.gitlab-ci.yml
/.pdkignore /.pdkignore
/Rakefile /Rakefile
/rakelib/
/.rspec /.rspec
/.rubocop.yml /.rubocop.yml
/.travis.yml /.travis.yml
/.yardopts /.yardopts
/spec/ /spec/
/.vscode/

View File

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>puppetlabs-java</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.puppetlabs.geppetto.pp.dsl.ui.modulefileBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.puppetlabs.geppetto.pp.dsl.ui.puppetNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1 @@
--relative

View File

@@ -1,5 +1,7 @@
--- ---
require: rubocop-rspec require:
- rubocop-rspec
- rubocop-i18n
AllCops: AllCops:
DisplayCopNames: true DisplayCopNames: true
TargetRubyVersion: '2.1' TargetRubyVersion: '2.1'
@@ -19,10 +21,13 @@ AllCops:
Metrics/LineLength: Metrics/LineLength:
Description: People have wide screens, use them. Description: People have wide screens, use them.
Max: 200 Max: 200
GetText:
Enabled: false
GetText/DecorateString: GetText/DecorateString:
Description: We don't want to decorate test output. Description: We don't want to decorate test output.
Exclude: Exclude:
- spec/* - spec/**/*
Enabled: false
RSpec/BeforeAfterAll: RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests. Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing. A necessary evil in acceptance testing.
@@ -84,6 +89,12 @@ Style/MethodCalledOnDoEndBlock:
Enabled: true Enabled: true
Style/StringMethods: Style/StringMethods:
Enabled: true Enabled: true
GetText/DecorateFunctionMessage:
Enabled: false
GetText/DecorateStringFormattingUsingInterpolation:
Enabled: false
GetText/DecorateStringFormattingUsingPercent:
Enabled: false
Layout/EndOfLine: Layout/EndOfLine:
Enabled: false Enabled: false
Layout/IndentHeredoc: Layout/IndentHeredoc:

View File

@@ -1,33 +1,34 @@
--- ---
.travis.yml: ".gitlab-ci.yml":
docker_sets: delete: true
- set: docker/centos-7 ".travis.yml":
- set: docker/ubuntu-14.04 global_env:
docker_defaults: - HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
bundler_args: "" deploy_to_forge:
secure: "" enabled: false
branches: branches:
- release - release
use_litmus: true
Gemfile: litmus:
optional: provision_list:
':development': - travis_deb
- gem: 'github_changelog_generator' - travis_ub
git: 'https://github.com/skywinder/github-changelog-generator' - travis_el6
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' - travis_el7
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')" - ---travis_el
required: simplecov: true
':system_tests': notifications:
- gem: 'puppet-module-posix-system-r#{minor_version}' slack:
platforms: ruby secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=
- gem: 'puppet-module-win-system-r#{minor_version}'
platforms:
- mswin
- mingw
- x64_mingw
appveyor.yml: appveyor.yml:
delete: true delete: true
Gemfile:
.gitlab-ci.yml: optional:
unmanaged: true ":development":
- gem: github_changelog_generator
git: https://github.com/skywinder/github-changelog-generator
ref: 20ee04ba1234e9e83eb2ffb5056e23d641c7a018
condition: Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
spec/spec_helper.rb:
mock_with: ":rspec"
coverage_report: true

View File

@@ -1,47 +1,139 @@
--- ---
dist: trusty os: linux
dist: xenial
language: ruby language: ruby
cache: bundler cache: bundler
before_install: before_install:
- bundle -v - bundle -v
- rm -f Gemfile.lock - rm -f Gemfile.lock
- gem update --system $RUBYGEMS_VERSION - "# Update system gems if requested. This is useful to temporarily workaround troubles in the test runner"
- "# See https://github.com/puppetlabs/pdk-templates/commit/705154d5c437796b821691b707156e1b056d244f for an example of how this was used"
- "# Ignore exit code of SIGPIPE'd yes to not fail with shell's pipefail set"
- '[ -z "$RUBYGEMS_VERSION" ] || (yes || true) | gem update --system $RUBYGEMS_VERSION'
- gem --version - gem --version
- bundle -v - bundle -v
script: script:
- 'bundle exec rake $CHECK' - 'SIMPLECOV=yes bundle exec rake $CHECK'
bundler_args: --without system_tests bundler_args: --without system_tests
rvm: rvm:
- 2.5.1 - 2.5.3
env: env:
global: global:
- BEAKER_PUPPET_COLLECTION=puppet6 PUPPET_GEM_VERSION="~> 6.0" - HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
matrix: stages:
- static
- spec
- acceptance
jobs:
fast_finish: true fast_finish: true
include: include:
- -
before_script:
- "bundle exec rake 'litmus:provision_list[travis_deb]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args: bundler_args:
dist: trusty dist: trusty
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/centos-7 BEAKER_TESTMODE=apply env: PLATFORMS=travis_deb_puppet5
rvm: 2.5.1 rvm: 2.5.3
script: bundle exec rake beaker script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker services: docker
sudo: required stage: acceptance
- -
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args: bundler_args:
dist: trusty dist: trusty
env: PUPPET_INSTALL_TYPE=agent BEAKER_debug=true BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_set=docker/ubuntu-14.04 BEAKER_TESTMODE=apply env: PLATFORMS=travis_ub_puppet5
rvm: 2.5.1 rvm: 2.5.3
script: bundle exec rake beaker script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker services: docker
sudo: required stage: acceptance
- -
env: CHECK="syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop" before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el6_puppet5
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
- -
env: CHECK=parallel_spec before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el7_puppet5
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_deb]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_deb_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_ub_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el6_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el7_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static
- -
env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec
rvm: 2.4.4 rvm: 2.4.5
stage: spec
-
env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3
stage: spec
branches: branches:
only: only:
- master - master
@@ -49,12 +141,5 @@ branches:
- release - release
notifications: notifications:
email: false email: false
deploy: slack:
provider: puppetforge secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=
user: puppet
password:
secure: ""
on:
tags: true
all_branches: true
condition: "$DEPLOY_TO_FORGE = yes"

6
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"recommendations": [
"jpogran.puppet-vscode",
"rebornix.Ruby"
]
}

View File

@@ -2,7 +2,87 @@
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org). All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).
## [3.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.3.0) (2019-01-16) ## [v6.2.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.2.0) (2020-02-18)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.1.0...v6.2.0)
### Added
- Support AdoptOpenJDK [\#370](https://github.com/puppetlabs/puppetlabs-java/pull/370) ([timdeluxe](https://github.com/timdeluxe))
### Fixed
- Replace legacy facts by modern facts [\#406](https://github.com/puppetlabs/puppetlabs-java/pull/406) ([hdeheer](https://github.com/hdeheer))
## [v6.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.1.0) (2020-02-03)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.0.0...v6.1.0)
## [v6.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.0.0) (2019-11-11)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v5.0.1...v6.0.0)
### Added
- \(FM-8676\) Add CentOS 8 to supported OS list [\#399](https://github.com/puppetlabs/puppetlabs-java/pull/399) ([david22swan](https://github.com/david22swan))
- FM-8403 - add support Debain10 [\#387](https://github.com/puppetlabs/puppetlabs-java/pull/387) ([lionce](https://github.com/lionce))
### Fixed
- we need to check if java\_default\_home has a value before we attempt t… [\#391](https://github.com/puppetlabs/puppetlabs-java/pull/391) ([robmbrooks](https://github.com/robmbrooks))
- Add support for java 11, the default in debian buster 10 [\#386](https://github.com/puppetlabs/puppetlabs-java/pull/386) ([jhooyberghs](https://github.com/jhooyberghs))
## [v5.0.1](https://github.com/puppetlabs/puppetlabs-java/tree/v5.0.1) (2019-08-05)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v5.0.0...v5.0.1)
## [v5.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v5.0.0) (2019-07-29)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v4.1.0...v5.0.0)
### Changed
- \[FM-8320\] Remove Oracle download [\#372](https://github.com/puppetlabs/puppetlabs-java/pull/372) ([carabasdaniel](https://github.com/carabasdaniel))
### Added
- \(FM-8223\) converted to use litmus [\#376](https://github.com/puppetlabs/puppetlabs-java/pull/376) ([tphoney](https://github.com/tphoney))
- Add buster support, default to 11 [\#369](https://github.com/puppetlabs/puppetlabs-java/pull/369) ([mhjacks](https://github.com/mhjacks))
### Fixed
- \(FM-8343\) use release numbers not lsbdistcodename [\#375](https://github.com/puppetlabs/puppetlabs-java/pull/375) ([tphoney](https://github.com/tphoney))
- Revert "Add support for debian buster" [\#374](https://github.com/puppetlabs/puppetlabs-java/pull/374) ([tphoney](https://github.com/tphoney))
## [v4.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/v4.1.0) (2019-05-29)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v4.0.0...v4.1.0)
### Added
- \(FM-8028\) Add RedHat 8 support [\#363](https://github.com/puppetlabs/puppetlabs-java/pull/363) ([eimlav](https://github.com/eimlav))
## [v4.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v4.0.0) (2019-05-20)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.3.0...v4.0.0)
### Changed
- pdksync - \(MODULES-8444\) - Raise lower Puppet bound [\#356](https://github.com/puppetlabs/puppetlabs-java/pull/356) ([david22swan](https://github.com/david22swan))
### Added
- Add support for debian buster [\#364](https://github.com/puppetlabs/puppetlabs-java/pull/364) ([TomRitserveldt](https://github.com/TomRitserveldt))
- \(FM-7921\) - Implement Puppet Strings [\#353](https://github.com/puppetlabs/puppetlabs-java/pull/353) ([david22swan](https://github.com/david22swan))
- Update default version & java 8 version from 8u192 to 8u201 [\#347](https://github.com/puppetlabs/puppetlabs-java/pull/347) ([valentinsavenko](https://github.com/valentinsavenko))
- Add ability to override basedir and package type for oracle java [\#345](https://github.com/puppetlabs/puppetlabs-java/pull/345) ([fraenki](https://github.com/fraenki))
- MODULES-8613: Add option to set a custom JCE download URL [\#344](https://github.com/puppetlabs/puppetlabs-java/pull/344) ([HielkeJ](https://github.com/HielkeJ))
### Fixed
- MODULES-8698: Fix $install\_path on CentOS with tar.gz package type [\#349](https://github.com/puppetlabs/puppetlabs-java/pull/349) ([fraenki](https://github.com/fraenki))
## [3.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/3.3.0) (2019-01-17)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.2.0...3.3.0) [Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/3.2.0...3.3.0)

2
CODEOWNERS Normal file
View File

@@ -0,0 +1,2 @@
# Setting ownership to the modules team
* @puppetlabs/modules

27
Gemfile
View File

@@ -17,21 +17,18 @@ ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.') minor_version = ruby_version_segments[0..1].join('.')
group :development do group :development do
gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0') gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0') gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0') gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9') gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) gem "json", '= 2.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby] gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby] gem "puppet-module-posix-default-r#{minor_version}", '~> 0.4', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.4', require: false, platforms: [:ruby]
gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw] gem "puppet-module-win-default-r#{minor_version}", '~> 0.4', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2') gem "puppet-module-win-dev-r#{minor_version}", '~> 0.4', require: false, platforms: [:mswin, :mingw, :x64_mingw]
end gem "github_changelog_generator", require: false, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')
group :system_tests do
gem "puppet-module-posix-system-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-system-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
end end
puppet_version = ENV['PUPPET_GEM_VERSION'] puppet_version = ENV['PUPPET_GEM_VERSION']

View File

@@ -1,6 +0,0 @@
## Maintenance
Maintainers:
- Puppet Forge Modules Team `forge-modules |at| puppet |dot| com`
Tickets: https://tickets.puppet.com/browse/MODULES. Make sure to set component to `java`.

View File

@@ -43,123 +43,71 @@ class { 'java' :
} }
``` ```
The defined type `java::oracle` installs one or more versions of Oracle Java SE. `java::oracle` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive). By using `java::oracle` you agree to Oracle's licensing terms for Java SE. The defined type `java::download` installs one or more versions of Java SE from a remote url. `java::download` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
To install Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet ```puppet
java::oracle { 'jdk6' : java::download { 'jdk8' :
ensure => 'present', ensure => 'present',
version => '6',
java_se => 'jdk',
}
java::oracle { 'jdk8' :
ensure => 'present',
version => '8',
java_se => 'jdk', java_se => 'jdk',
url => 'http://myjava.repository/java.tgz",
basedir => '/custom/java',
} }
``` ```
To install a specific release of a Java version, e.g. 8u101-b13, provide both parameters `version_major` and `version_minor` as follows: The defined type `java::adopt` installs one or more versions of AdoptOpenJDK Java. `java::adopt` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
```puppet ```puppet
java::oracle { 'jdk8' : java::adopt { 'jdk8' :
ensure => 'present', ensure => 'present',
version_major => '8u101', version => '8',
version_minor => 'b13', java => 'jdk',
java_se => 'jdk', }
java::adopt { 'jdk11' :
ensure => 'present',
version => '11',
java => 'jdk',
}
```
#TODO
To install a specific release of a AdoptOpenJDK Java version, e.g. 8u202-b08, provide both parameters `version_major` and `version_minor` as follows:
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
}
```
To install AdoptOpenJDK Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before AdoptOpenJDK Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::adopt { 'jdk8' :
ensure => 'present',
version_major => '8u202',
version_minor => 'b08',
java => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
} }
``` ```
## Reference ## Reference
### Classes For information on the classes and types, see the [REFERENCE.md](https://github.com/puppetlabs/puppetlabs-java/blob/master/REFERENCE.md). For information on the facts, see below.
#### Public classes
* `java`: Installs and manages the Java package.
#### Private classes
* `java::config`: Configures the Java alternatives.
* `java::params`: Builds a hash of jdk/jre packages for all compatible operating systems.
#### Parameters
The following parameters are available in `java`:
##### `distribution`
Specifies the Java distribution to install.
Valid options: 'jdk', 'jre', or, where the platform supports alternative packages, 'sun-jdk', 'sun-jre', 'oracle-jdk', 'oracle-jre'. Default: 'jdk'.
##### `java_alternative`
Specifies the name of the Java alternative to use. If you set this parameter, *you must also set the `java_alternative_path`.*
Valid options: Run command `update-java-alternatives -l` for a list of available choices. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `java_alternative_path`
*Required when `java_alternative` is specified.* Defines the path to the `java` command.
Valid option: String. Default: OS and distribution dependent defaults on *deb systems, undef on others.
##### `package`
Specifies the name of the Java package. This is configurable in case you want to install a non-standard Java package. If not set, the module installs the appropriate package for the `distribution` parameter and target platform. If you set `package`, the `distribution` parameter does nothing.
Valid option: String. Default: undef.
##### `version`
Sets the version of Java to install, if you want to ensure a particular version.
Valid options: 'present', 'installed', 'latest', or a string matching `/^[.+_0-9a-zA-Z:-]+$/`. Default: 'present'.
#### Public defined types
* `java::oracle`: Installs specified version of Oracle Java SE. You may install multiple versions of Oracle Jave SE on the same node using this defined type.
#### Parameters
The following parameters are available in `java::oracle`:
##### `version`
Version of Java Standard Edition (SE) to install. 6, 7 or 8.
##### `version_major`
Major version of the Java Standard Edition (SE) to install. Must be used together with `version_minor`. For example, '8u101'.
##### `version_minor`
Minor version (or build version) of the Java Standard Edition (SE) to install. Must be used together with `version_major`. For example, 'b13'.
##### `java_se`
Type of Java SE to install, jdk or jre.
##### `ensure`
Install or remove the package.
##### `oracle_url`
Official Oracle URL to download the binaries from.
##### `proxy_server`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
##### `proxy_type`
Proxy server type (none|http|https|ftp). (passed to archive)
##### `url`
Pass an entire URL to download the installer from rather than building the complete URL from other parameters. This will allow the module to be used even if the URLs are changed by Oracle. If this parameter is used, matching `version_major` and `version_minor` parameters must also be passed to the class.
##### `url_hash`
Directory hash used by the download.oracle.com site. This value is a 32 character string which is part of the file URL returned by the JDK download site.
### Facts ### Facts
@@ -206,6 +154,13 @@ Oracle Java is supported on:
* CentOS 7 * CentOS 7
* Red Hat Enterprise Linux (RHEL) 7 * Red Hat Enterprise Linux (RHEL) 7
AdoptOpenJDK Java is supported on:
* CentOS
* Red Hat Enterprise Linux (RHEL)
* Amazon Linux
* Debian
### Known issues ### Known issues
Where Oracle change the format of the URLs to different installer packages, the curl to fetch the package may fail with a HTTP/404 error. In this case, passing a full known good URL using the `url` parameter will allow the module to still be able to install specific versions of the JRE/JDK. Note the `version_major` and `version_minor` parameters must be passed and must match the version downloaded using the known URL in the `url` parameter. Where Oracle change the format of the URLs to different installer packages, the curl to fetch the package may fail with a HTTP/404 error. In this case, passing a full known good URL using the `url` parameter will allow the module to still be able to install specific versions of the JRE/JDK. Note the `version_major` and `version_minor` parameters must be passed and must match the version downloaded using the known URL in the `url` parameter.
@@ -217,18 +172,6 @@ the binaries to a standard directory. Because of that, the path to this location
is hardcoded in the `java_version` fact. Whenever you upgrade Java to a newer is hardcoded in the `java_version` fact. Whenever you upgrade Java to a newer
version, you have to update the path in this fact. version, you have to update the path in this fact.
#### FreeBSD
By default on FreeBSD, Puppet versions prior to 4.0 throw an error saying `pkgng` is not the default provider. To fix this, install the [zleslie/pkgng module](https://forge.puppetlabs.com/zleslie/pkgng) and set it as the default package provider:
```puppet
Package {
provider => 'pkgng',
}
```
On Puppet 4.0 and later, `pkgng` is included within Puppet and is the default package provider.
## Development ## Development
Puppet modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. To contribute to Puppet projects, see our [module contribution guide.](https://docs.puppetlabs.com/forge/contributing.html) Puppet modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. To contribute to Puppet projects, see our [module contribution guide.](https://docs.puppetlabs.com/forge/contributing.html)

436
REFERENCE.md Normal file
View File

@@ -0,0 +1,436 @@
# Reference
<!-- DO NOT EDIT: This document was generated by Puppet Strings -->
## Table of Contents
**Classes**
_Public Classes_
* [`java`](#java): This module manages the Java runtime package
_Private Classes_
* `java::config`:
* `java::params`: This class builds a hash of JDK/JRE packages and (for Debian)
alternatives. For wheezy/precise, we provide Oracle JDK/JRE
options, even though those are not in the package repositories.
**Defined types**
* [`java::adopt`](#javaadopt): Defined Type java::adopt Description Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM. Install one or more versions of Ad
* [`java::download`](#javadownload): Installs Java from a url location.
## Classes
### java
This module manages the Java runtime package
#### Parameters
The following parameters are available in the `java` class.
##### `distribution`
Data type: `String`
The java distribution to install. Can be one of "jdk" or "jre",
or other platform-specific options where there are multiple
implementations available (eg: OpenJDK vs Oracle JDK).
Default value: 'jdk'
##### `version`
Data type: `Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/]`
The version of java to install. By default, this module simply ensures
that java is present, and does not require a specific version.
Default value: 'present'
##### `package`
Data type: `Optional[String]`
The name of the java package. This is configurable in case a non-standard
java package is desired.
Default value: `undef`
##### `package_options`
Data type: `Optional[Array]`
Array of strings to pass installation options to the 'package' Puppet resource.
Options available depend on the 'package' provider for the target OS.
Default value: `undef`
##### `java_alternative`
Data type: `Optional[String]`
The name of the java alternative to use on Debian systems.
"update-java-alternatives -l" will show which choices are available.
If you specify a particular package, you will almost always also
want to specify which java_alternative to choose. If you set
this, you also need to set the path below.
Default value: `undef`
##### `java_alternative_path`
Data type: `Optional[String]`
The path to the "java" command on Debian systems. Since the
alternatives system makes it difficult to verify which
alternative is actually enabled, this is required to ensure the
correct JVM is enabled.
Default value: `undef`
##### `java_home`
Data type: `Optional[String]`
The path to where the JRE is installed. This will be set as an
environment variable.
Default value: `undef`
## Defined types
### java::adopt
Defined Type java::adopt
Description
Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM.
Install one or more versions of AdoptOpenJDK Java.
Currently only Linux RedHat, Amazon and Debian are supported.
Parameters
[*version*]
Version of Java to install, e.g. '8' or '9'. Default values for major and minor
versions will be used.
[*version_major*]
Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with
version_minor.
[*version_minor*]
Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8').
Must be used together with version_major.
[*java_edition*]
Type of Java Edition to install, jdk or jre.
[*ensure*]
Install or remove the package.
[*proxy_server*]
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
[*proxy_type*]
Proxy server type (none|http|https|ftp). (passed to archive)
[*basedir*]
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
[*manage_basedir*]
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
[*package_type*]
Type of installation package for specified version of java. java 6 comes
in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz
Variables
[*release_major*]
Major version release number for java. Used to construct download URL.
[*release_minor*]
Minor version release number for java. Used to construct download URL.
[*install_path*]
Base install path for specified version of java. Used to determine if java
has already been installed.
[*os*]
java OS type.
[*destination*]
Destination directory to save java installer to. Usually /tmp on Linux and
C:\TEMP on Windows.
[*creates_path*]
Fully qualified path to java after it is installed. Used to determine if
java is already installed.
[*arch*]
java architecture type.
[*package_name*]
Name of the java installation package to download from github.
[*install_command*]
Installation command used to install java. Installation commands
differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
types have the rpms extracted and then forcibly installed. 'rpm' types are
forcibly installed.
[*spacer*]
Spacer to be used in github download url. In major version 8 this is a simple dash
in later versions they use a crazy plus sign, which needs to be used in urlencoded
format
[*download_folder_prefix*]
Download folder name begins differently depending on the release. After major release
8, they have given it a dash. Be aware that even if you want to have a JRE, the folder
still begins with "jdk"
[*release_minor_url*]
filled depending on major release. Until major release 8 the minor part needs to be given
with a 'b' for build, in later versions it is a underscore or a plus sign, which needs
to be stripped for the download url and is replaced with the given spaces (see above)
[*_package_type*]
Helper variable which gets filled depending on parameter package_type
[*_basedir*]
Helper variable which gets filled depending on parameter basedir
[*_version*]
Helper variable which gets filled depending on parameter version
[*_version_int*]
Helper variable which gets the value of $_version converted to integer
[*_append_jre*]
Helper variable which gets filled with the string "-jre" if jre was selected to build the correct install path
[*_release_minor_package_name*]
Helper variable which gets filled with the right minor string depending on the major version
#### Parameters
The following parameters are available in the `java::adopt` defined type.
##### `ensure`
Data type: `Any`
Default value: 'present'
##### `version`
Data type: `Any`
Default value: '8'
##### `version_major`
Data type: `Any`
Default value: `undef`
##### `version_minor`
Data type: `Any`
Default value: `undef`
##### `java`
Data type: `Any`
Default value: 'jdk'
##### `proxy_server`
Data type: `Any`
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Default value: `undef`
##### `basedir`
Data type: `Any`
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Default value: `true`
##### `package_type`
Data type: `Any`
Default value: `undef`
### java::download
Defined Type java::download
#### Parameters
The following parameters are available in the `java::download` defined type.
##### `ensure`
Data type: `Any`
Install or remove the package.
Default value: 'present'
##### `version`
Data type: `Any`
Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
Default value: '8'
##### `version_major`
Data type: `Any`
Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
Default value: `undef`
##### `version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
Default value: `undef`
##### `java_se`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: 'jdk'
##### `proxy_server`
Data type: `Any`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef`
##### `url`
Data type: `Any`
Full URL
Default value: `undef`
##### `jce`
Data type: `Any`
Install Oracles Java Cryptographic Extensions into the JRE or JDK
Default value: `false`
##### `jce_url`
Data type: `Any`
Full URL to the jce zip file
Default value: `undef`
##### `basedir`
Data type: `Any`
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
Default value: `false`
##### `package_type`
Data type: `Any`
Type of installation package for specified version of java_se. java_se 6 comes
in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz
Default value: `undef`
##### `manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: `false`
##### `symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: `undef`

View File

@@ -1,3 +1,6 @@
# frozen_string_literal: true
require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
require 'puppetlabs_spec_helper/rake_tasks' require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax' require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any? require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
@@ -14,15 +17,24 @@ end
def changelog_project def changelog_project
return unless Rake.application.top_level_tasks.include? "changelog" return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = nil || JSON.load(File.read('metadata.json'))['name']
raise "unable to find the changelog_project in .sync.yml or the name in metadata.json" if returnVal.nil? returnVal = nil
returnVal ||= begin
metadata_source = JSON.load(File.read('metadata.json'))['source']
metadata_source_match = metadata_source && metadata_source.match(%r{.*\/([^\/]*?)(?:\.git)?\Z})
metadata_source_match && metadata_source_match[1]
end
raise "unable to find the changelog_project in .sync.yml or calculate it from the source in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator project:#{returnVal}" puts "GitHubChangelogGenerator project:#{returnVal}"
returnVal returnVal
end end
def changelog_future_release def changelog_future_release
return unless Rake.application.top_level_tasks.include? "changelog" return unless Rake.application.top_level_tasks.include? "changelog"
returnVal = JSON.load(File.read('metadata.json'))['version'] returnVal = "v%s" % JSON.load(File.read('metadata.json'))['version']
raise "unable to find the future_release (version) in metadata.json" if returnVal.nil? raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?
puts "GitHubChangelogGenerator future_release:#{returnVal}" puts "GitHubChangelogGenerator future_release:#{returnVal}"
returnVal returnVal

25
distelli-manifest.yml Normal file
View File

@@ -0,0 +1,25 @@
team-modules/puppetlabs-java:
PreBuild:
- source /opt/rh/rh-ruby25/enable
- echo "--- LETS update BUNDLER ---"
- bundle install --path vendor/bundle --jobs 3
Build:
- echo "--- PROVISIONING ---"
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:provision_list[release_checks]
- cat inventory.yaml
- echo "--- AGENT INSTALLATION ---"
- bundle exec rake litmus:install_agent
- echo "--- MODULE INSTALLATION ---"
- bundle exec rake litmus:install_module
- echo "--- TESTS RUNNING ---"
- bundle exec rake litmus:acceptance:parallel
AfterBuildSuccess:
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:tear_down
AfterBuildFailure:
- source /opt/rh/rh-ruby25/enable
- bundle exec rake litmus:tear_down
CommitData:
- RepoType: Git
- RepoPath: .

View File

@@ -1,5 +1,5 @@
class { 'java': class { 'java':
package => 'jdk-8u25-linux-x64', package => 'jdk-8u25-linux-x64',
java_alternative => 'jdk1.8.0_25', java_alternative => 'jdk1.8.0_25',
java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java' java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java',
} }

View File

@@ -7,6 +7,7 @@
# #
# Caveats: # Caveats:
# Needs to list files recursively. Returns the first match # Needs to list files recursively. Returns the first match
# Needs working java_major_version fact
# #
# Notes: # Notes:
# None # None
@@ -14,11 +15,18 @@ Facter.add(:java_libjvm_path) do
confine kernel: ['Linux', 'OpenBSD'] confine kernel: ['Linux', 'OpenBSD']
setcode do setcode do
java_default_home = Facter.value(:java_default_home) java_default_home = Facter.value(:java_default_home)
java_libjvm_file = Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so") java_major_version = Facter.value(:java_major_version)
if java_libjvm_file.nil? || java_libjvm_file.empty? unless java_major_version.nil?
nil java_libjvm_file = if java_major_version.to_i >= 11
else Dir.glob("#{java_default_home}/lib/**/libjvm.so")
File.dirname(java_libjvm_file[0]) else
Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so")
end
if java_libjvm_file.nil? || java_libjvm_file.empty?
nil
else
File.dirname(java_libjvm_file[0])
end
end end
end end
end end

View File

@@ -16,7 +16,13 @@ Facter.add(:java_major_version) do
java_major_version = nil java_major_version = nil
setcode do setcode do
java_version = Facter.value(:java_version) java_version = Facter.value(:java_version)
java_major_version = java_version.strip.split('_')[0].split('.')[1] unless java_version.nil? unless java_version.nil?
java_major_version = if java_version.strip[0..1] == '1.'
java_version.strip.split('_')[0].split('.')[1]
else
java_version.strip.split('.')[0]
end
end
end end
java_major_version java_major_version
end end

View File

@@ -3,7 +3,7 @@
# Purpose: get Java's patch level # Purpose: get Java's patch level
# #
# Resolution: # Resolution:
# Uses java_version fact splits on the patch number (after _) # Uses java_version fact splits on the patch number (after _ for 1.x and patch number for semver'ed javas)
# #
# Caveats: # Caveats:
# none # none
@@ -14,7 +14,13 @@ Facter.add(:java_patch_level) do
java_patch_level = nil java_patch_level = nil
setcode do setcode do
java_version = Facter.value(:java_version) java_version = Facter.value(:java_version)
java_patch_level = java_version.strip.split('_')[1] unless java_version.nil? unless java_version.nil?
if java_version.strip[0..1] == '1.'
java_patch_level = java_version.strip.split('_')[1] unless java_version.nil?
else
java_patch_level = java_version.strip.split('.')[2] unless java_version.nil?
end
end
end end
java_patch_level java_patch_level
end end

View File

@@ -4,7 +4,7 @@
# #
# Resolution: # Resolution:
# Tests for presence of java, returns nil if not present # Tests for presence of java, returns nil if not present
# returns output of "java -version" and splits on \n + '"' # returns output of "java -version" and splits on '"'
# #
# Caveats: # Caveats:
# none # none
@@ -24,7 +24,7 @@ Facter.add(:java_version) do
unless ['darwin'].include? Facter.value(:operatingsystem).downcase unless ['darwin'].include? Facter.value(:operatingsystem).downcase
version = nil version = nil
if Facter::Util::Resolution.which('java') if Facter::Util::Resolution.which('java')
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\"$} =~ line } Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = Regexp.last_match(1) if %r{^.+ version \"(.+)\"} =~ line }
end end
version version
end end
@@ -37,7 +37,7 @@ Facter.add(:java_version) do
setcode do setcode do
unless %r{Unable to find any JVMs matching version} =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1') unless %r{Unable to find any JVMs matching version} =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
version = nil version = nil
Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = $LAST_MATCH_INFO[1] if %r{^.+ version \"(.+)\"$} =~ line } Facter::Util::Resolution.exec('java -Xmx12m -version 2>&1').lines.each { |line| version = Regexp.last_match(1) if %r{^.+ version \"(.+)\"} =~ line }
version version
end end
end end

371
manifests/adopt.pp Normal file
View File

@@ -0,0 +1,371 @@
# Defined Type java::adopt
#
# Description
# Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM.
#
# Install one or more versions of AdoptOpenJDK Java.
#
# Currently only Linux RedHat, Amazon and Debian are supported.
#
# Parameters
# [*version*]
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor
# versions will be used.
#
# [*version_major*]
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with
# version_minor.
#
# [*version_minor*]
# Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8').
# Must be used together with version_major.
#
# [*java_edition*]
# Type of Java Edition to install, jdk or jre.
#
# [*ensure*]
# Install or remove the package.
#
# [*proxy_server*]
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# [*proxy_type*]
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# [*basedir*]
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
#
# [*manage_basedir*]
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
#
# [*package_type*]
# Type of installation package for specified version of java. java 6 comes
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# Variables
# [*release_major*]
# Major version release number for java. Used to construct download URL.
#
# [*release_minor*]
# Minor version release number for java. Used to construct download URL.
#
# [*install_path*]
# Base install path for specified version of java. Used to determine if java
# has already been installed.
#
# [*os*]
# java OS type.
#
# [*destination*]
# Destination directory to save java installer to. Usually /tmp on Linux and
# C:\TEMP on Windows.
#
# [*creates_path*]
# Fully qualified path to java after it is installed. Used to determine if
# java is already installed.
#
# [*arch*]
# java architecture type.
#
# [*package_name*]
# Name of the java installation package to download from github.
#
# [*install_command*]
# Installation command used to install java. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*spacer*]
# Spacer to be used in github download url. In major version 8 this is a simple dash
# in later versions they use a crazy plus sign, which needs to be used in urlencoded
# format
#
# [*download_folder_prefix*]
# Download folder name begins differently depending on the release. After major release
# 8, they have given it a dash. Be aware that even if you want to have a JRE, the folder
# still begins with "jdk"
#
# [*release_minor_url*]
# filled depending on major release. Until major release 8 the minor part needs to be given
# with a 'b' for build, in later versions it is a underscore or a plus sign, which needs
# to be stripped for the download url and is replaced with the given spaces (see above)
#
# [*_package_type*]
# Helper variable which gets filled depending on parameter package_type
#
# [*_basedir*]
# Helper variable which gets filled depending on parameter basedir
#
# [*_version*]
# Helper variable which gets filled depending on parameter version
#
# [*_version_int*]
# Helper variable which gets the value of $_version converted to integer
#
# [*_append_jre*]
# Helper variable which gets filled with the string "-jre" if jre was selected to build the correct install path
#
# [*_release_minor_package_name*]
# Helper variable which gets filled with the right minor string depending on the major version
#
define java::adopt (
$ensure = 'present',
$version = '8',
$version_major = undef,
$version_minor = undef,
$java = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$basedir = undef,
$manage_basedir = true,
$package_type = undef,
) {
# archive module is used to download the java package
include ::archive
# validate java Standard Edition to download
if $java !~ /(jre|jdk)/ {
fail('java must be either jre or jdk.')
}
# determine AdoptOpenJDK Java major and minor version, and installation path
if $version_major and $version_minor {
$release_major = $version_major
$release_minor = $version_minor
if ( $version_major[0] == '8' or $version_major[0] == '9' ) {
$_version = $version_major[0]
} else {
$_version = $version_major[0,2]
}
$_version_int = Numeric($_version)
if ( $java == 'jre' ) {
$_append_jre = '-jre'
} else {
$_append_jre = ''
}
# extracted folders look like this:
# jdk8u202-b08
# jdk-9.0.4+11
# jdk-10.0.2+13
# jdk-11.0.2+9
# jdk-12.0.1+12
# jdk8u202-b08-jre
# jdk-9.0.4+11-jre
# hence we need to check for the major version and build the install path according to it
if ( $_version_int == 8 ) {
$install_path = "jdk${release_major}-${release_minor}${_append_jre}"
} elsif ( $_version_int > 8 ) {
$install_path = "jdk-${release_major}+${release_minor}${_append_jre}"
} else {
fail ("unsupported version ${_version}")
}
} else {
$_version = $version
$_version_int = Numeric($_version)
# use default versions if no specific major and minor version parameters are provided
case $version {
'8' : {
$release_major = '8u202'
$release_minor = 'b08'
$install_path = "${java}8u202-b08"
}
'9' : {
$release_major = '9.0.4'
$release_minor = '11'
$install_path = "${java}-9.0.4+11"
}
# minor release is given with +<number>, however package etc. works with underscore, so we use underscore here
'10' : {
$release_major = '10.0.2'
$release_minor = '13'
$install_path = "${java}-10.0.2+13"
}
'11' : {
$release_major = '11.0.2'
$release_minor = '9'
$install_path = "${java}-11.0.2+9"
}
# minor release is given with +<number>, however package etc. works with underscore, so we use underscore here
'12' : {
$release_major = '12.0.1'
$release_minor = '12'
$install_path = "${java}-12.0.1+12"
}
default : {
$release_major = '8u202'
$release_minor = 'b08'
$install_path = "${java}8u202-b08"
}
}
}
# determine package type (exe/tar/rpm), destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
if $package_type {
$_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
}
}
'Debian' : {
if $package_type {
$_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
}
default : {
fail ("unsupported platform ${$facts['os']['name']}") }
}
$creates_path = "${_basedir}/${install_path}"
$os = 'linux'
$destination_dir = '/tmp/'
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
# set java architecture nomenclature
$os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
case $os_architecture {
'i386' : { $arch = 'x86-32' }
'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' }
default : {
fail ("unsupported platform ${$os_architecture}")
}
}
# package name and path for download from github
#
# following are build based on this real life example full URLs:
#
# https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz
# https://github.com/AdoptOpenJDK/openjdk9-binaries/releases/download/jdk-9.0.4%2B11/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz
# https://github.com/AdoptOpenJDK/openjdk10-binaries/releases/download/jdk-10.0.2%2B13/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz
# https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.2%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz
# https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz
# jre just replaces jdk with jre in the archive name, but not in the path name!
# https://github.com/AdoptOpenJDK/openjdk9-binaries/releases/download/jdk-9.0.4%2B11/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz
if ( $_version_int == 8 ) {
$_release_minor_package_name = $release_minor
} else {
$_release_minor_package_name = "_${release_minor}"
}
case $_package_type {
'tar.gz': {
$package_name = "OpenJDK${_version}U-${java}_${arch}_${os}_hotspot_${release_major}${_release_minor_package_name}.tar.gz"
}
default: {
$package_name = "OpenJDK${_version}U-${java}_${arch}_${os}_hotspot_${release_major}${_release_minor_package_name}.tar.gz"
}
}
# naming convention changed after major version 8, setting variables to consider that
# download_folder_prefix always begins with "jdk", even for jre! see comments for package_name above
if ( $_version_int == 8 ) {
$spacer = '-'
$download_folder_prefix = 'jdk'
} else {
$spacer = '%2B'
$download_folder_prefix = 'jdk-'
}
$source = "https://github.com/AdoptOpenJDK/openjdk${_version}-binaries/releases/download/${download_folder_prefix}${release_major}${spacer}${release_minor}/${package_name}"
# full path to the installer
$destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}")
case $_package_type {
'tar.gz' : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
default : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
}
case $ensure {
'present' : {
archive { $destination :
ensure => present,
source => $source,
extract_path => '/tmp',
cleanup => false,
creates => $creates_path,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'Debian' : {
ensure_resource('file', $_basedir, {
ensure => directory,
})
$install_requires = [Archive[$destination], File[$_basedir]]
}
default : {
$install_requires = [Archive[$destination]]
}
}
if $manage_basedir {
if (!defined(File[$_basedir])) {
file { $_basedir:
ensure => 'directory',
before => Exec["Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}"],
}
}
}
exec { "Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,6 +1,6 @@
# On Debian systems, if alternatives are set, manually assign them. # @api private
class java::config ( ) { class java::config ( ) {
case $::osfamily { case $facts['os']['family'] {
'Debian': { 'Debian': {
if $java::use_java_alternative != undef and $java::use_java_alternative_path != undef { if $java::use_java_alternative != undef and $java::use_java_alternative_path != undef {
exec { 'update-java-alternatives': exec { 'update-java-alternatives':
@@ -26,7 +26,7 @@ class java::config ( ) {
path => '/usr/bin:/usr/sbin:/bin:/sbin', path => '/usr/bin:/usr/sbin:/bin:/sbin',
command => "alternatives --install /usr/bin/java java ${$java::use_java_alternative_path} 20000" , command => "alternatives --install /usr/bin/java java ${$java::use_java_alternative_path} 20000" ,
unless => "alternatives --display java | grep -q ${$java::use_java_alternative_path}", unless => "alternatives --display java | grep -q ${$java::use_java_alternative_path}",
before => Exec['update-java-alternatives'] before => Exec['update-java-alternatives'],
} }
} }

328
manifests/download.pp Normal file
View File

@@ -0,0 +1,328 @@
# Defined Type java::download
#
# @summary
# Installs Java from a url location.
#
#
# @param ensure
# Install or remove the package.
#
# @param version
# Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
#
# @param version_major
# Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
#
# @param version_minor
# Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
#
# @param java_se
# Type of Java Standard Edition to install, jdk or jre.
#
# @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# @param url
# Full URL
#
# @param jce
# Install Oracles Java Cryptographic Extensions into the JRE or JDK
#
# @param jce_url
# Full URL to the jce zip file
#
# @param basedir
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
#
# @param manage_basedir
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
#
# @param package_type
# Type of installation package for specified version of java_se. java_se 6 comes
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# @param manage_symlink
# Whether to manage a symlink that points to the installation directory. Defaults to false.
#
# @param symlink_name
# The name for the optional symlink in the installation directory.
#
define java::download(
$ensure = 'present',
$version = '8',
$version_major = undef,
$version_minor = undef,
$java_se = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$url = undef,
$jce = false,
$jce_url = undef,
$basedir = undef,
$manage_basedir = false,
$package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) {
# archive module is used to download the java package
include archive
# validate java Standard Edition to download
if $java_se !~ /(jre|jdk)/ {
fail('Java SE must be either jre or jdk.')
}
if $jce {
if $jce_url {
$jce_download = $jce_url
} else {
fail('JCE URL must be specified')
}
}
# determine Java major and minor version, and installation path
if $version_major and $version_minor {
$label = $version_major
$release_major = $version_major
$release_minor = $version_minor
if $release_major =~ /(\d+)u(\d+)/ {
# Required for CentOS systems where Java8 update number is >= 171 to ensure
# the package is visible to Puppet. This is only true for installations that
# don't use the tar.gz package type.
if $facts['os']['family'] == 'RedHat' and Numeric($2) >= 171 and $package_type != 'tar.gz' {
$install_path = "${java_se}1.${1}.0_${2}-amd64"
} else {
$install_path = "${java_se}1.${1}.0_${2}"
}
} else {
$install_path = "${java_se}${release_major}${release_minor}"
}
} else {
# use default versions if no specific major and minor version parameters are provided
$label = $version
case $version {
'6' : {
$release_major = '6u45'
$release_minor = 'b06'
$install_path = "${java_se}1.6.0_45"
}
'7' : {
$release_major = '7u80'
$release_minor = 'b15'
$install_path = "${java_se}1.7.0_80"
}
'8' : {
$release_major = '8u201'
$release_minor = 'b09'
$install_path = "${java_se}1.8.0_201"
}
default : {
$release_major = '8u201'
$release_minor = 'b09'
$install_path = "${java_se}1.8.0_201"
}
}
}
# determine package type (exe/tar/rpm), destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
# Oracle Java 6 comes in a special rpmbin format
if $package_type {
$_package_type = $package_type
} elsif $version == '6' {
$_package_type = 'rpmbin'
} else {
$_package_type = 'rpm'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
}
}
'Debian' : {
if $package_type {
$_package_type = $package_type
} else {
$_package_type = 'tar.gz'
}
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
}
default : {
fail ("unsupported platform ${$facts['os']['name']}") }
}
$creates_path = "${_basedir}/${install_path}"
$os = 'linux'
$destination_dir = '/tmp/'
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
# Install required unzip packages for jce
if $jce {
ensure_resource('package', 'unzip', { 'ensure' => 'present' })
}
# set java architecture nomenclature
$os_architecture = $facts['os']['architecture'] ? {
undef => $facts['os']['architecture'],
default => $facts['os']['architecture']
}
case $os_architecture {
'i386' : { $arch = 'i586' }
'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' }
default : {
fail ("unsupported platform ${$os_architecture}")
}
}
# following are based on this example:
# http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jre-7u80-linux-i586.rpm
#
# JaveSE 6 distributed in .bin format
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin
# package name to use in destination directory for the installer
case $_package_type {
'bin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.bin"
}
'rpmbin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}-rpm.bin"
}
'rpm' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
}
'tar.gz' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.tar.gz"
}
default : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
}
}
# if complete URL is provided, use this value for source in archive resource
if $url {
$source = $url
}
else {
fail('Url must be specified')
}
# full path to the installer
$destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}")
case $_package_type {
'bin' : {
$install_command = "sh ${destination}"
}
'rpmbin' : {
$install_command = "sh ${destination} -x; rpm --force -iv sun*.rpm; rpm --force -iv ${java_se}*.rpm"
}
'rpm' : {
$install_command = "rpm --force -iv ${destination}"
}
'tar.gz' : {
$install_command = "tar -zxf ${destination} -C ${_basedir}"
}
default : {
$install_command = "rpm -iv ${destination}"
}
}
case $ensure {
'present' : {
archive { $destination :
ensure => present,
source => $source,
extract_path => '/tmp',
cleanup => false,
creates => $creates_path,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'Debian' : {
ensure_resource('file', $_basedir, {
ensure => directory,
})
$install_requires = [Archive[$destination], File[$_basedir]]
}
default : {
$install_requires = [Archive[$destination]]
}
}
if $manage_basedir {
ensure_resource('file', $_basedir, {'ensure' => 'directory', 'before' => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]})
}
exec { "Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires,
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"],
}
}
if ($jce and $jce_download != undef) {
$jce_path = $java_se ? {
'jre' => "${creates_path}/lib/security",
'jdk' => "${creates_path}/jre/lib/security"
}
archive { "/tmp/jce-${version}.zip":
source => $jce_download,
extract => true,
extract_path => $jce_path,
extract_flags => '-oj',
creates => "${jce_path}/US_export_policy.jar",
cleanup => false,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,49 +1,40 @@
# Class: java # @summary
# This module manages the Java runtime package
# #
# This module manages the Java runtime package # @param distribution
#
# Parameters:
#
# [*distribution*]
# The java distribution to install. Can be one of "jdk" or "jre", # The java distribution to install. Can be one of "jdk" or "jre",
# or other platform-specific options where there are multiple # or other platform-specific options where there are multiple
# implementations available (eg: OpenJDK vs Oracle JDK). # implementations available (eg: OpenJDK vs Oracle JDK).
# #
# [*version*] # @param version
# The version of java to install. By default, this module simply ensures # The version of java to install. By default, this module simply ensures
# that java is present, and does not require a specific version. # that java is present, and does not require a specific version.
# #
# [*package*] # @param package
# The name of the java package. This is configurable in case a non-standard # The name of the java package. This is configurable in case a non-standard
# java package is desired. # java package is desired.
# #
# [*package_options*] # @param package_options
# Array of strings to pass installation options to the 'package' Puppet resource. # Array of strings to pass installation options to the 'package' Puppet resource.
# Options available depend on the 'package' provider for the target OS. # Options available depend on the 'package' provider for the target OS.
# #
# [*java_alternative*] # @param java_alternative
# The name of the java alternative to use on Debian systems. # The name of the java alternative to use on Debian systems.
# "update-java-alternatives -l" will show which choices are available. # "update-java-alternatives -l" will show which choices are available.
# If you specify a particular package, you will almost always also # If you specify a particular package, you will almost always also
# want to specify which java_alternative to choose. If you set # want to specify which java_alternative to choose. If you set
# this, you also need to set the path below. # this, you also need to set the path below.
# #
# [*java_alternative_path*] # @param java_alternative_path
# The path to the "java" command on Debian systems. Since the # The path to the "java" command on Debian systems. Since the
# alternatives system makes it difficult to verify which # alternatives system makes it difficult to verify which
# alternative is actually enabled, this is required to ensure the # alternative is actually enabled, this is required to ensure the
# correct JVM is enabled. # correct JVM is enabled.
# #
# [*java_home*] # @param java_home
# The path to where the JRE is installed. This will be set as an # The path to where the JRE is installed. This will be set as an
# environment variable. # environment variable.
# #
# Actions:
#
# Requires:
#
# Sample Usage:
#
class java( class java(
String $distribution = 'jdk', String $distribution = 'jdk',
Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/] $version = 'present', Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/] $version = 'present',
@@ -110,7 +101,7 @@ class java(
$use_java_package_name == undef or $use_java_alternative == undef or $use_java_package_name == undef or $use_java_alternative == undef or
$use_java_alternative_path == undef or $use_java_home == undef $use_java_alternative_path == undef or $use_java_home == undef
) and ( ) and (
! has_key($::java::params::java, $distribution) ! has_key($java::params::java, $distribution)
)) { )) {
fail("Java distribution ${distribution} is not supported. Missing default values.") fail("Java distribution ${distribution} is not supported. Missing default values.")
} }
@@ -120,7 +111,7 @@ class java(
default => '--jre' default => '--jre'
} }
if $::osfamily == 'Debian' { if $facts['os']['family'] == 'Debian' {
# Needed for update-java-alternatives # Needed for update-java-alternatives
package { 'java-common': package { 'java-common':
ensure => present, ensure => present,

View File

@@ -1,340 +0,0 @@
# Defined Type java::oracle
#
# Description
# Installs Oracle Java. By using this module you agree to the Oracle licensing
# agreement.
#
# Install one or more versions of Oracle Java.
#
# uses the following to download the package and automatically accept
# the licensing terms.
# wget --no-cookies --no-check-certificate --header \
# "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" \
# "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
#
# Parameters
# [*version*]
# Version of Java to install, e.g. '7' or '8'. Default values for major and minor
# versions will be used.
#
# [*version_major*]
# Major version which should be installed, e.g. '8u101'. Must be used together with
# version_minor.
#
# [*version_minor*]
# Minor version which should be installed, e.g. 'b12'. Must be used together with
# version_major.
#
# [*java_se*]
# Type of Java Standard Edition to install, jdk or jre.
#
# [*ensure*]
# Install or remove the package.
#
# [*oracle_url*]
# Official Oracle URL to download binaries from.
#
# [*proxy_server*]
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# [*proxy_type*]
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# Variables
# [*release_major*]
# Major version release number for java_se. Used to construct download URL.
#
# [*release_minor*]
# Minor version release number for java_se. Used to construct download URL.
#
# [*install_path*]
# Base install path for specified version of java_se. Used to determine if java_se
# has already been installed.
#
# [*package_type*]
# Type of installation package for specified version of java_se. java_se 6 comes
# in a few installation package flavors and we need to account for them.
#
# [*os*]
# Oracle java_se OS type.
#
# [*destination*]
# Destination directory to save java_se installer to. Usually /tmp on Linux and
# C:\TEMP on Windows.
#
# [*creates_path*]
# Fully qualified path to java_se after it is installed. Used to determine if
# java_se is already installed.
#
# [*arch*]
# Oracle java_se architecture type.
#
# [*package_name*]
# Name of the java_se installation package to download from Oracle's website.
#
# [*install_command*]
# Installation command used to install Oracle java_se. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*url*]
# Full URL, including oracle_url, release_major, release_minor and package_name, to
# download the Oracle java_se installer. Originally present but not used, activated
# to workaround MODULES-5058
#
# [*url_hash*]
# Directory hash used by the download.oracle.com site. This value is a 32 character string
# which is part of the file URL returned by the JDK download site.
#
# [*jce*]
# Install Oracles Java Cryptographic Extensions into the JRE or JDK
#
# ### Author
# mike@marseglia.org
#
define java::oracle (
$ensure = 'present',
$version = '8',
$version_major = undef,
$version_minor = undef,
$java_se = 'jdk',
$oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/',
$proxy_server = undef,
$proxy_type = undef,
$url = undef,
$url_hash = undef,
$jce = false,
) {
# archive module is used to download the java package
include ::archive
# validate java Standard Edition to download
if $java_se !~ /(jre|jdk)/ {
fail('Java SE must be either jre or jdk.')
}
if $jce {
$jce_download = $version ? {
'8' => 'http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip',
'7' => 'http://download.oracle.com/otn-pub/java/jce/7/UnlimitedJCEPolicyJDK7.zip',
'6' => 'http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip',
default => undef
}
}
# determine Oracle Java major and minor version, and installation path
if $version_major and $version_minor {
$release_major = $version_major
$release_minor = $version_minor
$release_hash = $url_hash
if $release_major =~ /(\d+)u(\d+)/ {
# Required for CentOS systems where Java8 update number is >= 171 to ensure
# the package is visible to Puppet
if $facts['os']['family'] == 'RedHat' and $2 >= '171' {
$install_path = "${java_se}1.${1}.0_${2}-amd64"
} else {
$install_path = "${java_se}1.${1}.0_${2}"
}
} else {
$install_path = "${java_se}${release_major}${release_minor}"
}
} else {
# use default versions if no specific major and minor version parameters are provided
case $version {
'6' : {
$release_major = '6u45'
$release_minor = 'b06'
$install_path = "${java_se}1.6.0_45"
$release_hash = undef
}
'7' : {
$release_major = '7u80'
$release_minor = 'b15'
$install_path = "${java_se}1.7.0_80"
$release_hash = undef
}
'8' : {
$release_major = '8u192'
$release_minor = 'b12'
$install_path = "${java_se}1.8.0_192"
$release_hash = '750e1c8617c5452694857ad95c3ee230'
}
default : {
$release_major = '8u192'
$release_minor = 'b12'
$install_path = "${java_se}1.8.0_192"
$release_hash = '750e1c8617c5452694857ad95c3ee230'
}
}
}
# determine package type (exe/tar/rpm), destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
# Oracle Java 6 comes in a special rpmbin format
if $version == '6' {
$package_type = 'rpmbin'
} else {
$package_type = 'rpm'
}
$creates_path = "/usr/java/${install_path}"
}
'Debian' : {
$package_type = 'tar.gz'
$creates_path = "/usr/lib/jvm/${install_path}"
}
default : {
fail ("unsupported platform ${$facts['os']['name']}") }
}
$os = 'linux'
$destination_dir = '/tmp/'
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
# Install required unzip packages for jce
if $jce {
ensure_resource('package', 'unzip', { 'ensure' => 'present' })
}
# set java architecture nomenclature
case $facts['os']['architecture'] {
'i386' : { $arch = 'i586' }
'x86_64' : { $arch = 'x64' }
'amd64' : { $arch = 'x64' }
default : {
fail ("unsupported platform ${$facts['os']['architecture']}")
}
}
# following are based on this example:
# http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jre-7u80-linux-i586.rpm
#
# JaveSE 6 distributed in .bin format
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586-rpm.bin
# http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin
# package name to download from Oracle's website
case $package_type {
'bin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.bin"
}
'rpmbin' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}-rpm.bin"
}
'rpm' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
}
'tar.gz' : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.tar.gz"
}
default : {
$package_name = "${java_se}-${release_major}-${os}-${arch}.rpm"
}
}
# if complete URL is provided, use this value for source in archive resource
if $url {
$source = $url
}
elsif $release_hash != undef {
$source = "${oracle_url}/${release_major}-${release_minor}/${release_hash}/${package_name}"
}
else {
$source = "${oracle_url}/${release_major}-${release_minor}/${package_name}"
}
# full path to the installer
$destination = "${destination_dir}${package_name}"
notice ("Destination is ${destination}")
case $package_type {
'bin' : {
$install_command = "sh ${destination}"
}
'rpmbin' : {
$install_command = "sh ${destination} -x; rpm --force -iv sun*.rpm; rpm --force -iv ${java_se}*.rpm"
}
'rpm' : {
$install_command = "rpm --force -iv ${destination}"
}
'tar.gz' : {
$install_command = "tar -zxf ${destination} -C /usr/lib/jvm"
}
default : {
$install_command = "rpm -iv ${destination}"
}
}
case $ensure {
'present' : {
archive { $destination :
ensure => present,
source => $source,
cookie => 'gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie',
extract_path => '/tmp',
cleanup => false,
creates => $creates_path,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'Debian' : {
ensure_resource('file', '/usr/lib/jvm', {
ensure => directory,
})
$install_requires = [Archive[$destination], File['/usr/lib/jvm']]
}
default : {
$install_requires = [Archive[$destination]]
}
}
exec { "Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}" :
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires
}
if ($jce and $jce_download != undef) {
$jce_path = $java_se ? {
'jre' => "${creates_path}/lib/security",
'jdk' => "${creates_path}/jre/lib/security"
}
archive { "/tmp/jce-${version}.zip":
source => $jce_download,
cookie => 'gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie',
extract => true,
extract_path => $jce_path,
extract_flags => '-oj',
creates => "${jce_path}/US_export_policy.jar",
cleanup => false,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
]
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,34 +1,28 @@
# Class: java::params # @summary
# This class builds a hash of JDK/JRE packages and (for Debian)
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
# #
# This class builds a hash of JDK/JRE packages and (for Debian) # @api private
# alternatives. For wheezy/precise, we provide Oracle JDK/JRE
# options, even though those are not in the package repositories.
#
# For more info on how to package Oracle JDK/JRE, see the Debian wiki:
# http://wiki.debian.org/JavaPackage
#
# Because the alternatives system makes it very difficult to tell
# which Java alternative is enabled, we hard code the path to bin/java
# for the config class to test if it is enabled.
class java::params { class java::params {
case $::osfamily { case $facts['os']['family'] {
'RedHat': { 'RedHat': {
case $::operatingsystem { case $facts['os']['name'] {
'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': { 'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': {
if (versioncmp($::operatingsystemrelease, '5.0') < 0) { if (versioncmp($facts['os']['release']['full'], '5.0') < 0) {
$jdk_package = 'java-1.6.0-sun-devel' $jdk_package = 'java-1.6.0-sun-devel'
$jre_package = 'java-1.6.0-sun' $jre_package = 'java-1.6.0-sun'
$java_home = '/usr/lib/jvm/java-1.6.0-sun/jre/' $java_home = '/usr/lib/jvm/java-1.6.0-sun/jre/'
} }
# See cde7046 for why >= 5.0 < 6.3 # See cde7046 for why >= 5.0 < 6.3
elsif (versioncmp($::operatingsystemrelease, '6.3') < 0) { elsif (versioncmp($facts['os']['release']['full'], '6.3') < 0) {
$jdk_package = 'java-1.6.0-openjdk-devel' $jdk_package = 'java-1.6.0-openjdk-devel'
$jre_package = 'java-1.6.0-openjdk' $jre_package = 'java-1.6.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.6.0/' $java_home = '/usr/lib/jvm/java-1.6.0/'
} }
# See PR#160 / c8e46b5 for why >= 6.3 < 7.1 # See PR#160 / c8e46b5 for why >= 6.3 < 7.1
elsif (versioncmp($::operatingsystemrelease, '7.1') < 0) { elsif (versioncmp($facts['os']['release']['full'], '7.1') < 0) {
$jdk_package = 'java-1.7.0-openjdk-devel' $jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk' $jre_package = 'java-1.7.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.7.0/' $java_home = '/usr/lib/jvm/java-1.7.0/'
@@ -40,23 +34,23 @@ class java::params {
} }
} }
'Fedora': { 'Fedora': {
if (versioncmp($::operatingsystemrelease, '21') < 0) { if (versioncmp($facts['os']['release']['full'], '21') < 0) {
$jdk_package = 'java-1.7.0-openjdk-devel' $jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk' $jre_package = 'java-1.7.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/" $java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${facts['os']['architecture']}/"
} }
else { else {
$jdk_package = 'java-1.8.0-openjdk-devel' $jdk_package = 'java-1.8.0-openjdk-devel'
$jre_package = 'java-1.8.0-openjdk' $jre_package = 'java-1.8.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.8.0-openjdk-${::architecture}/" $java_home = "/usr/lib/jvm/java-1.8.0-openjdk-${facts['os']['architecture']}/"
} }
} }
'Amazon': { 'Amazon': {
$jdk_package = 'java-1.7.0-openjdk-devel' $jdk_package = 'java-1.7.0-openjdk-devel'
$jre_package = 'java-1.7.0-openjdk' $jre_package = 'java-1.7.0-openjdk'
$java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${::architecture}/" $java_home = "/usr/lib/jvm/java-1.7.0-openjdk-${facts['os']['architecture']}/"
} }
default: { fail("unsupported os ${::operatingsystem}") } default: { fail("unsupported os ${facts['os']['name']}") }
} }
$java = { $java = {
'jdk' => { 'jdk' => {
@@ -70,45 +64,17 @@ class java::params {
} }
} }
'Debian': { 'Debian': {
$oracle_architecture = $::architecture ? { $oracle_architecture = $facts['os']['architecture'] ? {
'amd64' => 'x64', 'amd64' => 'x64',
default => $::architecture default => $facts['os']['architecture']
} }
$openjdk_architecture = $::architecture ? { $openjdk_architecture = $facts['os']['architecture'] ? {
'aarch64' => 'arm64', 'aarch64' => 'arm64',
'armv7l' => 'armhf', 'armv7l' => 'armhf',
default => $::architecture default => $facts['os']['architecture']
} }
case $::lsbdistcodename { case $facts['os']['release']['major'] {
'lenny', 'squeeze', 'lucid', 'natty': { '7', '8', '14.04': {
$java = {
'jdk' => {
'package' => 'openjdk-6-jdk',
'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
},
'jre' => {
'package' => 'openjdk-6-jre-headless',
'alternative' => "java-6-openjdk-${openjdk_architecture}",
'alternative_path' => '/usr/lib/jvm/java-6-openjdk/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-openjdk/jre/',
},
'sun-jre' => {
'package' => 'sun-java6-jre',
'alternative' => 'java-6-sun',
'alternative_path' => '/usr/lib/jvm/java-6-sun/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-sun/jre/',
},
'sun-jdk' => {
'package' => 'sun-java6-jdk',
'alternative' => 'java-6-sun',
'alternative_path' => '/usr/lib/jvm/java-6-sun/jre/bin/java',
'java_home' => '/usr/lib/jvm/java-6-sun/jre/',
},
}
}
'wheezy', 'jessie', 'precise', 'quantal', 'raring', 'saucy', 'trusty', 'utopic': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-7-jdk', 'package' => 'openjdk-7-jdk',
@@ -118,7 +84,7 @@ class java::params {
}, },
'jre' => { 'jre' => {
'package' => 'openjdk-7-jre-headless', 'package' => 'openjdk-7-jre-headless',
'alternative' => "java-1.7.0-openjdk-${::architecture}", 'alternative' => "java-1.7.0-openjdk-${facts['os']['architecture']}",
'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/", 'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
}, },
@@ -160,7 +126,7 @@ class java::params {
}, },
} }
} }
'stretch', 'vivid', 'wily', 'xenial', 'yakkety', 'zesty', 'artful': { '9', '15.04', '15.10', '16.04', '16.10', '17.04', '17.10': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-8-jdk', 'package' => 'openjdk-8-jdk',
@@ -173,10 +139,10 @@ class java::params {
'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}", 'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/", 'java_home' => "/usr/lib/jvm/java-1.8.0-openjdk-${openjdk_architecture}/",
} },
} }
} }
'bionic': { '10', '18.04', '18.10', '19.04', '19.10': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-11-jdk', 'package' => 'openjdk-11-jdk',
@@ -189,10 +155,10 @@ class java::params {
'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}", 'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}",
'alternative_path' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/bin/java", 'alternative_path' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/bin/java",
'java_home' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/", 'java_home' => "/usr/lib/jvm/java-1.11.0-openjdk-${openjdk_architecture}/",
} },
} }
} }
default: { fail("unsupported release ${::lsbdistcodename}") } default: { fail("unsupported release ${facts['os']['release']['major']}") }
} }
} }
'OpenBSD': { 'OpenBSD': {
@@ -232,17 +198,17 @@ class java::params {
} }
} }
'Suse': { 'Suse': {
case $::operatingsystem { case $facts['os']['name'] {
'SLES': { 'SLES': {
if (versioncmp($::operatingsystemrelease, '12.1') >= 0) { if (versioncmp($facts['os']['release']['full'], '12.1') >= 0) {
$jdk_package = 'java-1_8_0-openjdk-devel' $jdk_package = 'java-1_8_0-openjdk-devel'
$jre_package = 'java-1_8_0-openjdk' $jre_package = 'java-1_8_0-openjdk'
$java_home = '/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/' $java_home = '/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/'
} elsif (versioncmp($::operatingsystemrelease, '12') >= 0) { } elsif (versioncmp($facts['os']['release']['full'], '12') >= 0) {
$jdk_package = 'java-1_7_0-openjdk-devel' $jdk_package = 'java-1_7_0-openjdk-devel'
$jre_package = 'java-1_7_0-openjdk' $jre_package = 'java-1_7_0-openjdk'
$java_home = '/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/' $java_home = '/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/'
} elsif (versioncmp($::operatingsystemrelease, '11.4') >= 0) { } elsif (versioncmp($facts['os']['release']['full'], '11.4') >= 0) {
$jdk_package = 'java-1_7_1-ibm-devel' $jdk_package = 'java-1_7_1-ibm-devel'
$jre_package = 'java-1_7_1-ibm' $jre_package = 'java-1_7_1-ibm'
$java_home = '/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/' $java_home = '/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/'
@@ -289,6 +255,6 @@ class java::params {
}, },
} }
} }
default: { fail("unsupported platform ${::osfamily}") } default: { fail("unsupported platform ${facts['os']['family']}") }
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "puppetlabs-java", "name": "puppetlabs-java",
"version": "3.3.0", "version": "6.2.0",
"author": "puppetlabs", "author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.", "summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -10,11 +10,11 @@
"dependencies": [ "dependencies": [
{ {
"name": "puppetlabs/stdlib", "name": "puppetlabs/stdlib",
"version_requirement": ">= 4.13.1 < 6.0.0" "version_requirement": ">= 4.13.1 < 7.0.0"
}, },
{ {
"name": "puppet/archive", "name": "puppet/archive",
"version_requirement": ">= 1.1.0 < 4.0.0" "version_requirement": ">= 1.1.0 < 5.0.0"
} }
], ],
"operatingsystem_support": [ "operatingsystem_support": [
@@ -23,7 +23,8 @@
"operatingsystemrelease": [ "operatingsystemrelease": [
"5", "5",
"6", "6",
"7" "7",
"8"
] ]
}, },
{ {
@@ -31,7 +32,8 @@
"operatingsystemrelease": [ "operatingsystemrelease": [
"5", "5",
"6", "6",
"7" "7",
"8"
] ]
}, },
{ {
@@ -51,7 +53,8 @@
"operatingsystem": "Debian", "operatingsystem": "Debian",
"operatingsystemrelease": [ "operatingsystemrelease": [
"8", "8",
"9" "9",
"10"
] ]
}, },
{ {
@@ -74,10 +77,10 @@
"requirements": [ "requirements": [
{ {
"name": "puppet", "name": "puppet",
"version_requirement": ">= 4.7.0 < 7.0.0" "version_requirement": ">= 5.5.10 < 7.0.0"
} }
], ],
"template-url": "https://github.com/puppetlabs/pdk-templates/", "template-url": "https://github.com/puppetlabs/pdk-templates#master",
"template-ref": "heads/master-0-g6814a87", "template-ref": "heads/master-0-g88c96ab",
"pdk-version": "1.7.1" "pdk-version": "1.16.0"
} }

22
provision.yaml Normal file
View File

@@ -0,0 +1,22 @@
---
default:
provisioner: docker
images: ['waffleimage/debian8']
vagrant:
provisioner: vagrant
images: ['centos/7', 'generic/ubuntu1804']
travis_deb:
provisioner: docker
images: ['waffleimage/debian8', 'waffleimage/debian9', 'waffleimage/debian10']
travis_ub:
provisioner: docker
images: ['waffleimage/ubuntu14.04', 'waffleimage/ubuntu16.04', 'waffleimage/ubuntu18.04']
travis_el6:
provisioner: docker
images: ['waffleimage/centos6', 'waffleimage/oraclelinux6', 'waffleimage/scientificlinux6']
travis_el7:
provisioner: docker
images: ['waffleimage/centos7', 'waffleimage/oraclelinux7', 'waffleimage/scientificlinux7']
release_checks:
provisioner: vmpooler
images: ['redhat-6-x86_64', 'redhat-7-x86_64', 'redhat-8-x86_64', 'centos-6-x86_64', 'centos-7-x86_64', 'centos-8-x86_64', 'oracle-6-x86_64', 'oracle-7-x86_64', 'scientific-6-x86_64', 'scientific-7-x86_64', 'debian-8-x86_64', 'debian-9-x86_64', 'debian-10-x86_64', 'ubuntu-1404-x86_64', 'ubuntu-1604-x86_64', 'ubuntu-1804-x86_64', 'sles-11-x86_64', 'sles-12-x86_64', 'sles-15-x86_64']

View File

@@ -1,32 +1,5 @@
require 'spec_helper_acceptance' require 'spec_helper_acceptance'
require 'pry'
include Unix::File
# RedHat, CentOS, Scientific, Oracle prior to 5.0 : Sun Java JDK/JRE 1.6
# RedHat, CentOS, Scientific, Oracle 5.0 < x < 6.3 : OpenJDK Java JDK/JRE 1.6
# RedHat, CentOS, Scientific, Oracle after 6.3 : OpenJDK Java JDK/JRE 1.7
# Debian Jesse & Ubuntu 14.04 : OpenJDK Java JDK/JRE 1.7 or Oracle Java JDK/JRE 1.6
# Solaris (what versions?) : Java JDK/JRE 1.7
# OpenSuSE : OpenJDK Java JDK/JRE 1.7
# SLES : IBM Java JDK/JRE 1.6
# C14677
# C14678
# C14679
# C14680
# C14681
# C14682
# C14684
# C14687
# C14692
# C14696
# C14697
# C14700 check on solaris 11
# C14701 check on sles 11
# C14703
# C14723 Where is oracle linux 5?
# C14724 Where is oracle linux 5?
# C14771 Where is redhat 7? Centos 7?
java_class_jre = "class { 'java':\n"\ java_class_jre = "class { 'java':\n"\
" distribution => 'jre',\n"\ " distribution => 'jre',\n"\
@@ -48,18 +21,6 @@ _sun_jdk = "class { 'java':\n"\
" distribution => 'sun-jdk',\n"\ " distribution => 'sun-jdk',\n"\
'}' '}'
oracle_jre = "class { 'java':\n"\
" distribution => 'oracle-jre',\n"\
'}'
oracle_jdk = "class { 'java':\n"\
" distribution => 'oracle-jdk',\n"\
'}'
incorrect_version = "class { 'java':\n"\
" version => '14.5',\n"\
'}'
blank_version = "class { 'java':\n"\ blank_version = "class { 'java':\n"\
" version => '',\n"\ " version => '',\n"\
'}' '}'
@@ -87,11 +48,11 @@ bogus_alternative = "class { 'java':\n"\
oracle_enabled = false oracle_enabled = false
oracle_version_major = '8' oracle_version_major = '8'
oracle_version_minor = '192' oracle_version_minor = '201'
oracle_version_build = '12' oracle_version_build = '09'
oracle_hash = '750e1c8617c5452694857ad95c3ee230' oracle_hash = '42970487e3af4f5aa5bca3f542482c60'
install_oracle_jre = <<EOL install_oracle_jdk_jre = <<EOL
java::oracle { java::oracle {
'test_oracle_jre': 'test_oracle_jre':
version => '#{oracle_version_major}', version => '#{oracle_version_major}',
@@ -100,9 +61,6 @@ install_oracle_jre = <<EOL
url_hash => '#{oracle_hash}', url_hash => '#{oracle_hash}',
java_se => 'jre', java_se => 'jre',
} }
EOL
install_oracle_jdk = <<EOL
java::oracle { java::oracle {
'test_oracle_jdk': 'test_oracle_jdk':
version => '#{oracle_version_major}', version => '#{oracle_version_major}',
@@ -123,6 +81,7 @@ install_oracle_jre_jce = <<EOL
java_se => 'jre', java_se => 'jre',
jce => true, jce => true,
} }
EOL EOL
install_oracle_jdk_jce = <<EOL install_oracle_jdk_jce = <<EOL
@@ -137,113 +96,126 @@ install_oracle_jdk_jce = <<EOL
} }
EOL EOL
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do # AdoptOpenJDK URLs are quite generic, so tests are enabled by default
# We need to test version 8 and >8 (here we use 9), because namings are different after version 8
adopt_enabled = true unless os[:family].casecmp('SLES').zero?
adopt_version8_major = '8'
adopt_version8_minor = '202'
adopt_version8_build = '08'
adopt_version9_major = '9'
adopt_version9_full = '9.0.4'
adopt_version9_build = '11'
install_adopt_jdk_jre = <<EOL
java::adopt {
'test_adopt_jre_version8':
version => '#{adopt_version8_major}',
version_major => '#{adopt_version8_major}u#{adopt_version8_minor}',
version_minor => 'b#{adopt_version8_build}',
java => 'jre',
}
java::adopt {
'test_adopt_jdk_version8':
version => '#{adopt_version8_major}',
version_major => '#{adopt_version8_major}u#{adopt_version8_minor}',
version_minor => 'b#{adopt_version8_build}',
java => 'jdk',
}
java::adopt {
'test_adopt_jre_version9':
version => '#{adopt_version9_major}',
version_major => '#{adopt_version9_full}',
version_minor => '#{adopt_version9_build}',
java => 'jre',
}
java::adopt {
'test_adopt_jdk_version9':
version => '#{adopt_version9_major}',
version_major => '#{adopt_version9_full}',
version_minor => '#{adopt_version9_build}',
java => 'jdk',
}
EOL
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
it 'installs jre' do it 'installs jre' do
apply_manifest(java_class_jre, catch_failures: true) idempotent_apply(java_class_jre)
apply_manifest(java_class_jre, catch_changes: true)
end end
end end
context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
it 'installs jdk' do it 'installs jdk' do
apply_manifest(java_class, catch_failures: true) idempotent_apply(java_class)
apply_manifest(java_class, catch_changes: true)
end
end
# C14704
# C14705
# C15006
context 'oracle', if: (
(fact('operatingsystem') == 'Ubuntu') && fact('operatingsystemrelease').match(%r{^14\.04})
) do
# not supported
# The package is not available from any sources, but if a customer
# custom-builds the package using java-package and adds it to a local
# repository, that is the intention of this version ability
describe 'jre' do
it 'installs oracle-jre' do
apply_manifest(oracle_jre, expect_failures: true)
end
end
describe 'jdk' do
it 'installs oracle-jdk' do
apply_manifest(oracle_jdk, expect_failures: true)
end
end end
end end
context 'with failure cases' do context 'with failure cases' do
# C14711
# SLES 10 returns an exit code of 0 on zypper failure
unless fact('operatingsystem') == 'SLES' && fact('operatingsystemrelease') < '11'
it 'fails to install java with an incorrect version' do
apply_manifest(incorrect_version, expect_failures: true)
end
end
# C14712
it 'fails to install java with a blank version' do it 'fails to install java with a blank version' do
apply_manifest(blank_version, expect_failures: true) apply_manifest(blank_version, expect_failures: true)
end end
# C14713
it 'fails to install java with an incorrect distribution' do it 'fails to install java with an incorrect distribution' do
apply_manifest(incorrect_distro, expect_failures: true) apply_manifest(incorrect_distro, expect_failures: true)
end end
# C14714
it 'fails to install java with a blank distribution' do it 'fails to install java with a blank distribution' do
apply_manifest(blank_distro, expect_failures: true) apply_manifest(blank_distro, expect_failures: true)
end end
# C14715
it 'fails to install java with an incorrect package' do it 'fails to install java with an incorrect package' do
apply_manifest(incorrect_package, expect_failures: true) apply_manifest(incorrect_package, expect_failures: true)
end end
# C14717
# C14719
# C14725
it 'fails on debian or RHEL when passed fake java_alternative and path' do it 'fails on debian or RHEL when passed fake java_alternative and path' do
if fact('osfamily') == 'Debian' || fact('osfamily') == 'RedHat' if os[:family] == 'sles'
apply_manifest(bogus_alternative, expect_failures: true)
else
apply_manifest(bogus_alternative, catch_failures: true) apply_manifest(bogus_alternative, catch_failures: true)
else
apply_manifest(bogus_alternative, expect_failures: true)
end end
end end
end end
# Test oracle java installs context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do let(:install_path) do
install_path = '/usr/lib/jvm' (os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
version_suffix = ''
if fact('osfamily') == 'RedHat' || fact('osfamily') == 'Amazon'
install_path = '/usr/java'
version_suffix = '-amd64'
end end
it 'installs oracle jdk' do
apply_manifest(install_oracle_jdk, catch_failures: true) let(:version_suffix) do
apply_manifest(install_oracle_jdk, catch_changes: true) (os[:family] == 'redhat') ? '-amd64' : ''
result = shell("test ! -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0)
end end
it 'installs oracle jre' do
apply_manifest(install_oracle_jre, catch_failures: true) it 'installs oracle jdk and jre' do
apply_manifest(install_oracle_jre, catch_changes: true) idempotent_apply(install_oracle_jdk_jre)
result = shell("test ! -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar") jdk_result = shell("test ! -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0) jre_result = shell("test ! -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(jdk_result.exit_code).to eq(0)
expect(jre_result.exit_code).to eq(0)
end end
it 'installs oracle jdk with jce' do it 'installs oracle jdk with jce' do
apply_manifest(install_oracle_jdk_jce, catch_failures: true) idempotent_apply(install_oracle_jdk_jce)
apply_manifest(install_oracle_jdk_jce, catch_changes: true)
result = shell("test -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar") result = shell("test -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0) expect(result.exit_code).to eq(0)
end end
it 'installs oracle jre with jce' do it 'installs oracle jre with jce' do
apply_manifest(install_oracle_jre_jce, catch_failures: true) idempotent_apply(install_oracle_jre_jce)
apply_manifest(install_oracle_jre_jce, catch_changes: true)
result = shell("test -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar") result = shell("test -e #{install_path}/jre1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/lib/security/local_policy.jar")
expect(result.exit_code).to eq(0) expect(result.exit_code).to eq(0)
end end
end end
context 'java::adopt', if: adopt_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
let(:install_path) do
(os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
end
let(:version_suffix) do
(os[:family] == 'redhat') ? '-amd64' : ''
end
it 'installs adopt jdk and jre' do
idempotent_apply(install_adopt_jdk_jre)
end
end

View File

@@ -1,10 +0,0 @@
HOSTS:
centos-7-x64:
roles:
- agent
- default
platform: el-7-x86_64
hypervisor: vagrant
box: puppetlabs/centos-7.2-64-nocm
CONFIG:
type: foss

View File

@@ -1,10 +0,0 @@
HOSTS:
debian-8-x64:
roles:
- agent
- default
platform: debian-8-amd64
hypervisor: vagrant
box: puppetlabs/debian-8.2-64-nocm
CONFIG:
type: foss

View File

@@ -1,10 +0,0 @@
HOSTS:
ubuntu-1404-x64:
roles:
- agent
- default
platform: ubuntu-14.04-amd64
hypervisor: vagrant
box: puppetlabs/ubuntu-14.04-64-nocm
CONFIG:
type: foss

View File

@@ -1,12 +0,0 @@
HOSTS:
centos-7-x64:
platform: el-7-x86_64
hypervisor: docker
image: centos:7
docker_preserve_image: true
docker_cmd: '["/usr/sbin/init"]'
# install various tools required to get the image up to usable levels
docker_image_commands:
- 'yum install -y crontabs tar wget openssl sysvinit-tools iproute which initscripts'
CONFIG:
trace_limit: 200

View File

@@ -1,11 +0,0 @@
HOSTS:
debian-8-x64:
platform: debian-8-amd64
hypervisor: docker
image: debian:8
docker_preserve_image: true
docker_cmd: '["/sbin/init"]'
docker_image_commands:
- 'apt-get update && apt-get install -y net-tools wget locales strace lsof && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen'
CONFIG:
trace_limit: 200

View File

@@ -1,12 +0,0 @@
HOSTS:
ubuntu-1404-x64:
platform: ubuntu-14.04-amd64
hypervisor: docker
image: ubuntu:14.04
docker_preserve_image: true
docker_cmd: '["/sbin/init"]'
docker_image_commands:
# ensure that upstart is booting correctly in the container
- 'rm /usr/sbin/policy-rc.d && rm /sbin/initctl && dpkg-divert --rename --remove /sbin/initctl && apt-get update && apt-get install -y net-tools wget && locale-gen en_US.UTF-8'
CONFIG:
trace_limit: 200

View File

@@ -1,36 +1,36 @@
require 'spec_helper' require 'spec_helper'
describe 'java', type: :class do describe 'java', type: :class do
context 'when select openjdk for Centos 5.8' do context 'when select openjdk for CentOS 5.8' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.8', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.8' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.6.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.6.0/') }
end end
context 'when select openjdk for Centos 6.3' do context 'when select openjdk for CentOS 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end end
context 'when select openjdk for Centos 7.1.1503' do context 'when select openjdk for CentOS 7.1.1503' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '7.1.1503', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '7.1.1503' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.8.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.8.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0/') }
end end
context 'when select openjdk for Centos 6.2' do context 'when select openjdk for CentOS 6.2' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.2', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.2' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.not_to contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'when select Oracle JRE with alternatives for Centos 6.3' do context 'when select Oracle JRE with alternatives for CentOS 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '6.3' }, architecture: 'x86_64' } } }
let(:params) { { 'package' => 'jre', 'java_alternative' => '/usr/bin/java', 'java_alternative_path' => '/usr/java/jre1.7.0_67/bin/java' } } let(:params) { { 'package' => 'jre', 'java_alternative' => '/usr/bin/java', 'java_alternative_path' => '/usr/java/jre1.7.0_67/bin/java' } }
it { is_expected.to contain_package('java').with_name('jre') } it { is_expected.to contain_package('java').with_name('jre') }
@@ -38,39 +38,55 @@ describe 'java', type: :class do
it { is_expected.to contain_exec('update-java-alternatives').with_command('alternatives --set java /usr/java/jre1.7.0_67/bin/java') } it { is_expected.to contain_exec('update-java-alternatives').with_command('alternatives --set java /usr/java/jre1.7.0_67/bin/java') }
end end
context 'when select passed value for Centos 5.3' do context 'when select passed value for CentOS 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.3' }, architecture: 'x86_64' } } }
let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } } let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } }
it { is_expected.to contain_package('java').with_name('jdk') } it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.not_to contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'when select default for Centos 5.3' do context 'when select default for CentOS 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
it { is_expected.not_to contain_exec('update-java-alternatives') } it { is_expected.not_to contain_exec('update-java-alternatives') }
end end
context 'when select jdk for Ubuntu Vivid (15.04)' do context 'when select jdk for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'vivid', operatingsystemrelease: '15.04', architecture: 'amd64' } } let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jdk' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') } it { is_expected.to contain_package('java').with_name('openjdk-11-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/') }
end end
context 'when select jre for Ubuntu Vivid (15.04)' do context 'when select jre for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'vivid', operatingsystemrelease: '15.04', architecture: 'amd64' } } let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jre-headless') } it { is_expected.to contain_package('java').with_name('openjdk-11-jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/') }
end
context 'when select jdk for Ubuntu Trusty (14.04)' do
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'trusty' }, release: { major: '14.04' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end
context 'when select jre for Ubuntu Trusty (14.04)' do
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'trusty' }, release: { major: '14.04' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-7-jre-headless') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/') }
end end
context 'when select jdk for Ubuntu xenial (16.04) on ARM' do context 'when select jdk for Ubuntu xenial (16.04) on ARM' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'armv7l' } } let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'armv7l' } } }
let(:params) { { 'distribution' => 'jdk' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
@@ -78,48 +94,34 @@ describe 'java', type: :class do
end end
context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemrelease: '16.04', architecture: 'aarch64' } } let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'aarch64' } } }
let(:params) { { 'distribution' => 'jdk' } } let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') } it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-arm64/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-arm64/') }
end end
context 'when select openjdk for Amazon Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Amazon', operatingsystemrelease: '3.4.43-43.43.amzn1.x86_64', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-x86_64/') }
end
context 'when select passed value for Amazon Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Amazon', operatingsystemrelease: '5.3.4.43-43.43.amzn1.x86_64', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end
context 'when select openjdk for Oracle Linux' do context 'when select openjdk for Oracle Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.4', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.4' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk-devel') }
end end
context 'when select openjdk for Oracle Linux 6.2' do context 'when select openjdk for Oracle Linux 6.2' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.2', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.2' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1.6.0-openjdk-devel') }
end end
context 'when select passed value for Oracle Linux' do context 'when select passed value for Oracle Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'OracleLinux', operatingsystemrelease: '6.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'OracleLinux', release: { full: '6.3' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end end
context 'when select passed value for Scientific Linux' do context 'when select passed value for Scientific Linux' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Scientific', operatingsystemrelease: '6.4', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'Scientific', release: { full: '6.4' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -127,7 +129,7 @@ describe 'java', type: :class do
end end
context 'when select passed value for Scientific Linux CERN (SLC)' do context 'when select passed value for Scientific Linux CERN (SLC)' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'SLC', operatingsystemrelease: '6.4', architecture: 'x86_64' } } let(:facts) { { os: { family: 'RedHat', name: 'SLC', release: { full: '6.4' }, architecture: 'x86_64' } } }
let(:params) { { 'distribution' => 'jre' } } let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') } it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -135,61 +137,47 @@ describe 'java', type: :class do
end end
context 'when select default for OpenSUSE 12.3' do context 'when select default for OpenSUSE 12.3' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'OpenSUSE', operatingsystemrelease: '12.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'Suse', name: 'OpenSUSE', release: { major: '12.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end end
context 'when select default for SLES 11.3' do context 'when select default for SLES 11.3' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.3', architecture: 'x86_64' } } let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '11.3' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_6_0-ibm-devel') } it { is_expected.to contain_package('java').with_name('java-1_6_0-ibm-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.6.0-ibm-1.6.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.6.0-ibm-1.6.0/') }
end end
context 'when select default for SLES 11.4' do context 'when select default for SLES 11.4' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '11.4', architecture: 'x86_64' } } let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '11.4' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_1-ibm-devel') } it { is_expected.to contain_package('java').with_name('java-1_7_1-ibm-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/') }
end end
context 'when select default for SLES 12.0' do context 'when select default for SLES 12.0' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.0', operatingsystemmajrelease: '12', architecture: 'x86_64' } } let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '12.0', major: '12' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1_7_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end end
context 'when select default for SLES 12.1' do context 'when select default for SLES 12.1' do
let(:facts) { { osfamily: 'Suse', operatingsystem: 'SLES', operatingsystemrelease: '12.1', operatingsystemmajrelease: '12', architecture: 'x86_64' } } let(:facts) { { os: { family: 'Suse', name: 'SLES', release: { full: '12.1', major: '12' }, architecture: 'x86_64' } } }
it { is_expected.to contain_package('java').with_name('java-1_8_0-openjdk-devel') } it { is_expected.to contain_package('java').with_name('java-1_8_0-openjdk-devel') }
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') } it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') }
end end
context 'when select jdk for OpenBSD' do
let(:facts) { { osfamily: 'OpenBSD', architecture: 'x86_64' } }
it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.not_to contain_file_line('java-home-environment') }
end
context 'when select jre for OpenBSD' do
let(:facts) { { osfamily: 'OpenBSD', architecture: 'x86_64' } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('jre') }
end
describe 'custom java package' do describe 'custom java package' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemrelease: '8.6', architecture: 'amd64' } } let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'jessie' }, release: { major: '8' }, architecture: 'amd64' } } }
context 'when all params provided' do context 'when all params provided' do
let(:params) do let(:params) do
{ {
'distribution' => 'custom', 'distribution' => 'custom',
'package' => 'custom_jdk', 'package' => 'custom_jdk',
'java_alternative' => 'java-custom_jdk', 'java_alternative' => 'java-custom_jdk',
'java_alternative_path' => '/opt/custom_jdk/bin/java', 'java_alternative_path' => '/opt/custom_jdk/bin/java',
@@ -218,39 +206,44 @@ describe 'java', type: :class do
describe 'incompatible OSs' do describe 'incompatible OSs' do
[ [
{ {
# C14706 os: {
osfamily: 'windows', family: 'windows',
operatingsystem: 'windows', name: 'windows',
operatingsystemrelease: '8.1', release: { full: '8.1' },
},
}, },
{ {
# C14707 os: {
osfamily: 'Darwin', family: 'Darwin',
operatingsystem: 'Darwin', name: 'Darwin',
operatingsystemrelease: '13.3.0', release: { full: '13.3.0' },
},
}, },
{ {
# C14708 os: {
osfamily: 'AIX', family: 'AIX',
operatingsystem: 'AIX', name: 'AIX',
operatingsystemrelease: '7100-02-00-000', release: { full: '7100-02-00-000' },
},
}, },
{ {
# C14708 os: {
osfamily: 'AIX', family: 'AIX',
operatingsystem: 'AIX', name: 'AIX',
operatingsystemrelease: '6100-07-04-1216', release: { full: '6100-07-04-1216' },
},
}, },
{ {
# C14708 os: {
osfamily: 'AIX', family: 'AIX',
operatingsystem: 'AIX', name: 'AIX',
operatingsystemrelease: '5300-12-01-1016', release: { full: '5300-12-01-1016' },
},
}, },
].each do |facts| ].each do |facts|
let(:facts) { facts } let(:facts) { facts }
it "is_expected.to fail on #{facts[:operatingsystem]} #{facts[:operatingsystemrelease]}" do it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform} expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end end
end end

View File

@@ -3,5 +3,6 @@
# Facts specified here will override the values provided by rspec-puppet-facts. # Facts specified here will override the values provided by rspec-puppet-facts.
--- ---
ipaddress: "172.16.254.254" ipaddress: "172.16.254.254"
ipaddress6: "FE80:0000:0000:0000:AAAA:AAAA:AAAA"
is_pe: false is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA" macaddress: "AA:AA:AA:AA:AA:AA"

335
spec/defines/adopt_spec.rb Normal file
View File

@@ -0,0 +1,335 @@
require 'spec_helper'
describe 'java::adopt', type: :define do
context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
context 'when AdoptOpenJDK Java 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JDK' do
let(:params) { { ensure: 'present', version: '9', java: 'jdk' } }
let(:title) { 'jdk9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JDK' do
let(:params) { { ensure: 'present', version: '10', java: 'jdk' } }
let(:title) { 'jdk10' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JDK' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JDK' do
let(:params) { { ensure: 'present', version: '12', java: 'jdk' } }
let(:title) { 'jdk12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when AdoptOpenJDK Java 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JRE' do
let(:params) { { ensure: 'present', version: '9', java: 'jre' } }
let(:title) { 'jre9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JRE' do
let(:params) { { ensure: 'present', version: '10', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JRE' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JRE' do
let(:params) { { ensure: 'present', version: '12', java: 'jre' } }
let(:title) { 'jre12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u202',
version_minor: 'b08',
java: 'jdk',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::adopt {
'jdk8172':
ensure => 'present',
version_major => '8u172',
version_minor => 'b11',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
context 'when specifying package_type tar.gz and basedir' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
package_type: 'tar.gz',
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/java') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when manage_basedir is set to true' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
manage_basedir: true,
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_file('/usr/java') }
end
end
context 'with Ubuntu 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } }
context 'when AdoptOpenJDK Java 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JDK' do
let(:params) { { ensure: 'present', version: '9', java: 'jdk' } }
let(:title) { 'jdk9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jdk_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JDK' do
let(:params) { { ensure: 'present', version: '10', java: 'jdk' } }
let(:title) { 'jdk10' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jdk_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JDK' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jdk_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JDK' do
let(:params) { { ensure: 'present', version: '12', java: 'jdk' } }
let(:title) { 'jdk12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jdk 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when AdoptOpenJDK Java 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').with_command('tar -zxf /tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 8 8u202 b08').that_requires('Archive[/tmp/OpenJDK8U-jre_x64_linux_hotspot_8u202b08.tar.gz]') }
end
context 'when AdoptOpenJDK Java 9 JRE' do
let(:params) { { ensure: 'present', version: '9', java: 'jre' } }
let(:title) { 'jre9' }
it { is_expected.to contain_archive('/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').with_command('tar -zxf /tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 9 9.0.4 11').that_requires('Archive[/tmp/OpenJDK9U-jre_x64_linux_hotspot_9.0.4_11.tar.gz]') }
end
context 'when AdoptOpenJDK Java 10 JRE' do
let(:params) { { ensure: 'present', version: '10', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').with_command('tar -zxf /tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 10 10.0.2 13').that_requires('Archive[/tmp/OpenJDK10U-jre_x64_linux_hotspot_10.0.2_13.tar.gz]') }
end
context 'when AdoptOpenJDK Java 11 JRE' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').with_command('tar -zxf /tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 11 11.0.2 9').that_requires('Archive[/tmp/OpenJDK11U-jre_x64_linux_hotspot_11.0.2_9.tar.gz]') }
end
context 'when AdoptOpenJDK Java 12 JRE' do
let(:params) { { ensure: 'present', version: '12', java: 'jre' } }
let(:title) { 'jre12' }
it { is_expected.to contain_archive('/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').with_command('tar -zxf /tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install AdoptOpenJDK java jre 12 12.0.1 12').that_requires('Archive[/tmp/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u202',
version_minor: 'b08',
java: 'jdk',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::adopt {
'jdk8172':
ensure => 'present',
version_major => '8u172',
version_minor => 'b11',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
end
describe 'incompatible OSes' do
[
{
kernel: 'Windows',
os: {
family: 'Windows',
name: 'Windows',
release: {
full: '8.1',
},
},
},
{
kernel: 'Darwin',
os: {
family: 'Darwin',
name: 'Darwin',
release: {
full: '13.3.0',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '7100-02-00-000',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '6100-07-04-1216',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '5300-12-01-1016',
},
},
},
].each do |facts|
let(:facts) { facts }
let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end
end
end

View File

@@ -0,0 +1,143 @@
require 'spec_helper'
describe 'java::download', type: :define do
let(:url) { 'http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz' }
context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
context 'when passing URL to url parameter' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
url: url,
}
end
let(:title) { 'jdk8' }
it {
is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.rpm')
}
end
context 'when no url provided' do
let(:params) do
{
ensure: 'present',
version_major: '8u201',
version_minor: 'b09',
java_se: 'jdk',
}
end
let(:title) { 'jdk8' }
it {
is_expected.to raise_error Puppet::Error
}
end
context 'when manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
url: url,
}
end
let(:title) { 'jdk6' }
it { is_expected.to contain_file('/usr/java/java_home') }
end
end
context 'with Ubuntu 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } }
context 'when passing URL to url parameter' do
let(:params) { { ensure: 'present', version_major: '8u201', version_minor: 'b09', java_se: 'jdk', url: url } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
end
end
context 'with Debian 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Debian', release: { full: '10.0' } } } }
context 'when passing URL to url parameter' do
let(:params) { { ensure: 'present', version_major: '8u201', version_minor: 'b09', java_se: 'jdk', url: url } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u201-linux-x64.tar.gz') }
end
end
describe 'incompatible OSes' do
[
{
kernel: 'Windows',
os: {
family: 'Windows',
name: 'Windows',
release: {
full: '8.1',
},
},
},
{
kernel: 'Darwin',
os: {
family: 'Darwin',
name: 'Darwin',
release: {
full: '13.3.0',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '7100-02-00-000',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '6100-07-04-1216',
},
},
},
{
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '5300-12-01-1016',
},
},
},
].each do |facts|
let(:facts) { facts }
let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end
end
end

View File

@@ -1,433 +0,0 @@
require 'spec_helper'
oracle_url = 'http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.tar.gz'
describe 'java::oracle', type: :define do
context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } }
context 'when Oracle Java SE 6 JDK' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64-rpm.bin]') }
end
context 'when Oracle Java SE 7 JDK' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.rpm]') }
end
context 'when Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u192-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').with_command('rpm --force -iv /tmp/jdk-8u192-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').that_requires('Archive[/tmp/jdk-8u192-linux-x64.rpm]') }
end
context 'when Oracle Java SE 6 JRE' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-x64-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64-rpm.bin]') }
end
context 'when Oracle Java SE 7 JRE' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.rpm]') }
end
context 'when select Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u192-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').with_command('rpm --force -iv /tmp/jre-8u192-linux-x64.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').that_requires('Archive[/tmp/jre-8u192-linux-x64.rpm]') }
end
context 'when passing URL to url parameter' do
let(:params) do
{
ensure: 'present',
version_major: '8u192',
version_minor: 'b12',
java_se: 'jdk',
url: 'http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.rpm',
url_hash: 'ignored',
}
end
let(:title) { 'jdk8' }
it {
is_expected.to contain_archive('/tmp/jdk-8u192-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.rpm')
}
end
context 'when passing a hash to url_hash parameter' do
let(:params) do
{
ensure: 'present',
version_major: '8u192',
version_minor: 'b12',
java_se: 'jdk',
url_hash: '750e1c8617c5452694857ad95c3ee230',
}
end
let(:title) { 'jdk8' }
it {
is_expected.to contain_archive('/tmp/jdk-8u192-linux-x64.rpm')
.with_source('http://download.oracle.com/otn-pub/java/jdk//8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.rpm')
}
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u192',
version_minor: 'b12',
java_se: 'jdk',
url_hash: '750e1c8617c5452694857ad95c3ee230',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end
end
context 'when on CentOS 32-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'i386', name: 'CentOS', release: { full: '6.6' } } } }
context 'when selecting Oracle Java SE 6 JDK on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('sh /tmp/jdk-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jdk*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-i586-rpm.bin]') }
end
context 'when selecting Oracle Java SE 7 JDK on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('rpm --force -iv /tmp/jdk-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-i586.rpm]') }
end
context 'when selecting Oracle Java SE 8 JDK on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u192-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').with_command('rpm --force -iv /tmp/jdk-8u192-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').that_requires('Archive[/tmp/jdk-8u192-linux-i586.rpm]') }
end
context 'when selecting Oracle Java SE 6 JRE on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-i586-rpm.bin') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('sh /tmp/jre-6u45-linux-i586-rpm.bin -x; rpm --force -iv sun*.rpm; rpm --force -iv jre*.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-i586-rpm.bin]') }
end
context 'when select Oracle Java SE 7 JRE on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('rpm --force -iv /tmp/jre-7u80-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-i586.rpm]') }
end
context 'when select Oracle Java SE 8 JRE on RedHat family, 32-bit' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jre-8u192-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').with_command('rpm --force -iv /tmp/jre-8u192-linux-i586.rpm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').that_requires('Archive[/tmp/jre-8u192-linux-i586.rpm]') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u192',
version_minor: 'b12',
java_se: 'jdk',
url_hash: '750e1c8617c5452694857ad95c3ee230',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jre1.6.0_99-amd64/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/java/jdk1.6.0_99-amd64/jre/lib/security')
end
end
end
context 'with Ubuntu 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'Debian', architecture: 'amd64', name: 'Ubuntu', release: { full: '16.04' } } } }
context 'when Oracle Java SE 6 JDK' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jdk' } }
let(:title) { 'jdk6' }
it { is_expected.to contain_archive('/tmp/jdk-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').with_command('tar -zxf /tmp/jdk-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 6 6u45 b06').that_requires('Archive[/tmp/jdk-6u45-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 7 JDK' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/jdk-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').with_command('tar -zxf /tmp/jdk-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 7 7u80 b15').that_requires('Archive[/tmp/jdk-7u80-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u192-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').with_command('tar -zxf /tmp/jdk-8u192-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jdk 8 8u192 b12').that_requires('Archive[/tmp/jdk-8u192-linux-x64.tar.gz]') }
end
context 'with Oracle Java SE 6 JRE' do
let(:params) { { ensure: 'present', version: '6', java_se: 'jre' } }
let(:title) { 'jre6' }
it { is_expected.to contain_archive('/tmp/jre-6u45-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').with_command('tar -zxf /tmp/jre-6u45-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 6 6u45 b06').that_requires('Archive[/tmp/jre-6u45-linux-x64.tar.gz]') }
end
context 'when Oracle Java SE 7 JRE' do
let(:params) { { ensure: 'present', version: '7', java_se: 'jre' } }
let(:title) { 'jre7' }
it { is_expected.to contain_archive('/tmp/jre-7u80-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').with_command('tar -zxf /tmp/jre-7u80-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 7 7u80 b15').that_requires('Archive[/tmp/jre-7u80-linux-x64.tar.gz]') }
end
context 'when Oracle Java SE 8 JRE' do
let(:params) { { ensure: 'present', version: '8', java_se: 'jre' } }
let(:title) { 'jre8' }
it { is_expected.to contain_archive('/tmp/jre-8u192-linux-x64.tar.gz') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').with_command('tar -zxf /tmp/jre-8u192-linux-x64.tar.gz -C /usr/lib/jvm') }
it { is_expected.to contain_exec('Install Oracle java_se jre 8 8u192 b12').that_requires('Archive[/tmp/jre-8u192-linux-x64.tar.gz]') }
end
context 'when passing URL to url parameter' do
let(:params) { { ensure: 'present', version_major: '8u192', version_minor: 'b12', java_se: 'jdk', url: oracle_url.to_s } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/jdk-8u192-linux-x64.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_major: '8u192',
version_minor: 'b12',
java_se: 'jdk',
url_hash: '750e1c8617c5452694857ad95c3ee230',
}
end
let(:title) { 'jdk8' }
let(:pre_condition) do
<<-EOL
java::oracle {
'jdk8121':
ensure => 'present',
version_major => '8u121',
version_minor => 'b13',
java_se => 'jdk',
url_hash => 'abcdef01234567890',
}
EOL
end
it { is_expected.to compile }
end
context 'when installing Oracle Java SE 6 JRE with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jre' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jre1.6.0_99/lib/security')
end
end
context 'when installing Oracle Java SE 6 JDK with JCE' do
let(:params) { { ensure: 'present', jce: true, version: '6', version_major: '6u99', version_minor: '99', java_se: 'jdk' } }
let(:title) { 'jre6jce' }
it do
is_expected.to contain_archive('/tmp/jce-6.zip').with_source('http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip')
is_expected.to contain_archive('/tmp/jce-6.zip').with_extract_path('/usr/lib/jvm/jdk1.6.0_99/jre/lib/security')
end
end
end
describe 'incompatible OSes' do
[
{
# C14706
kernel: 'Windows',
os: {
family: 'Windows',
name: 'Windows',
release: {
full: '8.1',
},
},
},
{
# C14707
kernel: 'Darwin',
os: {
family: 'Darwin',
name: 'Darwin',
release: {
full: '13.3.0',
},
},
},
{
# C14708
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '7100-02-00-000',
},
},
},
{
# C14709
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '6100-07-04-1216',
},
},
},
{
# C14710
kernel: 'AIX',
os: {
family: 'AIX',
name: 'AIX',
release: {
full: '5300-12-01-1016',
},
},
},
].each do |facts|
let(:facts) { facts }
let(:title) { 'jdk' }
it "is_expected.to fail on #{facts[:os][:name]} #{facts[:os][:release][:full]}" do
expect { catalogue }.to raise_error Puppet::Error, %r{unsupported platform}
end
end
end
end

View File

@@ -1,3 +1,9 @@
# frozen_string_literal: true
RSpec.configure do |c|
c.mock_with :rspec
end
require 'puppetlabs_spec_helper/module_spec_helper' require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts' require 'rspec-puppet-facts'
@@ -19,12 +25,17 @@ default_fact_files.each do |f|
next unless File.exist?(f) && File.readable?(f) && File.size?(f) next unless File.exist?(f) && File.readable?(f) && File.size?(f)
begin begin
default_facts.merge!(YAML.safe_load(File.read(f))) default_facts.merge!(YAML.safe_load(File.read(f), [], [], true))
rescue => e rescue => e
RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}" RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
end end
end end
# read default_facts and merge them over what is provided by facterdb
default_facts.each do |fact, value|
add_custom_fact fact, value
end
RSpec.configure do |c| RSpec.configure do |c|
c.default_facts = default_facts c.default_facts = default_facts
c.before :each do c.before :each do
@@ -32,8 +43,14 @@ RSpec.configure do |c|
# by default Puppet runs at warning level # by default Puppet runs at warning level
Puppet.settings[:strict] = :warning Puppet.settings[:strict] = :warning
end end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do
RSpec::Puppet::Coverage.report!(0)
end
end end
# Ensures that a module is defined
# @param module_name Name of the module
def ensure_module_defined(module_name) def ensure_module_defined(module_name)
module_name.split('::').reduce(Object) do |last_module, next_module| module_name.split('::').reduce(Object) do |last_module, next_module|
last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false) last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false)

View File

@@ -1,23 +1,82 @@
require 'beaker-pe' # frozen_string_literal: true
require 'beaker-puppet'
require 'beaker-rspec'
require 'beaker/puppet_install_helper'
require 'beaker/module_install_helper'
run_puppet_install_helper require 'serverspec'
configure_type_defaults_on(hosts) require 'puppet_litmus'
install_module_on(hosts) require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))
install_module_dependencies_on(hosts) include PuppetLitmus
UNSUPPORTED_PLATFORMS = ['Darwin', 'windows'].freeze if ENV['TARGET_HOST'].nil? || ENV['TARGET_HOST'] == 'localhost'
puts 'Running tests against this machine !'
if Gem.win_platform?
set :backend, :cmd
else
set :backend, :exec
end
else
# load inventory
inventory_hash = inventory_hash_from_inventory_file
node_config = config_from_node(inventory_hash, ENV['TARGET_HOST'])
unless ENV['RS_PROVISION'] == 'no' || ENV['BEAKER_provision'] == 'no' if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes')
hosts.each do |host| host = ENV['TARGET_HOST']
install_puppet_module_via_pmt_on(host, module_name: 'puppetlabs-apt') set :backend, :docker
set :docker_container, host
elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'ssh_nodes')
set :backend, :ssh
options = Net::SSH::Config.for(host)
options[:user] = node_config.dig('ssh', 'user') unless node_config.dig('ssh', 'user').nil?
options[:port] = node_config.dig('ssh', 'port') unless node_config.dig('ssh', 'port').nil?
options[:keys] = node_config.dig('ssh', 'private-key') unless node_config.dig('ssh', 'private-key').nil?
options[:password] = node_config.dig('ssh', 'password') unless node_config.dig('ssh', 'password').nil?
# Support both net-ssh 4 and 5.
# rubocop:disable Metrics/BlockNesting
options[:verify_host_key] = if node_config.dig('ssh', 'host-key-check').nil?
# Fall back to SSH behavior. This variable will only be set in net-ssh 5.3+.
if @strict_host_key_checking.nil? || @strict_host_key_checking
Net::SSH::Verifiers::Always.new
else
# SSH's behavior with StrictHostKeyChecking=no: adds new keys to known_hosts.
# If known_hosts points to /dev/null, then equivalent to :never where it
# accepts any key beacuse they're all new.
Net::SSH::Verifiers::AcceptNewOrLocalTunnel.new
end
elsif node_config.dig('ssh', 'host-key-check')
if defined?(Net::SSH::Verifiers::Always)
Net::SSH::Verifiers::Always.new
else
Net::SSH::Verifiers::Secure.new
end
elsif defined?(Net::SSH::Verifiers::Never)
Net::SSH::Verifiers::Never.new
else
Net::SSH::Verifiers::Null.new
end
# rubocop:enable Metrics/BlockNesting
host = if ENV['TARGET_HOST'].include?(':')
ENV['TARGET_HOST'].split(':').first
else
ENV['TARGET_HOST']
end
set :host, options[:host_name] || host
set :ssh_options, options
set :request_pty, true
elsif target_in_group(inventory_hash, ENV['TARGET_HOST'], 'winrm_nodes')
require 'winrm'
set :backend, :winrm
set :os, family: 'windows'
user = node_config.dig('winrm', 'user') unless node_config.dig('winrm', 'user').nil?
pass = node_config.dig('winrm', 'password') unless node_config.dig('winrm', 'password').nil?
endpoint = "http://#{ENV['TARGET_HOST']}:5985/wsman"
opts = {
user: user,
password: pass,
endpoint: endpoint,
operation_timeout: 300,
}
winrm = WinRM::Connection.new opts
Specinfra.configuration.winrm = winrm
end end
end end
RSpec.configure do |c|
# Readable test descriptions
c.formatter = :documentation
end

View File

@@ -0,0 +1 @@
UNSUPPORTED_PLATFORMS = ['darwin', 'windows'].freeze

28
spec/spec_helper_local.rb Normal file
View File

@@ -0,0 +1,28 @@
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'
require 'codecov'
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::Console,
SimpleCov::Formatter::Codecov,
]
SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter '/spec'
# do not track vendored files
add_filter '/vendor'
add_filter '/.vendor'
# do not track gitignored files
# this adds about 4 seconds to the coverage check
# this could definitely be optimized
add_filter do |f|
# system returns true if exit status is 0, which with git-check-ignore means file is ignored
system("git check-ignore --quiet #{f.filename}")
end
end
end

View File

@@ -15,15 +15,15 @@ end
def symlink_and_test(symlink_path, java_home) def symlink_and_test(symlink_path, java_home)
File.symlink(symlink_path, './java_test') File.symlink(symlink_path, './java_test')
Facter::Util::Resolution.expects(:which).with('java').returns('./java_test') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('./java_test')
File.expects(:realpath).with('./java_test').returns(symlink_path) expect(File).to receive(:realpath).with('./java_test').and_return(symlink_path)
expect(Facter.value(:java_default_home)).to eql java_home expect(Facter.value(:java_default_home)).to eql java_home
end end
describe 'java_default_home' do describe 'java_default_home' do
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
end end
context 'when java found in PATH' do context 'when java found in PATH' do
@@ -46,8 +46,8 @@ describe 'java_default_home' do
context 'when java not present, return nil' do context 'when java not present, return nil' do
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
Facter::Util::Resolution.expects(:which).with('java').at_least(1).returns(false) expect(Facter::Util::Resolution).to receive(:which).with('java').at_least(1).and_return(nil)
expect(Facter.value(:java_default_home)).to be_nil expect(Facter.value(:java_default_home)).to be_nil
end end
end end

View File

@@ -1,17 +1,26 @@
require 'spec_helper' require 'spec_helper'
describe 'java_libjvm_path' do describe 'java_libjvm_path' do
let(:java_default_home) { '/usr/lib/jvm/java-8-openjdk-amd64' }
before(:each) do before(:each) do
Facter.clear Facter.clear
Facter.fact(:kernel).stubs(:value).returns('Linux') allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux')
java_default_home = '/usr/lib/jvm/java-8-openjdk-amd64' allow(Facter.fact(:java_default_home)).to receive(:value).and_return(java_default_home)
Facter.fact(:java_default_home).stubs(:value).returns(java_default_home)
Dir.stubs(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").returns(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
end end
context 'when on Linux, return libjvm path' do context 'when libjvm exists' do
it do it do
allow(Facter.fact(:java_major_version)).to receive(:value).and_return(8)
allow(Dir).to receive(:glob).with("#{java_default_home}/jre/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server' expect(Facter.value(:java_libjvm_path)).to eql '/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server'
end end
end end
context 'when libjvm does not exist' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/lib/**/libjvm.so").and_return([])
expect(Facter.value(:java_libjvm_path)).to be nil
end
end
end end

View File

@@ -7,7 +7,7 @@ describe 'java_major_version' do
context 'when java_version fact present, returns major version' do context 'when java_version fact present, returns major version' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_major_version).value).to eq('7') expect(Facter.fact(:java_major_version).value).to eq('7')
@@ -16,7 +16,7 @@ describe 'java_major_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return(nil)
end end
it do it do
expect(Facter.fact(:java_major_version).value).to be_nil expect(Facter.fact(:java_major_version).value).to be_nil

View File

@@ -7,7 +7,7 @@ describe 'java_patch_level' do
context 'when java is installed returns java patch version extracted from java_version fact' do context 'when java is installed returns java patch version extracted from java_version fact' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns('1.7.0_71') allow(Facter.fact(:java_version)).to receive(:value).and_return('1.7.0_71')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to eq('71') expect(Facter.fact(:java_patch_level).value).to eq('71')
@@ -16,7 +16,7 @@ describe 'java_patch_level' do
context 'when java is not installed returns nil' do context 'when java is not installed returns nil' do
before :each do before :each do
Facter.fact(:java_version).stubs(:value).returns(nil) allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
end end
it do it do
expect(Facter.fact(:java_patch_level).value).to be_nil expect(Facter.fact(:java_patch_level).value).to be_nil

View File

@@ -18,37 +18,37 @@ describe 'java_version' do
context 'when java present, returns java version' do context 'when java present, returns java version' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/usr/local/jdk-1.7.0/jre/bin/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/usr/local/jdk-1.7.0/jre/bin/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(openjdk_7_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(openjdk_7_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).with('/usr/libexec/java_home --failfast 2>&1').returns('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').and_return('/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eql '1.7.0_71' expect(Facter.value(:java_version)).to eql '1.7.0_71'
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).with('java').returns('/path/to/java') expect(Facter::Util::Resolution).to receive(:which).with('java').and_return('/path/to/java')
Facter::Util::Resolution.expects(:exec).with('java -Xmx12m -version 2>&1').returns(jdk_7_hotspot_output) expect(Facter::Util::Resolution).to receive(:exec).with('java -Xmx12m -version 2>&1').and_return(jdk_7_hotspot_output)
expect(Facter.value(:java_version)).to eq('1.7.0_71') expect(Facter.value(:java_version)).to eq('1.7.0_71')
end end
end end
@@ -57,34 +57,34 @@ describe 'java_version' do
context 'when java not present, returns nil' do context 'when java not present, returns nil' do
context 'on OpenBSD', with_env: true do context 'on OpenBSD', with_env: true do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('OpenBSD') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('OpenBSD')
end end
let(:facts) { { operatingsystem: 'OpenBSD' } } let(:facts) { { operatingsystem: 'OpenBSD' } }
it do it do
Facter::Util::Resolution.stubs(:exec) allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on Darwin' do context 'when on Darwin' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('Darwin') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
end end
let(:facts) { { operatingsystem: 'Darwin' } } let(:facts) { { operatingsystem: 'Darwin' } }
it do it do
Facter::Util::Resolution.expects(:exec).at_least(1).with('/usr/libexec/java_home --failfast 2>&1').returns('Unable to find any JVMs matching version "(null)".') expect(Facter::Util::Resolution).to receive(:exec).with('/usr/libexec/java_home --failfast 2>&1').at_least(1).and_return('Unable to find any JVMs matching version "(null)".')
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end
context 'when on other systems' do context 'when on other systems' do
before(:each) do before(:each) do
Facter.fact(:operatingsystem).stubs(:value).returns('MyOS') allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('MyOS')
end end
let(:facts) { { operatingsystem: 'MyOS' } } let(:facts) { { operatingsystem: 'MyOS' } }
it do it do
Facter::Util::Resolution.expects(:which).at_least(1).with('java').returns(false) expect(Facter::Util::Resolution).to receive(:which).at_least(1).with('java').and_return(false)
expect(Facter.value(:java_version)).to be_nil expect(Facter.value(:java_version)).to be_nil
end end
end end