Compare commits

...

147 Commits

Author SHA1 Message Date
daianamezdrea
f7342bacb7 Merge pull request #497 from puppetlabs/release-prep
Release prep v7.2.0
2021-09-20 17:56:47 +03:00
GitHub Action
5b8b12525c Release prep v7.2.0 2021-09-20 14:21:34 +00:00
daianamezdrea
5531b7b728 Merge pull request #488 from pmjensen/main
Enabling Rocky Linux for Install
2021-09-20 17:18:22 +03:00
Tim Meusel
ae3e12ed5e Merge pull request #493 from smortex/main
Allow archive 6.x
2021-09-06 11:11:07 +02:00
Romain Tartière
529a37ca4e Allow archive 6.x
A new major version of the archive module was released which add support
for new operating systems and drop support of legacy ones.
2021-08-26 06:47:13 -10:00
david22swan
04cccb09c8 Merge pull request #492 from puppetlabs/release-prep
Release prep v7.1.1
2021-08-26 10:18:07 +01:00
GitHub Action
8fdefc4c89 Release prep v7.1.1 2021-08-25 15:43:57 +00:00
daianamezdrea
980cc5cc03 Merge pull request #491 from puppetlabs/IAC-1741/main/stdlib_v8.0.0
(IAC-1741) Allow stdlib v8.0.0
2021-08-25 18:20:32 +03:00
david22swan
8a6d5038bb (IAC-1741) Allow stdlib v8.0.0 2021-08-25 11:30:09 +01:00
david22swan
541a7dc90a Merge pull request #490 from puppetlabs/release-prep
Release prep v7.1.0
2021-08-12 11:22:15 +01:00
GitHub Action
49ef4596d1 Release prep v7.1.0 2021-08-12 10:19:23 +00:00
daianamezdrea
4cabd802d7 Merge pull request #489 from puppetlabs/pdksync_IAC-1709/main/add_debian_11_support
pdksync - (IAC-1709) - Add Support for Debian 11
2021-08-09 12:57:33 +03:00
Adrian Iurca
13acbba4c8 add debian-11 to params.pp 2021-08-09 05:16:13 +03:00
David Swan
e943b8654c (IAC-1709) - Add Support for Debian 11 2021-08-04 15:42:27 +01:00
Peter Jensen
8817a44d62 Enabling Rocky Linux for Install 2021-07-29 15:57:09 -07:00
Adrian Iurca
a8e68cd210 Merge pull request #487 from puppetlabs/pdksync_iac-1149
pdksync - (maint) - Updating Contribution Guidelines
2021-07-21 13:11:59 +03:00
Paula Muir
4b58529ad5 (maint) Updating CONTRIBUTING guidelines 2021-07-20 15:28:53 +01:00
Michael T Lombardi (He/Him)
358884cbd7 Merge pull request #486 from puppetlabs/pdksync_pdkupdate
pdksync - (maint) PDKSync - PDK Update
2021-06-07 10:28:39 -05:00
Daniel Carabas
e9a1c62f0d (maint) pdksync - PDK Update 2021-06-07 13:07:20 +03:00
daianamezdrea
ee3ac2dbc5 Merge pull request #480 from puppetlabs/pdksync_pdk_update
pdksync - (maint) Running pdk update
2021-04-27 14:40:19 +03:00
Paula Muir
c0ce63019e (maint) Running a pdk update to consume latest pdk-template changes 2021-04-26 21:07:54 +01:00
daianamezdrea
e283a48afc Merge pull request #478 from puppetlabs/release-prep
Release prep v7.0.2
2021-04-26 12:35:25 +03:00
GitHub Action
1c64b30c5d Release prep v7.0.2 2021-04-26 08:48:51 +00:00
daianamezdrea
01fba18d37 Merge pull request #473 from cbobinec/add-url-parameter
Add url parameter for adoptopenjdk
2021-04-26 11:45:58 +03:00
daianamezdrea
bdf8c34b02 Merge pull request #477 from puppetlabs/release-prep
Release prep v7.0.1
2021-04-19 11:21:24 +03:00
GitHub Action
c76a66eb7e Release prep v7.0.1 2021-04-17 03:10:19 +00:00
David Schmitt
312f5469cb Merge pull request #476 from bastelfreak/archive
puppet/archive: allow 5.x
2021-04-16 12:53:58 +01:00
Tim Meusel
69e9ffb19e puppet/archive: allow 5.x 2021-04-16 13:13:21 +02:00
Disha-maker
2d9ff91e1c Merge pull request #475 from puppetlabs/pdksync-locales_remove
pdksync - (maint) - Remove Locales Folder
2021-04-08 10:26:25 +01:00
David Swan
57c94e86e3 (maint) - Removal of Locales Folder 2021-04-07 15:40:51 +01:00
daianamezdrea
d595362de6 Merge pull request #474 from puppetlabs/pdksync_releaseprepupdate
pdksync - PDK Update for auto release prep workflow
2021-04-05 10:58:28 +03:00
Daniel Carabas
56f3f10b1d PDK Update for release prep workflow 2021-04-02 14:19:37 +03:00
Cédric Bobinec
4e2217986e update documentation with puppet strings 2021-04-02 12:20:13 +02:00
Cédric Bobinec
7b8c7ba42f add url parameter for adoptopenjdk 2021-03-23 08:57:37 +01:00
Paula Muir
4fed9edddf Merge pull request #471 from puppetlabs/pdksync_pdkupdate
pdksync - PDK Update - Replace Travis and Appveyor with Github Actions
2021-03-15 20:21:48 +00:00
Daniel Carabas
a83c5a60bc Replace Travis and Appveyor with Github Actions 2021-03-15 18:45:24 +02:00
carabasdaniel
be4923629a Merge pull request #470 from puppetlabs/release
(maint) Release Merge back PR v7.0.0
2021-03-01 18:19:47 +02:00
sheenaajay
2fe0d5dff4 Merge pull request #469 from carabasdaniel/release_prep_v7.0.0
Release version v7.0.0
2021-03-01 16:08:50 +00:00
Auto-release
4ed5c8b966 Release version 7.0.0 2021-03-01 15:44:13 +00:00
daianamezdrea
be8320eafe Merge pull request #468 from puppetlabs/pdksync_maint/main/perform_pdk_update
pdksync - (MAINT) PDK update for GHA workflows + Litmus updates
2021-02-26 15:25:15 +02:00
Ciaran McCrisken
ee6eb4e4a1 (MAINT) pdk update 2021-02-25 16:14:52 +00:00
Paula Muir
91e86c1d11 Merge pull request #467 from puppetlabs/pdksync_maint/main/deprecate_sles11
pdksync - (MAINT) Remove SLES 11 support
2021-02-24 16:58:46 +00:00
Ciaran McCrisken
f5350ff75b (MAINT) Remove SLES 11 support 2021-02-24 16:23:56 +00:00
Paula Muir
28599c9752 Merge pull request #466 from puppetlabs/pdksync_maint/main/deprecate_rhel_5_family
pdksync - (MAINT) Remove RHEL 5 family support
2021-02-24 15:34:27 +00:00
Ciaran McCrisken
0547a5aef9 (MAINT) Remove RHEL 5 OS family support 2021-02-24 13:56:20 +00:00
Michael T Lombardi (He/Him)
32f4322ec6 Merge pull request #464 from puppetlabs/maint/main/update_dependencies
(maint) Update major dependencies prior to release
2021-02-22 19:40:50 -06:00
Paula Muir
8169c6684e (maint) Update major dependencies prior to release 2021-02-22 16:33:42 +00:00
David Schmitt
0ee1993b19 Merge pull request #463 from puppetlabs/pdksync_remove_puppet5
pdksync - Remove Puppet 5 from testing and bump minimal version to 6.0.0
2021-02-18 09:21:05 +00:00
Paula Muir
2ee840b8fc Merge pull request #461 from rjd1/main
(MODULES-10935) - Switch legacy operatingsystem fact to modern kernel one
2021-02-17 09:21:19 +00:00
Ryan Dill
c3a5d55989 (MODULES-10935) - Update fact used on Darwin in java_version unit test 2021-02-16 20:39:24 -08:00
Daniel Carabas
f48ed2fbe9 Add auto_release.yml to sync.yml 2021-02-16 19:19:04 +02:00
Daniel Carabas
1abf0ac15c pdk update 2021-02-16 15:36:50 +02:00
Daniel Carabas
0d2dda5590 Update .sync.yml 2021-02-16 09:50:57 +02:00
Daniel Carabas
d871ee97c1 Bump minimal puppet version to 6.0.0 in metadata.json 2021-02-15 17:36:26 +02:00
Daniel Carabas
a78feaa17e Remove Puppet 5 testing 2021-02-15 17:20:03 +02:00
Ryan Dill
595dc6df93 (MODULES-10935) - Switch legacy operatingsystem fact to modern kernel 2021-02-08 03:28:11 -08:00
daianamezdrea
c03f5a0392 Merge pull request #460 from puppetlabs/pdksync_gha-updates
pdksync - Update gha templates
2021-01-27 11:34:29 +02:00
David Schmitt
dcdbec8565 (maint) Update github actions 2021-01-26 17:16:54 +00:00
sheenaajay
a83f32da35 Merge pull request #457 from puppetlabs/pdksync
Update to puppet-module-gems 1.0, pdk-templates and new rubocop
2021-01-04 13:24:01 +00:00
daianamezdrea
1a6de8e23f Merge pull request #459 from puppetlabs/release
Release mergeback v6.5.0
2020-12-17 11:21:51 +02:00
Adrian Iurca
57187de011 Merge pull request #458 from daianamezdrea/release
Release prep version 6.5.0
2020-12-17 10:23:12 +02:00
David Schmitt
f9d03a10ac Apply remaining rubocop fixes 2020-12-16 17:36:26 +00:00
Auto-release
58edff7fd0 Release version 6.5.0 2020-12-16 14:47:44 +00:00
David Schmitt
d3c3598349 Add all safe auto corrects 2020-12-16 13:44:18 +00:00
David Schmitt
fdbccc3435 Add the FrozenStrings magic comment 2020-12-16 13:44:14 +00:00
David Schmitt
1dda22762e Update to pdk-templates and puppet-module-gems 1.0.0 2020-12-16 13:44:06 +00:00
sanfrancrisko
4ee756a53c Merge pull request #456 from puppetlabs/pdksync_remove_el6_tests
pdksync - Remove EL6 testing from Travis
2020-12-07 17:20:23 +00:00
Daniel Carabas
3667063d07 Remove EL6 testing from Travis 2020-12-07 17:23:47 +02:00
sheenaajay
ee323980c7 Merge pull request #454 from puppetlabs/pdksync_bump_puppet7
pdksync - (feat) Add support for Puppet 7
2020-12-07 12:16:43 +00:00
Daiana_Mezdrea
6a8f03bb17 (feat) - Bump Puppet boundary 2020-12-03 16:34:12 +02:00
David Schmitt
4f17bb9937 Merge pull request #452 from puppetlabs/pdksync_maint/main/release_checks_7_config
pdksync - (maint) Add release_checks_7 config to provision.yaml
2020-11-26 08:42:05 +00:00
Ciaran McCrisken
f3bfd78279 (maint) Add release_checks_7 config to provision.yaml 2020-11-25 13:28:27 +00:00
carabasdaniel
4c3e026fc8 Merge pull request #449 from sheenaajay/removefile
(maint) remove old workflows
2020-11-25 12:17:05 +02:00
sheenaajay
29f7c890ed Merge pull request #451 from carabasdaniel/pdkupdate
PDK Update for GA workflows
2020-11-25 10:16:52 +00:00
Daniel Carabas
d9969df148 PDK Update for GA workflows 2020-11-24 15:27:17 +02:00
sheena
9210295606 (maint) remove old workflow 2020-11-23 09:50:01 +00:00
David Schmitt
43bd5e73af Merge pull request #446 from sheenaajay/cijava
(maint) add java module to ci
2020-11-19 15:17:36 +00:00
sheena
460daa1a80 (maint) add java module to ci 2020-11-18 15:31:15 +00:00
David Schmitt
6bcee4a5fd Merge pull request #447 from puppetlabs/pdksync_gitpod
pdksync - Update pdk-templates for gitpod and codespaces support
2020-11-18 12:56:35 +00:00
David Schmitt
6aea9f9833 Update pdk-templates for gitpod and codespaces support 2020-11-17 21:22:26 +00:00
david22swan
13d30c2e2d Merge pull request #445 from puppetlabs/release
(maint) Release version 6.4.0 mergeback
2020-11-10 09:12:04 +00:00
David Swan
8d1f9c50fc Release version 6.4.0 2020-11-09 14:38:58 +00:00
daianamezdrea
15b317e2ef Merge pull request #439 from david22swan/IAC-993
(IAC-993) - Removal of inappropriate terminology
2020-11-02 12:15:58 +02:00
Adrian Iurca
b0cb998506 Merge pull request #442 from kenyon/patch-1
README: add Ubuntu 20.04
2020-10-27 15:58:16 +02:00
Ciaran McCrisken
9ef2748ef3 (IAC-993) - Removal of inappropriate terminology 2020-10-26 10:26:16 +00:00
sanfrancrisko
3358b47dc7 Merge pull request #443 from daianamezdrea/main
[IAC-1208] - Add the good links for solving the 404 error and exclude sles
2020-10-26 10:18:35 +00:00
Daiana_Mezdrea
f90756d87c Add the good links for solving the 404 error and exclude sles 2020-10-23 14:33:40 +03:00
Kenyon Ralph
82bf74b42a README: add Ubuntu 20.04
Ubuntu 20.04 support was added in #428.
2020-10-22 12:02:15 -07:00
Paula Muir
11dc1f4c26 Merge pull request #435 from puppetlabs/pdksync_IAC-973-2
pdksync - (IAC-973) - Update travis/appveyor to run on new default branch `main`
2020-08-06 12:31:13 +01:00
David Swan
d26dc21d11 (IAC-973) - Update travis/appveyor to run on new default branch main 2020-08-04 15:42:38 +01:00
daianamezdrea
f991317131 Merge pull request #433 from timdeluxe/sapjava
Support SAP Javas (sapjvm / sapmachine)
2020-07-15 17:38:33 +03:00
timdeluxe
24ca4a662a Support SAP Javas (sapjvm / sapmachine) 2020-07-14 17:33:55 +02:00
daianamezdrea
cb1632ab17 Merge pull request #432 from puppetlabs/pdksync_IAC-890
pdksync - (IAC-890) - Implement CentOS 8 travis tests
2020-06-18 16:22:37 +03:00
David Swan
875d5c4205 (IAC-890) - Implement CentOS 8 travis tests 2020-06-16 16:24:49 +01:00
david22swan
5730588e55 Merge pull request #431 from puppetlabs/pdksync_maint/iac-886
pdksync - (IAC-886) Back out SLES 11 from release checks
2020-06-15 10:12:19 +01:00
Ciaran McCrisken
cf2ce99452 (IAC-886) Remove SLES 11 from release checks 2020-06-12 16:33:38 +01:00
david22swan
a38ae55c7f Merge pull request #430 from puppetlabs/release
Release merge-back version 6.3.0
2020-05-28 09:37:38 +01:00
David Swan
372b5d939a Release version 6.3.0 2020-05-27 15:46:26 +01:00
Paula Muir
c481a128da Merge pull request #429 from markt-de/adopt_symlink
(MODULES-10681) Add option to manage symlink to java::adopt
2020-05-27 13:52:34 +01:00
Frank Wall
06f1a56b31 (MODULES-10681) Add option to manage symlink to java::adopt
While here, convert the documentation to Puppet Strings and add
some basic unit tests.
2020-05-26 16:21:33 +02:00
daianamezdrea
236a115ed6 Merge pull request #428 from puppetlabs/pdksync_IAC-746
(IAC-746) - Add ubuntu 20.04 support
2020-05-21 11:24:54 +03:00
David Swan
e4912e071c (IAZ-746) - Set default params for Ubuntu 20.04 2020-05-20 17:30:56 +01:00
David Swan
43133c9a22 (IAC-746) - Add ubuntu 20.04 support 2020-05-20 15:44:44 +01:00
sheenaajay
e94f8521ef Merge pull request #427 from puppetlabs/pdksync_abs
pdksync - Use abs instead of vmpooler to provision test resources
2020-05-19 09:50:12 +01:00
Daniel Carabas
46e2a3b084 Switch to default spec_helper_acceptance file 2020-05-18 10:02:03 +03:00
Daniel Carabas
6de2b2db55 Change provision from vmpooler to abs 2020-05-18 09:55:46 +03:00
sanfrancrisko
07533d13cd Merge pull request #426 from puppetlabs/pdksync_PDK_UPDATE
pdksync - (maint) - Pdk Update
2020-05-14 11:27:16 +01:00
david22swan
484f27a79e (maint) - add back gems removed by pdk update 2020-05-14 09:28:50 +01:00
David Swan
622c3469a6 (maint) - Pdk Update 2020-05-12 15:39:48 +01:00
daianamezdrea
84bc80d881 Merge pull request #424 from puppetlabs/pdksync_dependency_gems_update
pdksync - Add dependency gems to development group
2020-04-27 15:26:03 +03:00
Daniel Carabas
602d630cf0 Add net-ssh dependency gems to development group 2020-04-27 14:26:51 +03:00
carabasdaniel
5a0d540d78 Merge pull request #421 from Filipovici-Andrei/master
(maint) correct test when java is not installed
2020-03-18 14:06:59 +02:00
gimmy
c3104ce39b (maint) correct test when java is not installed 2020-03-18 12:48:22 +02:00
cmccrisken-puppet
3d49162219 Merge pull request #416 from puppetlabs/pdksync_weekly_run
pdksync - Update weekly scheduled workflows
2020-03-12 12:09:54 +00:00
Daniel Carabas
01e717777f Update weekly workflow schedule 2020-03-12 11:48:35 +00:00
carabasdaniel
d9627f96e8 Merge pull request #419 from michaeltlombardi/maint/master/update-docker-image-names
(MAINT) Update docker image names
2020-03-10 09:42:47 +02:00
Michael T Lombardi
708a94f253 (MAINT) Update docker image names
Prior to this commit the provision file referenced the old
waffleimage repo for CI docker images to use. This commit
updates the file to point at litmusimage, which is the repo
the latest images are released to.
2020-03-09 21:46:58 -05:00
Michael T Lombardi (He/Him)
e0da673208 Merge pull request #418 from puppetlabs/pdksync_IAC-555
pdksync - (IAC-555) - Remove distelli-manifest.yml
2020-03-09 10:33:19 -05:00
David Swan
504fe4c0ff (IAC-555) - Remove distelli-manifest.yml 2020-03-06 12:37:46 +00:00
sheenaajay
f9ea9470d5 Merge pull request #417 from puppetlabs/pdksync_PDK_UPDATE
pdksync - (maint) - Pdk Update
2020-03-03 11:41:19 +00:00
David Swan
76cca5c33d (maint) - Pdk Update 2020-02-27 13:14:56 +00:00
sheenaajay
ab55fc141b Merge pull request #413 from puppetlabs/pdksync_weekly_run
pdksync - Add weekly scheduled workflows
2020-02-25 12:28:32 +00:00
Daniel Carabas
9551b4284b Add weekly workflow on default branch 2020-02-20 11:36:34 +02:00
carabasdaniel
ff922b58dc Merge pull request #412 from puppetlabs/release
Release merge-back v6.2.0
2020-02-19 11:41:56 +02:00
Daniel Carabas
2e16e093f2 Change Rspec test execution to serial mode 2020-02-19 09:03:21 +02:00
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
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
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
55 changed files with 3386 additions and 969 deletions

6
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,6 @@
FROM puppet/pdk:latest
# [Optional] Uncomment this section to install additional packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>

View File

@@ -0,0 +1,23 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.140.1/containers/puppet
{
"name": "Puppet Development Kit (Community)",
"dockerFile": "Dockerfile",
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"puppet.puppet-vscode",
"rebornix.Ruby"
]
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "pdk --version",
}

84
.github/workflows/auto_release.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
name: "Auto release"
on:
workflow_dispatch:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
auto_release:
name: "Automatic release prep"
runs-on: ubuntu-20.04
steps:
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
- name: "Honeycomb: start first step"
run: |
echo STEP_ID="auto-release" >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: "Checkout Source"
if: ${{ github.repository_owner == 'puppetlabs' }}
uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
- name: "PDK Release prep"
uses: docker://puppet/iac_release:ci
with:
args: 'release prep --force'
env:
CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "Get Version"
if: ${{ github.repository_owner == 'puppetlabs' }}
id: gv
run: |
echo "::set-output name=ver::$(jq --raw-output .version metadata.json)"
- name: "Commit changes"
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
git config --local user.email "${{ github.repository_owner }}@users.noreply.github.com"
git config --local user.name "GitHub Action"
git add .
git commit -m "Release prep v${{ steps.gv.outputs.ver }}"
- name: Create Pull Request
id: cpr
uses: puppetlabs/peter-evans-create-pull-request@v3
if: ${{ github.repository_owner == 'puppetlabs' }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "Release prep v${{ steps.gv.outputs.ver }}"
branch: "release-prep"
delete-branch: true
title: "Release prep v${{ steps.gv.outputs.ver }}"
body: |
Automated release-prep through [pdk-templates](https://github.com/puppetlabs/pdk-templates/blob/main/moduleroot/.github/workflows/auto_release.yml.erb) from commit ${{ github.sha }}.
Please verify before merging:
- [ ] last [nightly](https://github.com/${{ github.repository }}/actions/workflows/nightly.yml) run is green
- [ ] [Changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) is readable and has no unlabeled pull requests
- [ ] Ensure the [changelog](https://github.com/${{ github.repository }}/blob/release-prep/CHANGELOG.md) version and [metadata](https://github.com/${{ github.repository }}/blob/release-prep/metadata.json) version match
labels: "maintenance"
- name: PR outputs
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
- name: "Honeycomb: Record finish step"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Finished auto release workflow'

204
.github/workflows/nightly.yml vendored Normal file
View File

@@ -0,0 +1,204 @@
name: "nightly"
on:
schedule:
- cron: '0 0 * * *'
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
jobs:
setup_matrix:
name: "Setup Test Matrix"
runs-on: ubuntu-20.04
outputs:
matrix: ${{ steps.get-matrix.outputs.matrix }}
steps:
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
- name: "Honeycomb: Start first step"
run: |
echo STEP_ID=setup-environment >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Checkout Source
uses: actions/checkout@v2
if: ${{ github.repository_owner == 'puppetlabs' }}
- name: Activate Ruby 2.7
uses: ruby/setup-ruby@v1
if: ${{ github.repository_owner == 'puppetlabs' }}
with:
ruby-version: "2.7"
bundler-cache: true
- name: Print bundle environment
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: "Honeycomb: Record Setup Environment time"
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Setup Acceptance Test Matrix
id: get-matrix
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then
buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2
else
echo "::set-output name=matrix::{}"
fi
- name: "Honeycomb: Record Setup Test Matrix time"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix'
Acceptance:
name: "${{matrix.platforms.label}}, ${{matrix.collection}}"
needs:
- setup_matrix
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix: ${{fromJson(needs.setup_matrix.outputs.matrix)}}
env:
BUILDEVENT_FILE: '../buildevents.txt'
steps:
- run: |
echo 'platform=${{ matrix.platforms.image }}' >> $BUILDEVENT_FILE
echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE
echo 'label=${{ matrix.platforms.label }}' >> $BUILDEVENT_FILE
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
matrix-key: ${{ matrix.platforms.label }}-${{ matrix.collection }}
- name: "Honeycomb: start first step"
run: |
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-1 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Checkout Source
uses: actions/checkout@v2
- name: Activate Ruby 2.7
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7"
bundler-cache: true
- name: Print bundle environment
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: "Honeycomb: Record Setup Environment time"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-2 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Provision test environment
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platforms.image }}' -- bundle exec rake 'litmus:provision[${{matrix.platforms.provider}},${{ matrix.platforms.image }}]'
echo ::group::=== REQUEST ===
cat request.json || true
echo
echo ::endgroup::
echo ::group::=== INVENTORY ===
if [ -f 'spec/fixtures/litmus_inventory.yaml' ];
then
FILE='spec/fixtures/litmus_inventory.yaml'
elif [ -f 'inventory.yaml' ];
then
FILE='inventory.yaml'
fi
sed -e 's/password: .*/password: "[redacted]"/' < $FILE || true
echo ::endgroup::
- name: Install agent
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]'
- name: Install module
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_module' -- bundle exec rake 'litmus:install_module'
- name: "Honeycomb: Record deployment times"
if: ${{ always() }}
run: |
echo ::group::honeycomb step
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Deploy test system'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-3 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
echo ::endgroup::
- name: Run acceptance tests
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel'
- name: "Honeycomb: Record acceptance testing times"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-4 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Remove test environment
if: ${{ always() }}
continue-on-error: true
run: |
if [[ -f inventory.yaml || -f spec/fixtures/litmus_inventory.yaml ]]; then
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:tear_down' -- bundle exec rake 'litmus:tear_down'
echo ::group::=== REQUEST ===
cat request.json || true
echo
echo ::endgroup::
fi
- name: "Honeycomb: Record removal times"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment'
slack-workflow-status:
if: always()
name: Post Workflow Status To Slack
needs:
- Acceptance
runs-on: ubuntu-20.04
steps:
- name: Slack Workflow Notification
uses: puppetlabs/Gamesight-slack-workflow-status@pdk-templates-v1
with:
# Required Input
repo_token: ${{ secrets.GITHUB_TOKEN }}
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK }}
# Optional Input
channel: '#team-ia-bots'
name: 'GABot'

184
.github/workflows/pr_test.yml vendored Normal file
View File

@@ -0,0 +1,184 @@
name: "PR Testing"
on: [pull_request]
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
jobs:
setup_matrix:
name: "Setup Test Matrix"
runs-on: ubuntu-20.04
outputs:
matrix: ${{ steps.get-matrix.outputs.matrix }}
steps:
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
- name: "Honeycomb: Start first step"
run: |
echo STEP_ID=setup-environment >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Checkout Source
uses: actions/checkout@v2
if: ${{ github.repository_owner == 'puppetlabs' }}
- name: Activate Ruby 2.7
uses: ruby/setup-ruby@v1
if: ${{ github.repository_owner == 'puppetlabs' }}
with:
ruby-version: "2.7"
bundler-cache: true
- name: Print bundle environment
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: "Honeycomb: Record Setup Environment time"
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Setup Acceptance Test Matrix
id: get-matrix
run: |
if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then
buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2
else
echo "::set-output name=matrix::{}"
fi
- name: "Honeycomb: Record Setup Test Matrix time"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix'
Acceptance:
name: "${{matrix.platforms.label}}, ${{matrix.collection}}"
needs:
- setup_matrix
if: ${{ needs.setup_matrix.outputs.matrix != '{}' }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix: ${{fromJson(needs.setup_matrix.outputs.matrix)}}
env:
BUILDEVENT_FILE: '../buildevents.txt'
steps:
- run: |
echo 'platform=${{ matrix.platforms.image }}' >> $BUILDEVENT_FILE
echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE
echo 'label=${{ matrix.platforms.label }}' >> $BUILDEVENT_FILE
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
matrix-key: ${{ matrix.platforms.label }}-${{ matrix.collection }}
- name: "Honeycomb: start first step"
run: |
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-1 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Checkout Source
uses: actions/checkout@v2
- name: Activate Ruby 2.7
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7"
bundler-cache: true
- name: Print bundle environment
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: "Honeycomb: Record Setup Environment time"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-2 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Provision test environment
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platforms.image }}' -- bundle exec rake 'litmus:provision[${{matrix.platforms.provider}},${{ matrix.platforms.image }}]'
echo ::group::=== REQUEST ===
cat request.json || true
echo
echo ::endgroup::
echo ::group::=== INVENTORY ===
if [ -f 'spec/fixtures/litmus_inventory.yaml' ];
then
FILE='spec/fixtures/litmus_inventory.yaml'
elif [ -f 'inventory.yaml' ];
then
FILE='inventory.yaml'
fi
sed -e 's/password: .*/password: "[redacted]"/' < $FILE || true
echo ::endgroup::
- name: Install agent
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]'
- name: Install module
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_module' -- bundle exec rake 'litmus:install_module'
- name: "Honeycomb: Record deployment times"
if: ${{ always() }}
run: |
echo ::group::honeycomb step
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Deploy test system'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-3 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
echo ::endgroup::
- name: Run acceptance tests
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel'
- name: "Honeycomb: Record acceptance testing times"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests'
echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-4 >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Remove test environment
if: ${{ always() }}
continue-on-error: true
run: |
if [[ -f inventory.yaml || -f spec/fixtures/litmus_inventory.yaml ]]; then
buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:tear_down' -- bundle exec rake 'litmus:tear_down'
echo ::group::=== REQUEST ===
cat request.json || true
echo
echo ::endgroup::
fi
- name: "Honeycomb: Record removal times"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment'

View File

@@ -1,52 +1,47 @@
name: "release"
name: "Publish module"
on:
push:
branches:
- 'release'
workflow_dispatch:
jobs:
LitmusAcceptance:
runs-on: self-hosted
strategy:
matrix:
ruby_version: [2.5.x]
puppet_gem_version: [~> 6.0]
platform: [release_checks]
agent_family: ['puppet5', 'puppet6']
create-github-release:
name: Deploy GitHub Release
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
- name: Litmus Parallel
uses: puppetlabs/action-litmus_parallel@master
- name: Checkout code
uses: actions/checkout@v2
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
ref: ${{ github.ref }}
clean: true
fetch-depth: 0
- name: Get Version
id: gv
run: |
echo "::set-output name=ver::$(jq --raw-output .version metadata.json)"
- name: Create Release
uses: actions/create-release@v1
id: create_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "v${{ steps.gv.outputs.ver }}"
draft: false
prerelease: false
deploy-forge:
name: Deploy to Forge
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v1
- name: Spec Tests
uses: puppetlabs/action-litmus_spec@master
- name: Checkout code
uses: actions/checkout@v2
with:
puppet_gem_versionm: ${{ matrix.puppet_gem_version }}
check: ${{ matrix.check }}
ref: ${{ github.ref }}
clean: true
- name: "PDK Build"
uses: docker://puppet/pdk:nightly
with:
args: 'build'
- name: "Push to Forge"
uses: docker://puppet/pdk:nightly
with:
args: 'release publish --forge-token ${{ secrets.FORGE_API_KEY }} --force'

129
.github/workflows/spec.yml vendored Normal file
View File

@@ -0,0 +1,129 @@
name: "Spec Tests"
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
pull_request:
env:
HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
HONEYCOMB_DATASET: litmus tests
jobs:
setup_matrix:
name: "Setup Test Matrix"
runs-on: ubuntu-20.04
outputs:
spec_matrix: ${{ steps.get-matrix.outputs.spec_matrix }}
steps:
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
- name: "Honeycomb: Start first step"
run: |
echo STEP_ID=setup-environment >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Checkout Source
uses: actions/checkout@v2
if: ${{ github.repository_owner == 'puppetlabs' }}
- name: Activate Ruby 2.7
uses: ruby/setup-ruby@v1
if: ${{ github.repository_owner == 'puppetlabs' }}
with:
ruby-version: "2.7"
bundler-cache: true
- name: Print bundle environment
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: "Honeycomb: Record Setup Environment time"
if: ${{ github.repository_owner == 'puppetlabs' }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: Setup Spec Test Matrix
id: get-matrix
run: |
if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then
buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2
else
echo "::set-output name=spec_matrix::{}"
fi
- name: "Honeycomb: Record Setup Test Matrix time"
if: ${{ always() }}
run: |
buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix'
Spec:
name: "Spec Tests (Puppet: ${{matrix.puppet_version}}, Ruby Ver: ${{matrix.ruby_version}})"
needs:
- setup_matrix
if: ${{ needs.setup_matrix.outputs.spec_matrix != '{}' }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix: ${{fromJson(needs.setup_matrix.outputs.spec_matrix)}}
env:
BUILDEVENT_FILE: '../buildevents.txt'
PUPPET_GEM_VERSION: ${{ matrix.puppet_version }}
FACTER_GEM_VERSION: 'https://github.com/puppetlabs/facter#main'
steps:
- run: |
echo "SANITIZED_PUPPET_VERSION=$(echo '${{ matrix.puppet_version }}' | sed 's/~> //g')" >> $GITHUB_ENV
- run: |
echo 'puppet_version=${{ env.SANITIZED_PUPPET_VERSION }}' >> $BUILDEVENT_FILE
- name: "Honeycomb: Start first step"
run: |
echo "STEP_ID=${{ env.SANITIZED_PUPPET_VERSION }}-spec" >> $GITHUB_ENV
echo STEP_START=$(date +%s) >> $GITHUB_ENV
- name: "Honeycomb: Start recording"
uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
with:
apikey: ${{ env.HONEYCOMB_WRITEKEY }}
dataset: ${{ env.HONEYCOMB_DATASET }}
job-status: ${{ job.status }}
matrix-key: ${{ env.SANITIZED_PUPPET_VERSION }}
- name: Checkout Source
uses: actions/checkout@v2
- name: "Activate Ruby ${{ matrix.ruby_version }}"
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{matrix.ruby_version}}
bundler-cache: true
- name: Print bundle environment
run: |
echo ::group::bundler environment
buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
echo ::endgroup::
- name: Run Static & Syntax Tests
run: |
buildevents cmd $TRACE_ID $STEP_ID 'static_syntax_checks Puppet ${{ matrix.puppet_version }}, Ruby ${{ matrix.ruby_version }}' -- bundle exec rake syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop
- name: Run parallel_spec tests
run: |
buildevents cmd $TRACE_ID $STEP_ID 'rake parallel_spec Puppet ${{ matrix.puppet_version }}, Ruby ${{ matrix.ruby_version }}' -- bundle exec rake parallel_spec

1
.gitignore vendored
View File

@@ -25,3 +25,4 @@
.project
.envrc
/inventory.yaml
/spec/fixtures/litmus_inventory.yaml

18
.gitpod.Dockerfile vendored Normal file
View File

@@ -0,0 +1,18 @@
FROM gitpod/workspace-full
RUN sudo wget https://apt.puppet.com/puppet-tools-release-bionic.deb && \
wget https://apt.puppetlabs.com/puppet6-release-bionic.deb && \
sudo dpkg -i puppet6-release-bionic.deb && \
sudo dpkg -i puppet-tools-release-bionic.deb && \
sudo apt-get update && \
sudo apt-get install -y pdk zsh puppet-agent && \
sudo apt-get clean && \
sudo rm -rf /var/lib/apt/lists/*
RUN sudo usermod -s $(which zsh) gitpod && \
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" && \
echo "plugins=(git gitignore github gem pip bundler python ruby docker docker-compose)" >> /home/gitpod/.zshrc && \
echo 'PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/puppetlabs/bin:/opt/puppetlabs/puppet/bin"' >> /home/gitpod/.zshrc && \
sudo /opt/puppetlabs/puppet/bin/gem install puppet-debugger hub -N && \
mkdir -p /home/gitpod/.config/puppet && \
/opt/puppetlabs/puppet/bin/ruby -r yaml -e "puts ({'disabled' => true}).to_yaml" > /home/gitpod/.config/puppet/analytics.yml
RUN rm -f puppet6-release-bionic.deb puppet-tools-release-bionic.deb
ENTRYPOINT /usr/bin/zsh

9
.gitpod.yml Normal file
View File

@@ -0,0 +1,9 @@
image:
file: .gitpod.Dockerfile
tasks:
- init: pdk bundle install
vscode:
extensions:
- puppet.puppet-vscode@1.2.0:f5iEPbmOj6FoFTOV6q8LTg==

View File

@@ -25,13 +25,16 @@
.project
.envrc
/inventory.yaml
/spec/fixtures/litmus_inventory.yaml
/appveyor.yml
/.editorconfig
/.fixtures.yml
/Gemfile
/.gitattributes
/.gitignore
/.gitlab-ci.yml
/.pdkignore
/.puppet-lint.rc
/Rakefile
/rakelib/
/.rspec
@@ -40,3 +43,5 @@
/.yardopts
/spec/
/.vscode/
/.sync.yml
/.devcontainer/

View File

@@ -1,12 +1,12 @@
---
require:
- rubocop-performance
- rubocop-rspec
- rubocop-i18n
AllCops:
DisplayCopNames: true
TargetRubyVersion: '2.1'
TargetRubyVersion: '2.4'
Include:
- "./**/*.rb"
- "**/*.rb"
Exclude:
- bin/*
- ".vendor/**/*"
@@ -18,16 +18,9 @@ AllCops:
- "**/Puppetfile"
- "**/Vagrantfile"
- "**/Guardfile"
Metrics/LineLength:
Layout/LineLength:
Description: People have wide screens, use them.
Max: 200
GetText:
Enabled: false
GetText/DecorateString:
Description: We don't want to decorate test output.
Exclude:
- spec/**/*
Enabled: false
RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing.
@@ -36,6 +29,9 @@ RSpec/BeforeAfterAll:
RSpec/HookArgument:
Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each
RSpec/DescribeSymbol:
Exclude:
- spec/unit/facter/**/*.rb
Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
@@ -68,7 +64,7 @@ Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/TrailingCommaInLiteral:
Style/TrailingCommaInArrayLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma
@@ -83,26 +79,170 @@ Style/Documentation:
- spec/**/*
Style/WordArray:
EnforcedStyle: brackets
Performance/AncestorsInclude:
Enabled: true
Performance/BigDecimalWithNumericArgument:
Enabled: true
Performance/BlockGivenWithExplicitBlock:
Enabled: true
Performance/CaseWhenSplat:
Enabled: true
Performance/ConstantRegexp:
Enabled: true
Performance/MethodObjectAsBlock:
Enabled: true
Performance/RedundantSortBlock:
Enabled: true
Performance/RedundantStringChars:
Enabled: true
Performance/ReverseFirst:
Enabled: true
Performance/SortReverse:
Enabled: true
Performance/Squeeze:
Enabled: true
Performance/StringInclude:
Enabled: true
Performance/Sum:
Enabled: true
Style/CollectionMethods:
Enabled: true
Style/MethodCalledOnDoEndBlock:
Enabled: true
Style/StringMethods:
Enabled: true
GetText/DecorateFunctionMessage:
Bundler/InsecureProtocolSource:
Enabled: false
GetText/DecorateStringFormattingUsingInterpolation:
Gemspec/DuplicatedAssignment:
Enabled: false
GetText/DecorateStringFormattingUsingPercent:
Gemspec/OrderedDependencies:
Enabled: false
Gemspec/RequiredRubyVersion:
Enabled: false
Gemspec/RubyVersionGlobalsUsage:
Enabled: false
Layout/ArgumentAlignment:
Enabled: false
Layout/BeginEndAlignment:
Enabled: false
Layout/ClosingHeredocIndentation:
Enabled: false
Layout/EmptyComment:
Enabled: false
Layout/EmptyLineAfterGuardClause:
Enabled: false
Layout/EmptyLinesAroundArguments:
Enabled: false
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: false
Layout/EndOfLine:
Enabled: false
Layout/IndentHeredoc:
Layout/FirstArgumentIndentation:
Enabled: false
Layout/HashAlignment:
Enabled: false
Layout/HeredocIndentation:
Enabled: false
Layout/LeadingEmptyLines:
Enabled: false
Layout/SpaceAroundMethodCallOperator:
Enabled: false
Layout/SpaceInsideArrayLiteralBrackets:
Enabled: false
Layout/SpaceInsideReferenceBrackets:
Enabled: false
Lint/BigDecimalNew:
Enabled: false
Lint/BooleanSymbol:
Enabled: false
Lint/ConstantDefinitionInBlock:
Enabled: false
Lint/DeprecatedOpenSSLConstant:
Enabled: false
Lint/DisjunctiveAssignmentInConstructor:
Enabled: false
Lint/DuplicateElsifCondition:
Enabled: false
Lint/DuplicateRequire:
Enabled: false
Lint/DuplicateRescueException:
Enabled: false
Lint/EmptyConditionalBody:
Enabled: false
Lint/EmptyFile:
Enabled: false
Lint/ErbNewArguments:
Enabled: false
Lint/FloatComparison:
Enabled: false
Lint/HashCompareByIdentity:
Enabled: false
Lint/IdentityComparison:
Enabled: false
Lint/InterpolationCheck:
Enabled: false
Lint/MissingCopEnableDirective:
Enabled: false
Lint/MixedRegexpCaptureTypes:
Enabled: false
Lint/NestedPercentLiteral:
Enabled: false
Lint/NonDeterministicRequireOrder:
Enabled: false
Lint/OrderedMagicComments:
Enabled: false
Lint/OutOfRangeRegexpRef:
Enabled: false
Lint/RaiseException:
Enabled: false
Lint/RedundantCopEnableDirective:
Enabled: false
Lint/RedundantRequireStatement:
Enabled: false
Lint/RedundantSafeNavigation:
Enabled: false
Lint/RedundantWithIndex:
Enabled: false
Lint/RedundantWithObject:
Enabled: false
Lint/RegexpAsCondition:
Enabled: false
Lint/ReturnInVoidContext:
Enabled: false
Lint/SafeNavigationConsistency:
Enabled: false
Lint/SafeNavigationWithEmpty:
Enabled: false
Lint/SelfAssignment:
Enabled: false
Lint/SendWithMixinArgument:
Enabled: false
Lint/ShadowedArgument:
Enabled: false
Lint/StructNewOverride:
Enabled: false
Lint/ToJSON:
Enabled: false
Lint/TopLevelReturnWithArgument:
Enabled: false
Lint/TrailingCommaInAttributeDeclaration:
Enabled: false
Lint/UnreachableLoop:
Enabled: false
Lint/UriEscapeUnescape:
Enabled: false
Lint/UriRegexp:
Enabled: false
Lint/UselessMethodDefinition:
Enabled: false
Lint/UselessTimes:
Enabled: false
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/BlockNesting:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
@@ -115,19 +255,265 @@ Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
Migration/DepartmentName:
Enabled: false
Naming/AccessorMethodName:
Enabled: false
Naming/BlockParameterName:
Enabled: false
Naming/HeredocDelimiterCase:
Enabled: false
Naming/HeredocDelimiterNaming:
Enabled: false
Naming/MemoizedInstanceVariableName:
Enabled: false
Naming/MethodParameterName:
Enabled: false
Naming/RescuedExceptionsVariableName:
Enabled: false
Naming/VariableNumber:
Enabled: false
Performance/BindCall:
Enabled: false
Performance/DeletePrefix:
Enabled: false
Performance/DeleteSuffix:
Enabled: false
Performance/InefficientHashSearch:
Enabled: false
Performance/UnfreezeString:
Enabled: false
Performance/UriDefaultParser:
Enabled: false
RSpec/Be:
Enabled: false
RSpec/Capybara/CurrentPathExpectation:
Enabled: false
RSpec/Capybara/FeatureMethods:
Enabled: false
RSpec/Capybara/VisibilityMatcher:
Enabled: false
RSpec/ContextMethod:
Enabled: false
RSpec/ContextWording:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/EmptyHook:
Enabled: false
RSpec/EmptyLineAfterExample:
Enabled: false
RSpec/EmptyLineAfterExampleGroup:
Enabled: false
RSpec/EmptyLineAfterHook:
Enabled: false
RSpec/ExampleLength:
Enabled: false
RSpec/MessageExpectation:
RSpec/ExampleWithoutDescription:
Enabled: false
RSpec/ExpectChange:
Enabled: false
RSpec/ExpectInHook:
Enabled: false
RSpec/FactoryBot/AttributeDefinedStatically:
Enabled: false
RSpec/FactoryBot/CreateList:
Enabled: false
RSpec/FactoryBot/FactoryClassName:
Enabled: false
RSpec/HooksBeforeExamples:
Enabled: false
RSpec/ImplicitBlockExpectation:
Enabled: false
RSpec/ImplicitSubject:
Enabled: false
RSpec/LeakyConstantDeclaration:
Enabled: false
RSpec/LetBeforeExamples:
Enabled: false
RSpec/MissingExampleGroupArgument:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/MultipleMemoizedHelpers:
Enabled: false
RSpec/MultipleSubjects:
Enabled: false
RSpec/NestedGroups:
Enabled: false
RSpec/PredicateMatcher:
Enabled: false
RSpec/ReceiveCounts:
Enabled: false
RSpec/ReceiveNever:
Enabled: false
RSpec/RepeatedExampleGroupBody:
Enabled: false
RSpec/RepeatedExampleGroupDescription:
Enabled: false
RSpec/RepeatedIncludeExample:
Enabled: false
RSpec/ReturnFromStub:
Enabled: false
RSpec/SharedExamples:
Enabled: false
RSpec/StubbedMock:
Enabled: false
RSpec/UnspecifiedException:
Enabled: false
RSpec/VariableDefinition:
Enabled: false
RSpec/VoidExpect:
Enabled: false
RSpec/Yield:
Enabled: false
Security/Open:
Enabled: false
Style/AccessModifierDeclarations:
Enabled: false
Style/AccessorGrouping:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/BisectedAttrAccessor:
Enabled: false
Style/CaseLikeIf:
Enabled: false
Style/ClassEqualityComparison:
Enabled: false
Style/ColonMethodDefinition:
Enabled: false
Style/CombinableLoops:
Enabled: false
Style/CommentedKeyword:
Enabled: false
Style/Dir:
Enabled: false
Style/DoubleCopDisableDirective:
Enabled: false
Style/EmptyBlockParameter:
Enabled: false
Style/EmptyLambdaParameter:
Enabled: false
Style/Encoding:
Enabled: false
Style/EvalWithLocation:
Enabled: false
Style/ExpandPathArguments:
Enabled: false
Style/ExplicitBlockArgument:
Enabled: false
Style/ExponentialNotation:
Enabled: false
Style/FloatDivision:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
Style/GlobalStdStream:
Enabled: false
Style/HashAsLastArrayItem:
Enabled: false
Style/HashLikeCase:
Enabled: false
Style/HashTransformKeys:
Enabled: false
Style/HashTransformValues:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/KeywordParametersOrder:
Enabled: false
Style/MinMax:
Enabled: false
Style/MixinUsage:
Enabled: false
Style/MultilineWhenThen:
Enabled: false
Style/NegatedUnless:
Enabled: false
Style/NumericPredicate:
Enabled: false
Style/OptionalBooleanParameter:
Enabled: false
Style/OrAssignment:
Enabled: false
Style/RandomWithOffset:
Enabled: false
Style/RedundantAssignment:
Enabled: false
Style/RedundantCondition:
Enabled: false
Style/RedundantConditional:
Enabled: false
Style/RedundantFetchBlock:
Enabled: false
Style/RedundantFileExtensionInRequire:
Enabled: false
Style/RedundantRegexpCharacterClass:
Enabled: false
Style/RedundantRegexpEscape:
Enabled: false
Style/RedundantSelfAssignment:
Enabled: false
Style/RedundantSort:
Enabled: false
Style/RescueStandardError:
Enabled: false
Style/SingleArgumentDig:
Enabled: false
Style/SlicingWithRange:
Enabled: false
Style/SoleNestedConditional:
Enabled: false
Style/StderrPuts:
Enabled: false
Style/StringConcatenation:
Enabled: false
Style/Strip:
Enabled: false
Style/SymbolProc:
Enabled: false
Style/TrailingBodyOnClass:
Enabled: false
Style/TrailingBodyOnMethodDefinition:
Enabled: false
Style/TrailingBodyOnModule:
Enabled: false
Style/TrailingCommaInHashLiteral:
Enabled: false
Style/TrailingMethodEndStatement:
Enabled: false
Style/UnpackFirst:
Enabled: false
Lint/DuplicateBranch:
Enabled: false
Lint/DuplicateRegexpCharacterClassElement:
Enabled: false
Lint/EmptyBlock:
Enabled: false
Lint/EmptyClass:
Enabled: false
Lint/NoReturnInBeginEndBlocks:
Enabled: false
Lint/ToEnumArguments:
Enabled: false
Lint/UnexpectedBlockArity:
Enabled: false
Lint/UnmodifiedReduceAccumulator:
Enabled: false
Performance/CollectionLiteralInLoop:
Enabled: false
Style/ArgumentsForwarding:
Enabled: false
Style/CollectionCompact:
Enabled: false
Style/DocumentDynamicEvalDefinition:
Enabled: false
Style/NegatedIfElseCondition:
Enabled: false
Style/NilLambda:
Enabled: false
Style/RedundantArgument:
Enabled: false
Style/SwapValues:
Enabled: false

View File

135
.sync.yml
View File

@@ -1,129 +1,30 @@
---
".gitlab-ci.yml":
delete: true
".travis.yml":
deploy_to_forge:
enabled: false
branches:
- release
includes:
- bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_deb]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_deb]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
- bundler_args:
dist: trusty
env: PLATFORMS=ub_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_ub]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- bundler_args:
dist: trusty
env: PLATFORMS=ub_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_ub]'
- bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
- bundler_args:
dist: trusty
env: PLATFORMS=el6_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el6]'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- bundler_args:
dist: trusty
env: PLATFORMS=el6_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el6]'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- bundler_args:
dist: trusty
env: PLATFORMS=el7_puppet5
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el7]'
- bundle exec rake 'litmus:install_agent[puppet5]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
- bundler_args:
dist: trusty
env: PLATFORMS=el7_puppet6
rvm: 2.5.1
before_script:
- bundle exec rake 'litmus:provision_list[travis_el7]'
- bundle exec rake 'litmus:install_agent[puppet6]'
- bundle exec rake litmus:install_module
script:
- bundle exec rake litmus:acceptance:parallel
services: docker
sudo: required
stage: acceptance
simplecov: true
notifications:
slack:
secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=
appveyor.yml:
delete: true
Gemfile:
optional:
":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
.gitpod.Dockerfile:
unmanaged: false
.gitpod.yml:
unmanaged: false
.github/workflows/nightly.yml:
unmanaged: false
.github/workflows/pr_test.yml:
unmanaged: false
.github/workflows/auto_release.yml:
unmanaged: false
.github/workflows/spec.yml:
checks: 'syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop'
unmanaged: false
.github/workflows/release.yml:
unmanaged: false
.travis.yml:
delete: true

View File

@@ -1,120 +0,0 @@
---
dist: xenial
language: ruby
cache: bundler
before_install:
- bundle -v
- rm -f Gemfile.lock
- "# 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"
- '[ -z "$RUBYGEMS_VERSION" ] || gem update --system $RUBYGEMS_VERSION'
- gem --version
- bundle -v
script:
- 'SIMPLECOV=yes bundle exec rake $CHECK'
bundler_args: --without system_tests
rvm:
- 2.5.3
stages:
- static
- spec
- acceptance
matrix:
fast_finish: true
include:
-
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
rvm: 2.4.5
stage: spec
-
env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3
stage: spec
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_deb]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet5]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_deb]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet6]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=deb_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_ub]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet5]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=ub_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
before_script: ["bundle exec rake 'litmus:provision_list[travis_ub]'", "bundle exec bolt command run 'apt-get install wget -y' --inventoryfile inventory.yaml --nodes='localhost*'", "bundle exec rake 'litmus:install_agent[puppet6]'", "bundle exec rake litmus:install_module"]
bundler_args:
dist: trusty
env: PLATFORMS=ub_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
-
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=el6_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
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=el6_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
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=el7_puppet5
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
-
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=el7_puppet6
rvm: 2.5.1
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
sudo: required
branches:
only:
- master
- /^v\d/
- release
notifications:
email: false
slack:
secure: Wf7Wz3KC0G9ngPiDcOIpSqcCfdvwKQqZdNH/z3GMcj/OipMAdyFSAVnBvikIl7L1c0LMU9ATEpub+jYzViT7RZywaNyer6SRAfs6MIgAYo4xxF/mOnDHAxXeUYAsBXXL4sS3NX2XWMPa9ZWUeuUQKth8O4STWgAX298QZLyYx5k=

View File

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

View File

@@ -2,6 +2,108 @@
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).
## [v7.2.0](https://github.com/puppetlabs/puppetlabs-java/tree/v7.2.0) (2021-09-20)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v7.1.1...v7.2.0)
### Added
- Enabling Rocky Linux for Install [\#488](https://github.com/puppetlabs/puppetlabs-java/pull/488) ([pmjensen](https://github.com/pmjensen))
### Fixed
- Allow archive 6.x [\#493](https://github.com/puppetlabs/puppetlabs-java/pull/493) ([smortex](https://github.com/smortex))
## [v7.1.1](https://github.com/puppetlabs/puppetlabs-java/tree/v7.1.1) (2021-08-26)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v7.1.0...v7.1.1)
### Fixed
- \(IAC-1741\) Allow stdlib v8.0.0 [\#491](https://github.com/puppetlabs/puppetlabs-java/pull/491) ([david22swan](https://github.com/david22swan))
## [v7.1.0](https://github.com/puppetlabs/puppetlabs-java/tree/v7.1.0) (2021-08-12)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v7.0.2...v7.1.0)
### Added
- pdksync - \(IAC-1709\) - Add Support for Debian 11 [\#489](https://github.com/puppetlabs/puppetlabs-java/pull/489) ([david22swan](https://github.com/david22swan))
## [v7.0.2](https://github.com/puppetlabs/puppetlabs-java/tree/v7.0.2) (2021-04-26)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v7.0.1...v7.0.2)
### Fixed
- add url parameter for adoptopenjdk [\#473](https://github.com/puppetlabs/puppetlabs-java/pull/473) ([cbobinec](https://github.com/cbobinec))
## [v7.0.1](https://github.com/puppetlabs/puppetlabs-java/tree/v7.0.1) (2021-04-19)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v7.0.0...v7.0.1)
### Fixed
- allow v5.x of puppet/archive [\#476](https://github.com/puppetlabs/puppetlabs-java/pull/476) ([bastelfreak](https://github.com/bastelfreak))
## [v7.0.0](https://github.com/puppetlabs/puppetlabs-java/tree/v7.0.0) (2021-03-01)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.5.0...v7.0.0)
### Changed
- pdksync - Remove Puppet 5 from testing and bump minimal version to 6.0.0 [\#463](https://github.com/puppetlabs/puppetlabs-java/pull/463) ([carabasdaniel](https://github.com/carabasdaniel))
### Fixed
- \(MODULES-10935\) - Switch legacy operatingsystem fact to modern kernel one [\#461](https://github.com/puppetlabs/puppetlabs-java/pull/461) ([rjd1](https://github.com/rjd1))
## [v6.5.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.5.0) (2020-12-16)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.4.0...v6.5.0)
### Added
- pdksync - \(feat\) Add support for Puppet 7 [\#454](https://github.com/puppetlabs/puppetlabs-java/pull/454) ([daianamezdrea](https://github.com/daianamezdrea))
## [v6.4.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.4.0) (2020-11-09)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.3.0...v6.4.0)
### Added
- Add support for SAP Java \(sapjvm / sapmachine\) [\#433](https://github.com/puppetlabs/puppetlabs-java/pull/433) ([timdeluxe](https://github.com/timdeluxe))
### Fixed
- \[IAC-1208\] - Add the good links for solving the 404 error and exclude sles [\#443](https://github.com/puppetlabs/puppetlabs-java/pull/443) ([daianamezdrea](https://github.com/daianamezdrea))
- \(IAC-993\) - Removal of inappropriate terminology [\#439](https://github.com/puppetlabs/puppetlabs-java/pull/439) ([david22swan](https://github.com/david22swan))
## [v6.3.0](https://github.com/puppetlabs/puppetlabs-java/tree/v6.3.0) (2020-05-27)
[Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.2.0...v6.3.0)
### Added
- \(MODULES-10681\) Add option to manage symlink to java::adopt [\#429](https://github.com/puppetlabs/puppetlabs-java/pull/429) ([fraenki](https://github.com/fraenki))
- \(IAC-746\) - Add ubuntu 20.04 support [\#428](https://github.com/puppetlabs/puppetlabs-java/pull/428) ([david22swan](https://github.com/david22swan))
## [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)
@@ -417,4 +519,4 @@ Jeff McCune <jeff@puppetlabs.com>
[2.2.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.1.1...2.2.0
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*

View File

@@ -1,271 +1,3 @@
# Contributing to Puppet modules
So you want to contribute to a Puppet module: Great! Below are some instructions to get you started doing
that very thing while setting expectations around code quality as well as a few tips for making the
process as easy as possible.
### Table of Contents
1. [Getting Started](#getting-started)
1. [Commit Checklist](#commit-checklist)
1. [Submission](#submission)
1. [More about commits](#more-about-commits)
1. [Testing](#testing)
- [Running Tests](#running-tests)
- [Writing Tests](#writing-tests)
1. [Get Help](#get-help)
## Getting Started
- Fork the module repository on GitHub and clone to your workspace
- Make your changes!
## Commit Checklist
### The Basics
- [x] my commit is a single logical unit of work
- [x] I have checked for unnecessary whitespace with "git diff --check"
- [x] my commit does not include commented out code or unneeded files
### The Content
- [x] my commit includes tests for the bug I fixed or feature I added
- [x] my commit includes appropriate documentation changes if it is introducing a new feature or changing existing functionality
- [x] my code passes existing test suites
### The Commit Message
- [x] the first line of my commit message includes:
- [x] an issue number (if applicable), e.g. "(MODULES-xxxx) This is the first line"
- [x] a short description (50 characters is the soft limit, excluding ticket number(s))
- [x] the body of my commit message:
- [x] is meaningful
- [x] uses the imperative, present tense: "change", not "changed" or "changes"
- [x] includes motivation for the change, and contrasts its implementation with the previous behavior
## Submission
### Pre-requisites
- Make sure you have a [GitHub account](https://github.com/join)
- [Create a ticket](https://tickets.puppet.com/secure/CreateIssue!default.jspa), or [watch the ticket](https://tickets.puppet.com/browse/) you are patching for.
### Push and PR
- Push your changes to your fork
- [Open a Pull Request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) against the repository in the puppetlabs organization
## More about commits
1. Make separate commits for logically separate changes.
Please break your commits down into logically consistent units
which include new or changed tests relevant to the rest of the
change. The goal of doing this is to make the diff easier to
read for whoever is reviewing your code. In general, the easier
your diff is to read, the more likely someone will be happy to
review it and get it into the code base.
If you are going to refactor a piece of code, please do so as a
separate commit from your feature or bug fix changes.
We also really appreciate changes that include tests to make
sure the bug is not re-introduced, and that the feature is not
accidentally broken.
Describe the technical detail of the change(s). If your
description starts to get too long, that is a good sign that you
probably need to split up your commit into more finely grained
pieces.
Commits which plainly describe the things which help
reviewers check the patch and future developers understand the
code are much more likely to be merged in with a minimum of
bike-shedding or requested changes. Ideally, the commit message
would include information, and be in a form suitable for
inclusion in the release notes for the version of Puppet that
includes them.
Please also check that you are not introducing any trailing
whitespace or other "whitespace errors". You can do this by
running "git diff --check" on your changes before you commit.
2. Sending your patches
To submit your changes via a GitHub pull request, we _highly_
recommend that you have them on a topic branch, instead of
directly on "master".
It makes things much easier to keep track of, especially if
you decide to work on another thing before your first change
is merged in.
GitHub has some pretty good
[general documentation](http://help.github.com/) on using
their site. They also have documentation on
[creating pull requests](https://help.github.com/articles/creating-a-pull-request-from-a-fork/).
In general, after pushing your topic branch up to your
repository on GitHub, you can switch to the branch in the
GitHub UI and click "Pull Request" towards the top of the page
in order to open a pull request.
3. Update the related JIRA issue.
If there is a JIRA issue associated with the change you
submitted, then you should update the ticket to include the
location of your branch, along with any other commentary you
may wish to make.
# Testing
## Getting Started
Our Puppet modules provide [`Gemfile`](./Gemfile)s, which can tell a Ruby package manager such as [bundler](http://bundler.io/) what Ruby packages,
or Gems, are required to build, develop, and test this software.
Please make sure you have [bundler installed](http://bundler.io/#getting-started) on your system, and then use it to
install all dependencies needed for this project in the project root by running
```shell
% bundle install --path .bundle/gems
Fetching gem metadata from https://rubygems.org/........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.1.0)
Using builder (3.2.2)
-- 8><-- many more --><8 --
Using rspec-system-puppet (2.2.0)
Using serverspec (0.6.3)
Using rspec-system-serverspec (1.0.0)
Using bundler (1.3.5)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
```
NOTE: some systems may require you to run this command with sudo.
If you already have those gems installed, make sure they are up-to-date:
```shell
% bundle update
```
## Running Tests
With all dependencies in place and up-to-date, run the tests:
### Unit Tests
```shell
% bundle exec rake spec
```
This executes all the [rspec tests](http://rspec-puppet.com/) in the directories defined [here](https://github.com/puppetlabs/puppetlabs_spec_helper/blob/699d9fbca1d2489bff1736bb254bb7b7edb32c74/lib/puppetlabs_spec_helper/rake_tasks.rb#L17) and so on.
rspec tests may have the same kind of dependencies as the module they are testing. Although the module defines these dependencies in its [metadata.json](./metadata.json),
rspec tests define them in [.fixtures.yml](./fixtures.yml).
### Acceptance Tests
Some Puppet modules also come with acceptance tests, which use [beaker][]. These tests spin up a virtual machine under
[VirtualBox](https://www.virtualbox.org/), controlled with [Vagrant](http://www.vagrantup.com/), to simulate scripted test
scenarios. In order to run these, you need both Virtualbox and Vagrant installed on your system.
Run the tests by issuing the following command
```shell
% bundle exec rake spec_clean
% bundle exec rspec spec/acceptance
```
This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml),
install Puppet, copy this module, and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb)
and then run all the tests under [spec/acceptance](./spec/acceptance).
## Writing Tests
### Unit Tests
When writing unit tests for Puppet, [rspec-puppet][] is your best friend. It provides tons of helper methods for testing your manifests against a
catalog (e.g. contain_file, contain_package, with_params, etc). It would be ridiculous to try and top rspec-puppet's [documentation][rspec-puppet_docs]
but here's a tiny sample:
Sample manifest:
```puppet
file { "a test file":
ensure => present,
path => "/etc/sample",
}
```
Sample test:
```ruby
it 'does a thing' do
expect(subject).to contain_file("a test file").with({:path => "/etc/sample"})
end
```
### Acceptance Tests
Writing acceptance tests for Puppet involves [beaker][] and its cousin [beaker-rspec][]. A common pattern for acceptance tests is to create a test manifest, apply it
twice to check for idempotency or errors, then run expectations.
```ruby
it 'does an end-to-end thing' do
pp = <<-EOF
file { 'a test file':
ensure => present,
path => "/etc/sample",
content => "test string",
}
apply_manifest(pp, :catch_failures => true)
apply_manifest(pp, :catch_changes => true)
end
describe file("/etc/sample") do
it { is_expected.to contain "test string" }
end
```
# If you have commit access to the repository
Even if you have commit access to the repository, you still need to go through the process above, and have someone else review and merge
in your changes. The rule is that **all changes must be reviewed by a project developer that did not write the code to ensure that
all changes go through a code review process.**
The record of someone performing the merge is the record that they performed the code review. Again, this should be someone other than the author of the topic branch.
# Get Help
### On the web
* [Puppet help messageboard](http://puppet.com/community/get-help)
* [Writing tests](https://docs.puppet.com/guides/module_guides/bgtm.html#step-three-module-testing)
* [General GitHub documentation](http://help.github.com/)
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
### On chat
* Slack (slack.puppet.com) #forge-modules, #puppet-dev, #windows, #voxpupuli
* IRC (freenode) #puppet-dev, #voxpupuli
[rspec-puppet]: http://rspec-puppet.com/
[rspec-puppet_docs]: http://rspec-puppet.com/documentation/
[beaker]: https://github.com/puppetlabs/beaker
[beaker-rspec]: https://github.com/puppetlabs/beaker-rspec
Check out our [Contributing to Supported Modules Blog Post](https://puppetlabs.github.io/iac/docs/contributing_to_a_module.html) to find all the information that you will need.

30
Gemfile
View File

@@ -17,18 +17,18 @@ ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.')
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", 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", '= 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.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-posix-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.3', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 0.3', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 0.3', 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 "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 2.8.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "puppet-module-posix-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "github_changelog_generator", require: false
end
group :system_tests do
gem "puppet-module-posix-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-win-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:mswin, :mingw, :x64_mingw]
end
puppet_version = ENV['PUPPET_GEM_VERSION']
@@ -45,16 +45,6 @@ gems['puppet'] = location_for(puppet_version)
gems['facter'] = location_for(facter_version) if facter_version
gems['hiera'] = location_for(hiera_version) if hiera_version
if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)}
# If we're using a Puppet gem on Windows which handles its own win32-xxx gem
# dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
gems['win32-dir'] = ['<= 0.4.9', require: false]
gems['win32-eventlog'] = ['<= 0.6.5', require: false]
gems['win32-process'] = ['<= 0.7.5', require: false]
gems['win32-security'] = ['<= 0.2.5', require: false]
gems['win32-service'] = ['0.8.8', require: false]
end
gems.each do |gem_name, gem_params|
gem gem_name, *gem_params
end

128
README.md
View File

@@ -55,9 +55,113 @@ java::download { 'jdk8' :
}
```
## AdoptOpenJDK
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
java::adopt { 'jdk8' :
ensure => 'present',
version => '8',
java => 'jdk',
}
java::adopt { 'jdk11' :
ensure => 'present',
version => '11',
java => 'jdk',
}
```
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',
}
```
## SAP Java (sapjvm / sapmachine)
SAP also offers JVM distributions. They are mostly required for their SAP products. In earlier versions it is called "sapjvm", in newer versions they call it "sapmachine".
The defined type `java::sap` installs one or more versions of sapjvm (if version 7 or 8) or sapmachine (if version > 8) Java. `java::sap` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
By using this defined type with versions 7 or 8 you agree with the EULA presented at https://tools.hana.ondemand.com/developer-license-3_1.txt!
```puppet
java::sap { 'sapjvm8' :
ensure => 'present',
version => '8',
java => 'jdk',
}
java::sap { 'sapmachine11' :
ensure => 'present',
version => '11',
java => 'jdk',
}
```
To install a specific release of a SAP Java version, e.g. sapjvm 8.1.063, provide parameter `version_full`:
```puppet
java::sap { 'jdk8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
}
```
To install SAP Java to a non-default basedir (defaults: /usr/lib/jvm for Debian; /usr/java for RedHat):
```puppet
java::adopt { 'sapjvm8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
basedir => '/custom/java',
}
```
To ensure that a custom basedir is a directory before SAP Java is installed (note: manage separately for custom ownership or perms):
```puppet
java::adopt { 'sapjvm8' :
ensure => 'present',
version_full => '8.1.063',
java => 'jdk',
manage_basedir => true,
basedir => '/custom/java',
}
```
## Reference
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.
For information on the classes and types, see the [REFERENCE.md](https://github.com/puppetlabs/puppetlabs-java/blob/main/REFERENCE.md). For information on the facts, see below.
### Facts
@@ -73,7 +177,7 @@ The java module includes a few facts to describe the version of Java installed o
## Limitations
For an extensive list of supported operating systems, see [metadata.json](https://github.com/puppetlabs/puppetlabs-java/blob/master/metadata.json)
For an extensive list of supported operating systems, see [metadata.json](https://github.com/puppetlabs/puppetlabs-java/blob/main/metadata.json)
This module cannot guarantee installation of Java versions that are not available on platform repositories.
@@ -90,7 +194,7 @@ OpenJDK is supported on:
* Oracle Linux 6, 7
* Scientific Linux 6
* Debian 8, 9
* Ubuntu 14.04, 16.04, 18.04
* Ubuntu 14.04, 16.04, 18.04, 20.04
* Solaris 11
* SLES 11, 12
@@ -104,6 +208,24 @@ Oracle Java is supported on:
* CentOS 7
* Red Hat Enterprise Linux (RHEL) 7
AdoptOpenJDK Java is supported on:
* CentOS
* Red Hat Enterprise Linux (RHEL)
* Amazon Linux
* Debian
SAP Java 7 and 8 (=sapjvm) are supported (by SAP) on:
* SLES 12, 15
* Oracle Linux 7, 8
* Red Hat Enterprise Linux (RHEL) 7, 8
(however installations on other distributions mostly also work well)
For SAP Java > 8 (=sapmachine) please refer to the OpenJDK list as it is based on OpenJDK and has no special requirements.
### 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.

View File

@@ -1,36 +1,47 @@
# Reference
<!-- DO NOT EDIT: This document was generated by Puppet Strings -->
## Table of Contents
**Classes**
### Classes
_Public Classes_
#### Public Classes
* [`java`](#java): This module manages the Java runtime package
_Private Classes_
#### Private Classes
* `java::config`:
* `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**
### Defined types
* [`java::adopt`](#javaadopt): Install one or more versions of AdoptOpenJDK Java.
* [`java::download`](#javadownload): Installs Java from a url location.
* [`java::sap`](#javasap): Install one or more versions of SAPJVM or Sapmachine
## Classes
### java
### <a name="java"></a>`java`
This module manages the Java runtime package
#### Parameters
The following parameters are available in the `java` class.
The following parameters are available in the `java` class:
##### `distribution`
* [`distribution`](#distribution)
* [`version`](#version)
* [`package`](#package)
* [`package_options`](#package_options)
* [`java_alternative`](#java_alternative)
* [`java_alternative_path`](#java_alternative_path)
* [`java_home`](#java_home)
##### <a name="distribution"></a>`distribution`
Data type: `String`
@@ -38,36 +49,36 @@ 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'
Default value: `'jdk'`
##### `version`
##### <a name="version"></a>`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'
Default value: `'present'`
##### `package`
##### <a name="package"></a>`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`
Default value: ``undef``
##### `package_options`
##### <a name="package_options"></a>`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`
Default value: ``undef``
##### `java_alternative`
##### <a name="java_alternative"></a>`java_alternative`
Data type: `Optional[String]`
@@ -77,9 +88,9 @@ 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`
Default value: ``undef``
##### `java_alternative_path`
##### <a name="java_alternative_path"></a>`java_alternative_path`
Data type: `Optional[String]`
@@ -88,126 +99,124 @@ 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`
Default value: ``undef``
##### `java_home`
##### <a name="java_home"></a>`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`
Default value: ``undef``
## Defined types
### java::download
### <a name="javaadopt"></a>`java::adopt`
Defined Type java::download
Defined Type java::adopt
#### Parameters
The following parameters are available in the `java::download` defined type.
The following parameters are available in the `java::adopt` defined type:
##### `ensure`
* [`ensure`](#ensure)
* [`version`](#version)
* [`version_major`](#version_major)
* [`version_minor`](#version_minor)
* [`java`](#java)
* [`proxy_server`](#proxy_server)
* [`proxy_type`](#proxy_type)
* [`url`](#url)
* [`basedir`](#basedir)
* [`manage_basedir`](#manage_basedir)
* [`package_type`](#package_type)
* [`manage_symlink`](#manage_symlink)
* [`symlink_name`](#symlink_name)
##### <a name="ensure"></a>`ensure`
Data type: `Any`
Install or remove the package.
Default value: 'present'
Default value: `'present'`
##### `version`
##### <a name="version"></a>`version`
Data type: `Any`
Version of Java to install, e.g. '7' or '8'. Default values for major and minor versions will be used.
Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
Default value: '8'
Default value: `'8'`
##### `version_major`
##### <a name="version_major"></a>`version_major`
Data type: `Any`
Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
Default value: `undef`
Default value: ``undef``
##### `version_minor`
##### <a name="version_minor"></a>`version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). Must be used together with version_major.
Default value: `undef`
Default value: ``undef``
##### `java_se`
##### <a name="java"></a>`java`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: 'jdk'
Default value: `'jdk'`
##### `proxy_server`
##### <a name="proxy_server"></a>`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`
Default value: ``undef``
##### `proxy_type`
##### <a name="proxy_type"></a>`proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef`
Default value: ``undef``
##### `url`
##### <a name="url"></a>`url`
Data type: `Any`
Full URL
Default value: `undef`
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`
##### <a name="basedir"></a>`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`
Default value: ``undef``
##### `manage_basedir`
##### <a name="manage_basedir"></a>`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`
Default value: ``true``
##### `package_type`
##### <a name="package_type"></a>`package_type`
Data type: `Any`
@@ -215,21 +224,270 @@ 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`
Default value: ``undef``
##### `manage_symlink`
##### <a name="manage_symlink"></a>`manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: `false`
Default value: ``false``
##### `symlink_name`
##### <a name="symlink_name"></a>`symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: `undef`
Default value: ``undef``
### <a name="javadownload"></a>`java::download`
Defined Type java::download
#### Parameters
The following parameters are available in the `java::download` defined type:
* [`ensure`](#ensure)
* [`version`](#version)
* [`version_major`](#version_major)
* [`version_minor`](#version_minor)
* [`java_se`](#java_se)
* [`proxy_server`](#proxy_server)
* [`proxy_type`](#proxy_type)
* [`url`](#url)
* [`jce`](#jce)
* [`jce_url`](#jce_url)
* [`basedir`](#basedir)
* [`manage_basedir`](#manage_basedir)
* [`package_type`](#package_type)
* [`manage_symlink`](#manage_symlink)
* [`symlink_name`](#symlink_name)
##### <a name="ensure"></a>`ensure`
Data type: `Any`
Install or remove the package.
Default value: `'present'`
##### <a name="version"></a>`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'`
##### <a name="version_major"></a>`version_major`
Data type: `Any`
Major version which should be installed, e.g. '8u101'. Must be used together with version_minor.
Default value: ``undef``
##### <a name="version_minor"></a>`version_minor`
Data type: `Any`
Minor version which should be installed, e.g. 'b12'. Must be used together with version_major.
Default value: ``undef``
##### <a name="java_se"></a>`java_se`
Data type: `Any`
Type of Java Standard Edition to install, jdk or jre.
Default value: `'jdk'`
##### <a name="proxy_server"></a>`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``
##### <a name="proxy_type"></a>`proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: ``undef``
##### <a name="url"></a>`url`
Data type: `Any`
Full URL
Default value: ``undef``
##### <a name="jce"></a>`jce`
Data type: `Any`
Install Oracles Java Cryptographic Extensions into the JRE or JDK
Default value: ``false``
##### <a name="jce_url"></a>`jce_url`
Data type: `Any`
Full URL to the jce zip file
Default value: ``undef``
##### <a name="basedir"></a>`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``
##### <a name="manage_basedir"></a>`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``
##### <a name="package_type"></a>`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``
##### <a name="manage_symlink"></a>`manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: ``false``
##### <a name="symlink_name"></a>`symlink_name`
Data type: `Any`
The name for the optional symlink in the installation directory.
Default value: ``undef``
### <a name="javasap"></a>`java::sap`
Defined Type java::sap
#### Parameters
The following parameters are available in the `java::sap` defined type:
* [`ensure`](#ensure)
* [`version`](#version)
* [`version_full`](#version_full)
* [`java`](#java)
* [`proxy_server`](#proxy_server)
* [`proxy_type`](#proxy_type)
* [`basedir`](#basedir)
* [`manage_basedir`](#manage_basedir)
* [`manage_symlink`](#manage_symlink)
* [`symlink_name`](#symlink_name)
##### <a name="ensure"></a>`ensure`
Data type: `Any`
Install or remove the package.
Default value: `'present'`
##### <a name="version"></a>`version`
Data type: `Any`
Version of Java to install, e.g. '8' or '9'. Default values for full versions will be used.
Default value: `'8'`
##### <a name="version_full"></a>`version_full`
Data type: `Any`
Major version which should be installed, e.g. '8.1.063' or '11.0.7'. If used, "version" parameter is ignored.
Default value: ``undef``
##### <a name="java"></a>`java`
Data type: `Any`
Type of Java Edition to install, jdk or jre.
Default value: `'jdk'`
##### <a name="proxy_server"></a>`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``
##### <a name="proxy_type"></a>`proxy_type`
Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive)
Default value: ``undef``
##### <a name="basedir"></a>`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``
##### <a name="manage_basedir"></a>`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: ``true``
##### <a name="manage_symlink"></a>`manage_symlink`
Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false.
Default value: ``false``
##### <a name="symlink_name"></a>`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 'bundler'
require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax'
@@ -50,7 +53,7 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?
config.header = "# Change log\n\nAll 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)."
config.add_pr_wo_labels = true
config.issues = false
config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM"
config.merge_prefix = "### UNCATEGORIZED PRS; LABEL THEM ON GITHUB"
config.configure_sections = {
"Changed" => {
"prefix" => "### Changed",
@@ -58,11 +61,11 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?
},
"Added" => {
"prefix" => "### Added",
"labels" => ["feature", "enhancement"],
"labels" => ["enhancement", "feature"],
},
"Fixed" => {
"prefix" => "### Fixed",
"labels" => ["bugfix"],
"labels" => ["bug", "documentation", "bugfix"],
},
}
end
@@ -70,16 +73,15 @@ else
desc 'Generate a Changelog from GitHub'
task :changelog do
raise <<EOM
The changelog tasks depends on unreleased features of the github_changelog_generator gem.
The changelog tasks depends on recent features of the github_changelog_generator gem.
Please manually add it to your .sync.yml for now, and run `pdk update`:
---
Gemfile:
optional:
':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')"
version: '~> 1.15'
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')"
EOM
end
end

1
data/common.yaml Normal file
View File

@@ -0,0 +1 @@
--- {}

View File

@@ -1,25 +0,0 @@
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':
package => 'jdk-8u25-linux-x64',
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',
}

21
hiera.yaml Normal file
View File

@@ -0,0 +1,21 @@
---
version: 5
defaults: # Used for any hierarchy level that omits these keys.
datadir: data # This path is relative to hiera.yaml's directory.
data_hash: yaml_data # Use the built-in YAML backend.
hierarchy:
- name: "osfamily/major release"
paths:
# Used to distinguish between Debian and Ubuntu
- "os/%{facts.os.name}/%{facts.os.release.major}.yaml"
- "os/%{facts.os.family}/%{facts.os.release.major}.yaml"
# Used for Solaris
- "os/%{facts.os.family}/%{facts.kernelrelease}.yaml"
- name: "osfamily"
paths:
- "os/%{facts.os.name}.yaml"
- "os/%{facts.os.family}.yaml"
- name: 'common'
path: 'common.yaml'

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_default_home
#
# Purpose: get absolute path of java system home
@@ -19,7 +21,7 @@ Facter.add(:java_default_home) do
nil
else
java_path = File.realpath(java_bin)
java_default_home = if java_path =~ %r{/jre/}
java_default_home = if %r{/jre/}.match?(java_path)
File.dirname(File.dirname(File.dirname(java_path)))
else
File.dirname(File.dirname(java_path))

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_libjvm_path
#
# Purpose: get path to libjvm.so
@@ -7,6 +9,7 @@
#
# Caveats:
# Needs to list files recursively. Returns the first match
# Needs working java_major_version fact
#
# Notes:
# None
@@ -14,8 +17,12 @@ Facter.add(:java_libjvm_path) do
confine kernel: ['Linux', 'OpenBSD']
setcode do
java_default_home = Facter.value(:java_default_home)
if java_default_home
java_libjvm_file = Dir.glob("#{java_default_home}/**/lib/**/libjvm.so")
java_major_version = Facter.value(:java_major_version)
unless java_major_version.nil?
java_libjvm_file = if java_major_version.to_i >= 11
Dir.glob("#{java_default_home}/lib/**/libjvm.so")
else
Dir.glob("#{java_default_home}/jre/lib/**/libjvm.so")
end
if java_libjvm_file.nil? || java_libjvm_file.empty?
nil
@@ -23,4 +30,5 @@ Facter.add(:java_libjvm_path) do
File.dirname(java_libjvm_file[0])
end
end
end
end

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_major_version
#
# Purpose: get Java's major version
@@ -17,12 +19,10 @@ Facter.add(:java_major_version) do
setcode do
java_version = Facter.value(:java_version)
unless java_version.nil?
# First part > 1, use the first part as major version
java_version_first_number = java_version.strip.split('.')[0]
java_major_version = if java_version_first_number.to_i > 1
java_version_first_number
else
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

View File

@@ -1,9 +1,11 @@
# frozen_string_literal: true
# Fact: java_patch_level
#
# Purpose: get Java's patch level
#
# 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:
# none
@@ -15,12 +17,10 @@ Facter.add(:java_patch_level) do
setcode do
java_version = Facter.value(:java_version)
unless java_version.nil?
# First part > 1, use . as seperator to get patch level
java_version_first_number = java_version.strip.split('.')[0]
java_patch_level = if java_version_first_number.to_i > 1
java_version.strip.split('.')[2]
if java_version.strip[0..1] == '1.'
java_patch_level = java_version.strip.split('_')[1] unless java_version.nil?
else
java_version.strip.split('_')[1]
java_patch_level = java_version.strip.split('.')[2] unless java_version.nil?
end
end
end

View File

@@ -1,10 +1,12 @@
# frozen_string_literal: true
# Fact: java_version
#
# Purpose: get full java version string
#
# Resolution:
# 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:
# none
@@ -21,11 +23,10 @@ Facter.add(:java_version) do
# Additionally, facter versions prior to 2.0.1 only support
# positive matches, so this needs to be done manually in setcode.
setcode do
unless ['darwin'].include? Facter.value(:operatingsystem).downcase
unless ['darwin'].include? Facter.value(:kernel).downcase
version = nil
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
version
end
@@ -33,12 +34,12 @@ Facter.add(:java_version) do
end
Facter.add(:java_version) do
confine operatingsystem: 'Darwin'
confine kernel: 'Darwin'
has_weight 100
setcode do
unless %r{Unable to find any JVMs matching version} =~ Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1')
unless Facter::Util::Resolution.exec('/usr/libexec/java_home --failfast 2>&1').include?('Unable to find any JVMs matching version')
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
end
end

View File

@@ -1,26 +0,0 @@
---
# This is the project-specific configuration file for setting up
# fast_gettext for your project.
gettext:
# This is used for the name of the .pot and .po files; they will be
# called <project_name>.pot?
project_name: puppetlabs-java
# This is used in comments in the .pot and .po files to indicate what
# project the files belong to and should bea little more desctiptive than
# <project_name>
package_name: puppetlabs-java
# The locale that the default messages in the .pot file are in
default_locale: en
# The email used for sending bug reports.
bugs_address: docs@puppet.com
# The holder of the copyright.
copyright_holder: Puppet, Inc.
# This determines which comments in code should be eligible for translation.
# Any comments that start with this string will be externalized. (Leave
# empty to include all.)
comments_tag: TRANSLATOR
# Patterns for +Dir.glob+ used to find all files that might contain
# translatable content, relative to the project root directory
source_files:
- './lib/**/*.rb'

324
manifests/adopt.pp Normal file
View File

@@ -0,0 +1,324 @@
# Defined Type java::adopt
#
# @summary
# Install one or more versions of AdoptOpenJDK Java.
#
# @param ensure
# Install or remove the package.
#
# @param version
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
#
# @param version_major
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
#
# @param 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.
#
# @param java
# 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 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::adopt (
$ensure = 'present',
$version = '8',
$version_major = undef,
$version_minor = undef,
$java = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$url = undef,
$basedir = undef,
$manage_basedir = true,
$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 !~ /(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-'
}
# if complete URL is provided, use this value for source in archive resource
if $url {
$source = $url
}
else {
$source = "https://github.com/AdoptOpenJDK/openjdk${_version}-binaries/releases/download/${download_folder_prefix}${release_major}${spacer}${release_minor}/${package_name}"
notice ("Default source url : ${source}")
}
# 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
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Exec["Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}"],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

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

View File

@@ -72,7 +72,7 @@ define java::download(
) {
# archive module is used to download the java package
include ::archive
include archive
# validate java Standard Edition to download
if $java_se !~ /(jre|jdk)/ {
@@ -183,7 +183,7 @@ define java::download(
# set java architecture nomenclature
$os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
undef => $facts['os']['architecture'],
default => $facts['os']['architecture']
}
@@ -284,14 +284,14 @@ define java::download(
path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin',
command => $install_command,
creates => $creates_path,
require => $install_requires
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}"]
require => Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"],
}
}
@@ -312,7 +312,7 @@ define java::download(
require => [
Package['unzip'],
Exec["Install Oracle java_se ${java_se} ${version} ${release_major} ${release_minor}"]
]
],
}
}
}

View File

@@ -101,7 +101,7 @@ class java(
$use_java_package_name == undef or $use_java_alternative == undef or
$use_java_alternative_path == undef or $use_java_home == undef
) and (
! has_key($::java::params::java, $distribution)
! has_key($java::params::java, $distribution)
)) {
fail("Java distribution ${distribution} is not supported. Missing default values.")
}
@@ -111,7 +111,7 @@ class java(
default => '--jre'
}
if $::osfamily == 'Debian' {
if $facts['os']['family'] == 'Debian' {
# Needed for update-java-alternatives
package { 'java-common':
ensure => present,

View File

@@ -6,23 +6,23 @@
# @api private
class java::params {
case $::osfamily {
case $facts['os']['family'] {
'RedHat': {
case $::operatingsystem {
'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': {
if (versioncmp($::operatingsystemrelease, '5.0') < 0) {
case $facts['os']['name'] {
'Rocky', 'RedHat', 'CentOS', 'OracleLinux', 'Scientific', 'OEL', 'SLC', 'CloudLinux': {
if (versioncmp($facts['os']['release']['full'], '5.0') < 0) {
$jdk_package = 'java-1.6.0-sun-devel'
$jre_package = 'java-1.6.0-sun'
$java_home = '/usr/lib/jvm/java-1.6.0-sun/jre/'
}
# 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'
$jre_package = 'java-1.6.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.6.0/'
}
# 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'
$jre_package = 'java-1.7.0-openjdk'
$java_home = '/usr/lib/jvm/java-1.7.0/'
@@ -34,23 +34,23 @@ class java::params {
}
}
'Fedora': {
if (versioncmp($::operatingsystemrelease, '21') < 0) {
if (versioncmp($facts['os']['release']['full'], '21') < 0) {
$jdk_package = 'java-1.7.0-openjdk-devel'
$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 {
$jdk_package = 'java-1.8.0-openjdk-devel'
$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': {
$jdk_package = 'java-1.7.0-openjdk-devel'
$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 = {
'jdk' => {
@@ -64,16 +64,16 @@ class java::params {
}
}
'Debian': {
$oracle_architecture = $::architecture ? {
$oracle_architecture = $facts['os']['architecture'] ? {
'amd64' => 'x64',
default => $::architecture
default => $facts['os']['architecture']
}
$openjdk_architecture = $::architecture ? {
$openjdk_architecture = $facts['os']['architecture'] ? {
'aarch64' => 'arm64',
'armv7l' => 'armhf',
default => $::architecture
default => $facts['os']['architecture']
}
case $::operatingsystemmajrelease {
case $facts['os']['release']['major'] {
'7', '8', '14.04': {
$java = {
'jdk' => {
@@ -84,7 +84,7 @@ class java::params {
},
'jre' => {
'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",
'java_home' => "/usr/lib/jvm/java-1.7.0-openjdk-${openjdk_architecture}/",
},
@@ -139,10 +139,10 @@ class java::params {
'alternative' => "java-1.8.0-openjdk-${openjdk_architecture}",
'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}/",
},
}
}
}
'10', '18.04', '18.10', '19.04', '19.10': {
'10', '11', '18.04', '18.10', '19.04', '19.10', '20.04': {
$java = {
'jdk' => {
'package' => 'openjdk-11-jdk',
@@ -155,10 +155,10 @@ class java::params {
'alternative' => "java-1.11.0-openjdk-${openjdk_architecture}",
'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}/",
},
}
}
}
default: { fail("unsupported release ${::operatingsystemmajrelease}") }
default: { fail("unsupported release ${facts['os']['release']['major']}") }
}
}
'OpenBSD': {
@@ -198,17 +198,17 @@ class java::params {
}
}
'Suse': {
case $::operatingsystem {
case $facts['os']['name'] {
'SLES': {
if (versioncmp($::operatingsystemrelease, '12.1') >= 0) {
if (versioncmp($facts['os']['release']['full'], '12.1') >= 0) {
$jdk_package = 'java-1_8_0-openjdk-devel'
$jre_package = 'java-1_8_0-openjdk'
$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'
$jre_package = 'java-1_7_0-openjdk'
$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'
$jre_package = 'java-1_7_1-ibm'
$java_home = '/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/'
@@ -255,6 +255,6 @@ class java::params {
},
}
}
default: { fail("unsupported platform ${::osfamily}") }
default: { fail("unsupported platform ${facts['os']['family']}") }
}
}

227
manifests/sap.pp Normal file
View File

@@ -0,0 +1,227 @@
# Defined Type java::sap
#
# @summary
# Install one or more versions of SAPJVM or Sapmachine
#
# @param ensure
# Install or remove the package.
#
# @param version
# Version of Java to install, e.g. '8' or '9'. Default values for full versions will be used.
#
# @param version_full
# Major version which should be installed, e.g. '8.1.063' or '11.0.7'. If used, "version" parameter is ignored.
#
# @param java
# Type of Java 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 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 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::sap (
$ensure = 'present',
$version = '8',
$version_full = undef,
$java = 'jdk',
$proxy_server = undef,
$proxy_type = undef,
$basedir = undef,
$manage_basedir = true,
$manage_symlink = false,
$symlink_name = undef,
) {
# archive module is used to download the java package
include ::archive
# validate java edition to download
if $java !~ /(jre|jdk)/ {
fail('java must be either jre or jdk.')
}
# determine version and installation path
if $version_full {
$_version_array = $version_full.scanf('%i')
$_version_int = $_version_array[0]
$_version_full = $version_full
} else {
$_version = $version
$_version_int = Numeric($_version)
# use default versions if full version parameter is not provided
case $version {
'7' : {
$_version_full = '7.1.072'
if ($java != 'jdk') {
fail('java parameter is not jdk. jre is not supported on version 7')
}
}
'8' : {
$_version_full = '8.1.065'
if ($java != 'jdk') {
fail('java parameter is not jdk. jre is not supported on version 8')
}
}
'11' : {
$_version_full = '11.0.7'
}
'14' : {
$_version_full = '14.0.1'
}
default : {
fail("${version} not yet supported by module")
}
}
}
# extracted folders look like this:
# sapjvm_8
# sapmachine-jdk-11.0.7
if ($_version_int == 7 or $_version_int == 8) {
$_creates_folder = "sapjvm_${_version_int}"
} else {
$_creates_folder = "sapmachine-${java}-${_version_full}"
}
# determine destination directory based on OS
case $facts['kernel'] {
'Linux' : {
case $facts['os']['family'] {
'RedHat', 'Amazon' : {
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/java'
}
}
'Debian' : {
if $basedir {
$_basedir = $basedir
} else {
$_basedir = '/usr/lib/jvm'
}
}
default : {
fail ("unsupported os family ${$facts['os']['name']}") }
}
$creates_path = "${_basedir}/${_creates_folder}"
}
default : {
fail ( "unsupported platform ${$facts['kernel']}" ) }
}
$_os_architecture = $facts['os']['architecture'] ? {
undef => $facts['architecture'],
default => $facts['os']['architecture']
}
if ($_os_architecture != 'x86_64' and $_os_architecture != 'amd64') {
fail ("unsupported platform ${_os_architecture}")
}
# download links look like this (examples):
# https://tools.hana.ondemand.com/additional/sapjvm-8.1.065-linux-x64.zip
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz
# https://github.com/SAP/SapMachine/releases/download/sapmachine-11.0.7/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz
# https://github.com/SAP/SapMachine/releases/download/sapmachine-14.0.1/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz
# cookie is currently at version 3.1, but may be changed one day. It is only required for download at SAP.
# by using this module you agree with the EULA presented at tools.hana.ondemand.com download page!
# Github does not require it
if ( $_version_int == 7 or $_version_int == 8 ) {
# sapjvm download
$archive_filename = "sapjvm-${_version_full}-linux-x64.zip"
$source = "https://tools.hana.ondemand.com/additional/${archive_filename}"
$cookie = 'eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt'
if (!defined(Package['unzip'])) {
package { 'unzip':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
} else {
$archive_filename = "sapmachine-${java}-${_version_full}_linux-x64_bin.tar.gz"
$source = "https://github.com/SAP/SapMachine/releases/download/sapmachine-${_version_full}/${archive_filename}"
$cookie = undef
if (!defined(Package['tar'])) {
package { 'tar':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
if (!defined(Package['gzip'])) {
package { 'gzip':
ensure => 'present',
before => Archive["/tmp/${archive_filename}"],
}
}
}
case $ensure {
'present' : {
case $facts['kernel'] {
'Linux' : {
if ($manage_basedir or $facts['os']['family'] == 'Debian'){
if (!defined(File[$_basedir])) {
file { $_basedir:
ensure => 'directory',
before => Archive["/tmp/${archive_filename}"],
}
}
}
archive { "/tmp/${archive_filename}" :
ensure => present,
source => $source,
extract => true,
extract_path => $_basedir,
cleanup => false,
creates => $creates_path,
cookie => $cookie,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Archive["/tmp/${archive_filename}"],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")
}
}
}
default : {
notice ("Action ${ensure} not supported.")
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "puppetlabs-java",
"version": "6.1.0",
"version": "7.2.0",
"author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0",
@@ -10,18 +10,17 @@
"dependencies": [
{
"name": "puppetlabs/stdlib",
"version_requirement": ">= 4.13.1 < 7.0.0"
"version_requirement": ">= 4.13.1 < 9.0.0"
},
{
"name": "puppet/archive",
"version_requirement": ">= 1.1.0 < 5.0.0"
"version_requirement": ">= 1.1.0 < 7.0.0"
}
],
"operatingsystem_support": [
{
"operatingsystem": "RedHat",
"operatingsystemrelease": [
"5",
"6",
"7",
"8"
@@ -30,7 +29,6 @@
{
"operatingsystem": "CentOS",
"operatingsystemrelease": [
"5",
"6",
"7",
"8"
@@ -54,7 +52,8 @@
"operatingsystemrelease": [
"8",
"9",
"10"
"10",
"11"
]
},
{
@@ -62,13 +61,13 @@
"operatingsystemrelease": [
"14.04",
"16.04",
"18.04"
"18.04",
"20.04"
]
},
{
"operatingsystem": "SLES",
"operatingsystemrelease": [
"11",
"12",
"15"
]
@@ -77,10 +76,10 @@
"requirements": [
{
"name": "puppet",
"version_requirement": ">= 5.5.10 < 7.0.0"
"version_requirement": ">= 6.0.0 < 8.0.0"
}
],
"template-url": "https://github.com/puppetlabs/pdk-templates#master",
"template-ref": "heads/master-0-gcaed9d7",
"pdk-version": "1.15.0"
"template-url": "https://github.com/puppetlabs/pdk-templates.git#main",
"template-ref": "heads/main-0-g03daa92",
"pdk-version": "2.1.0"
}

2
pdk.yaml Normal file
View File

@@ -0,0 +1,2 @@
---
ignore: []

View File

@@ -1,22 +1,69 @@
---
default:
provisioner: docker
images: ['waffleimage/debian8']
images:
- litmusimage/debian:8
vagrant:
provisioner: vagrant
images: ['centos/7', 'generic/ubuntu1804']
images:
- centos/7
- generic/ubuntu1804
travis_deb:
provisioner: docker
images: ['waffleimage/debian8', 'waffleimage/debian9', 'waffleimage/debian10']
travis_ub:
images:
- litmusimage/debian:8
- litmusimage/debian:9
- litmusimage/debian:10
travis_ub_6:
provisioner: docker
images: ['waffleimage/ubuntu14.04', 'waffleimage/ubuntu16.04', 'waffleimage/ubuntu18.04']
travis_el6:
provisioner: docker
images: ['waffleimage/centos6', 'waffleimage/oraclelinux6', 'waffleimage/scientificlinux6']
images:
- litmusimage/ubuntu:14.04
- litmusimage/ubuntu:16.04
- litmusimage/ubuntu:18.04
- litmusimage/ubuntu:20.04
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']
images:
- litmusimage/centos:7
- litmusimage/oraclelinux:7
- litmusimage/scientificlinux:7
travis_el8:
provisioner: docker
images:
- litmusimage/centos:8
release_checks_6:
provisioner: abs
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
- ubuntu-2004-x86_64
- sles-12-x86_64
- sles-15-x86_64
release_checks_7:
provisioner: abs
images:
- redhat-7-x86_64
- redhat-8-x86_64
- centos-7-x86_64
- centos-8-x86_64
- oracle-7-x86_64
- debian-9-x86_64
- debian-10-x86_64
- ubuntu-1804-x86_64
- ubuntu-2004-x86_64
- sles-12-x86_64
- sles-15-x86_64

View File

@@ -1,4 +1,7 @@
# frozen_string_literal: true
require 'spec_helper_acceptance'
require 'pry'
java_class_jre = "class { 'java':\n"\
" distribution => 'jre',\n"\
@@ -41,19 +44,165 @@ bogus_alternative = "class { 'java':\n"\
" java_alternative_path => '/whatever',\n"\
'}'
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
# Oracle installs are disabled by default, because the links to valid oracle installations
# change often. Look the parameters up from the Oracle download URLs at https://java.oracle.com and
# enable the tests:
oracle_enabled = false
oracle_version_major = '8'
oracle_version_minor = '201'
oracle_version_build = '09'
oracle_hash = '42970487e3af4f5aa5bca3f542482c60'
install_oracle_jdk_jre = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
}
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
}
EOL
install_oracle_jre_jce = <<EOL
java::oracle {
'test_oracle_jre':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jre',
jce => true,
}
EOL
install_oracle_jdk_jce = <<EOL
java::oracle {
'test_oracle_jdk':
version => '#{oracle_version_major}',
version_major => '#{oracle_version_major}u#{oracle_version_minor}',
version_minor => 'b#{oracle_version_build}',
url_hash => '#{oracle_hash}',
java_se => 'jdk',
jce => true,
}
EOL
# 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
sap_enabled = true
sap_version7 = '7'
sap_version7_full = '7.1.072'
sap_version8 = '8'
sap_version8_full = '8.1.065'
sap_version11 = '11'
sap_version11_full = '11.0.7'
sap_version14 = '14'
sap_version14_full = '14.0.1'
install_sap_jdk_jre = <<EOL
java::sap {
'test_sap_jdk_version7':
version => '#{sap_version7}',
version_full => '#{sap_version7_full}',
java => 'jdk',
}
java::sap {
'test_sap_jdk_version8':
version => '#{sap_version8}',
version_full => '#{sap_version8_full}',
java => 'jdk',
}
java::sap {
'test_sap_jre_version11':
version => '#{sap_version11}',
version_full => '#{sap_version11_full}',
java => 'jre',
}
java::sap {
'test_sap_jdk_version11':
version => '#{sap_version11}',
version_full => '#{sap_version11_full}',
java => 'jdk',
}
java::sap {
'test_sap_jre_version14':
version => '#{sap_version14}',
version_full => '#{sap_version14_full}',
java => 'jre',
}
java::sap {
'test_sap_jdk_version14':
version => '#{sap_version14}',
version_full => '#{sap_version14_full}',
java => 'jdk',
}
EOL
describe 'installing' do
context 'installing java jre' do
it 'installs jre' do
idempotent_apply(java_class_jre)
end
end
end
context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
context 'installing java jdk' do
it 'installs jdk' do
idempotent_apply(java_class)
end
end
end
context 'with failure cases' do
context 'with failure cases' do
it 'fails to install java with a blank version' do
apply_manifest(blank_version, expect_failures: true)
end
@@ -77,4 +226,59 @@ context 'with failure cases' do
apply_manifest(bogus_alternative, expect_failures: true)
end
end
end
context 'java::oracle', if: oracle_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 oracle jdk and jre' do
idempotent_apply(install_oracle_jdk_jre)
jdk_result = shell("test ! -e #{install_path}/jdk1.#{oracle_version_major}.0_#{oracle_version_minor}#{version_suffix}/jre/lib/security/local_policy.jar")
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
it 'installs oracle jdk with jce' do
idempotent_apply(install_oracle_jdk_jce)
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
it 'installs oracle jre with jce' do
idempotent_apply(install_oracle_jre_jce)
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)
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
context 'java::adopt', if: sap_enabled && ['Sles'].include?(os[:family]), unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
let(:install_path) do
(os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
end
it 'installs adopt jdk and jre' do
idempotent_apply(install_sap_jdk_jre)
end
end
end

View File

@@ -1,36 +1,38 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java', type: :class do
context 'when select openjdk for Centos 5.8' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.8', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 5.8' do
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.6.0/') }
end
context 'when select openjdk for Centos 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 6.3' do
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.7.0/') }
end
context 'when select openjdk for Centos 7.1.1503' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '7.1.1503', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 7.1.1503' do
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib/jvm/java-1.8.0/') }
end
context 'when select openjdk for Centos 6.2' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.2', architecture: 'x86_64' } }
context 'when select openjdk for CentOS 6.2' do
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.not_to contain_exec('update-java-alternatives') }
end
context 'when select Oracle JRE with alternatives for Centos 6.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '6.3', architecture: 'x86_64' } }
context 'when select Oracle JRE with alternatives for CentOS 6.3' do
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' } }
it { is_expected.to contain_package('java').with_name('jre') }
@@ -38,23 +40,23 @@ 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') }
end
context 'when select passed value for Centos 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } }
context 'when select passed value for CentOS 5.3' do
let(:facts) { { os: { family: 'RedHat', name: 'CentOS', release: { full: '5.3' }, architecture: 'x86_64' } } }
let(:params) { { 'package' => 'jdk', 'java_home' => '/usr/local/lib/jre' } }
it { is_expected.to contain_package('java').with_name('jdk') }
it { is_expected.not_to contain_exec('update-java-alternatives') }
end
context 'when select default for Centos 5.3' do
let(:facts) { { osfamily: 'RedHat', operatingsystem: 'Centos', operatingsystemrelease: '5.3', architecture: 'x86_64' } }
context 'when select default for CentOS 5.3' do
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.not_to contain_exec('update-java-alternatives') }
end
context 'when select jdk for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'buster', operatingsystemmajrelease: '10', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-11-jdk') }
@@ -62,7 +64,7 @@ describe 'java', type: :class do
end
context 'when select jre for Debian Buster (10.0)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'buster', operatingsystemmajrelease: '10', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'buster' }, release: { major: '10' }, architecture: 'amd64' } } }
let(:params) { { 'distribution' => 'jre' } }
it { is_expected.to contain_package('java').with_name('openjdk-11-jre-headless') }
@@ -70,7 +72,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemmajrelease: '14.04', architecture: 'amd64' } }
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') }
@@ -78,7 +80,7 @@ describe 'java', type: :class do
end
context 'when select jre for Ubuntu Trusty (14.04)' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'trusty', operatingsystemmajrelease: '14.04', architecture: 'amd64' } }
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') }
@@ -86,7 +88,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemmajrelease: '16.04', architecture: 'armv7l' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'armv7l' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
@@ -94,7 +96,7 @@ describe 'java', type: :class do
end
context 'when select jdk for Ubuntu xenial (16.04) on ARM64' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Ubuntu', lsbdistcodename: 'xenial', operatingsystemmajrelease: '16.04', architecture: 'aarch64' } }
let(:facts) { { os: { family: 'Debian', name: 'Ubuntu', lsb: { distcodename: 'xenial' }, release: { major: '16.04' }, architecture: 'aarch64' } } }
let(:params) { { 'distribution' => 'jdk' } }
it { is_expected.to contain_package('java').with_name('openjdk-8-jdk') }
@@ -102,26 +104,26 @@ describe 'java', type: :class do
end
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') }
end
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') }
end
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' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
end
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' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -129,7 +131,7 @@ describe 'java', type: :class do
end
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' } }
it { is_expected.to contain_package('java').with_name('java-1.7.0-openjdk') }
@@ -137,42 +139,42 @@ describe 'java', type: :class do
end
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.6.0-ibm-1.6.0/') }
end
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.1-ibm-1.7.1/') }
end
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.7.0-openjdk-1.7.0/') }
end
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_file_line('java-home-environment').with_line('JAVA_HOME=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/') }
end
describe 'custom java package' do
let(:facts) { { osfamily: 'Debian', operatingsystem: 'Debian', lsbdistcodename: 'jessie', operatingsystemmajrelease: '8', architecture: 'amd64' } }
let(:facts) { { os: { family: 'Debian', name: 'Debian', lsb: { distcodename: 'jessie' }, release: { major: '8' }, architecture: 'amd64' } } }
context 'when all params provided' do
let(:params) do
@@ -206,34 +208,44 @@ describe 'java', type: :class do
describe 'incompatible OSs' do
[
{
osfamily: 'windows',
operatingsystem: 'windows',
operatingsystemrelease: '8.1',
os: {
family: 'windows',
name: 'windows',
release: { full: '8.1' },
},
},
{
osfamily: 'Darwin',
operatingsystem: 'Darwin',
operatingsystemrelease: '13.3.0',
os: {
family: 'Darwin',
name: 'Darwin',
release: { full: '13.3.0' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '7100-02-00-000',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '7100-02-00-000' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '6100-07-04-1216',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '6100-07-04-1216' },
},
},
{
osfamily: 'AIX',
operatingsystem: 'AIX',
operatingsystemrelease: '5300-12-01-1016',
os: {
family: 'AIX',
name: 'AIX',
release: { full: '5300-12-01-1016' },
},
},
].each do |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}
end
end

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

@@ -0,0 +1,360 @@
# frozen_string_literal: true
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 manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '11',
java: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk11_symlink' }
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
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

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java::download', type: :define do
@@ -55,6 +57,21 @@ describe 'java::download', type: :define do
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) do
{
ensure: 'present',
version: '6',
java_se: 'jdk',
basedir: '/usr/java',
url: url,
}
end
let(:title) { 'jdk6_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
end
context 'with Ubuntu 64-bit' do

257
spec/defines/sap_spec.rb Normal file
View File

@@ -0,0 +1,257 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java::sap', 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 manage_symlink is set to true' do
let(:params) do
{
ensure: 'present',
version: '11',
java: 'jdk',
basedir: '/usr/java',
manage_symlink: true,
symlink_name: 'java_home',
}
end
let(:title) { 'jdk11_symlink' }
it { is_expected.to contain_file('/usr/java/java_home') }
end
context 'when manage_symlink is not set' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11_nosymlink' }
it { is_expected.not_to contain_file('/usr/java/java_home') }
end
context 'when sapjvm 7' do
let(:params) { { ensure: 'present', version: '7', java: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/sapjvm-7.1.072-linux-x64.zip') }
end
context 'when sapjvm 8' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
end
context 'when sapmachine 11 jdk' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 11 jre' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jdk' do
let(:params) { { ensure: 'present', version: '14', java: 'jdk' } }
let(:title) { 'jdk14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jre' do
let(:params) { { ensure: 'present', version: '14', java: 'jre' } }
let(:title) { 'jre14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_full: '11.0.7',
java: 'jdk',
}
end
let(:title) { 'jdk1107' }
let(:pre_condition) do
<<-EOL
java::sap {
'jdk1106':
ensure => 'present',
version_full => '11.0.6',
java => 'jdk',
}
EOL
end
it { is_expected.to compile }
end
context 'when specifying basedir' do
let(:params) do
{
ensure: 'present',
version: '8',
java: 'jdk',
basedir: '/usr/java',
}
end
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
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 sapjvm 7' do
let(:params) { { ensure: 'present', version: '7', java: 'jdk' } }
let(:title) { 'jdk7' }
it { is_expected.to contain_archive('/tmp/sapjvm-7.1.072-linux-x64.zip') }
end
context 'when sapjvm 8' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' }
it { is_expected.to contain_archive('/tmp/sapjvm-8.1.065-linux-x64.zip') }
end
context 'when sapmachine 11 jdk' do
let(:params) { { ensure: 'present', version: '11', java: 'jdk' } }
let(:title) { 'jdk11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 11 jre' do
let(:params) { { ensure: 'present', version: '11', java: 'jre' } }
let(:title) { 'jre11' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-11.0.7_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jdk' do
let(:params) { { ensure: 'present', version: '14', java: 'jdk' } }
let(:title) { 'jdk14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jdk-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when sapmachine 14 jre' do
let(:params) { { ensure: 'present', version: '14', java: 'jre' } }
let(:title) { 'jre14' }
it { is_expected.to contain_archive('/tmp/sapmachine-jre-14.0.1_linux-x64_bin.tar.gz') }
end
context 'when installing multiple versions' do
let(:params) do
{
ensure: 'present',
version_full: '11.0.7',
java: 'jdk',
}
end
let(:title) { 'jdk1107' }
let(:pre_condition) do
<<-EOL
java::sap {
'jdk1106':
ensure => 'present',
version_full => '11.0.6',
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

@@ -1,3 +1,5 @@
# frozen_string_literal: true
RSpec.configure do |c|
c.mock_with :rspec
end
@@ -40,11 +42,24 @@ RSpec.configure do |c|
# set to strictest setting for testing
# by default Puppet runs at warning level
Puppet.settings[:strict] = :warning
Puppet.settings[:strict_variables] = true
end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do
RSpec::Puppet::Coverage.report!(0)
end
# Filter backtrace noise
backtrace_exclusion_patterns = [
%r{spec_helper},
%r{gems},
]
if c.respond_to?(:backtrace_exclusion_patterns)
c.backtrace_exclusion_patterns = backtrace_exclusion_patterns
elsif c.respond_to?(:backtrace_clean_patterns)
c.backtrace_clean_patterns = backtrace_exclusion_patterns
end
end
# Ensures that a module is defined

View File

@@ -1,82 +1,6 @@
# frozen_string_literal: true
require 'serverspec'
require 'puppet_litmus'
require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb'))
include PuppetLitmus
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'])
if target_in_group(inventory_hash, ENV['TARGET_HOST'], 'docker_nodes')
host = ENV['TARGET_HOST']
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
PuppetLitmus.configure!

View File

@@ -1 +1,3 @@
# frozen_string_literal: true
UNSUPPORTED_PLATFORMS = ['darwin', 'windows'].freeze

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
java_7_path = '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java'

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java_libjvm_path' do
@@ -5,20 +7,21 @@ describe 'java_libjvm_path' do
before(:each) do
Facter.clear
allow(Facter.fact(:kernel)).to receive(:value).once.and_return('Linux')
allow(Facter.fact(:java_default_home)).to receive(:value).once.and_return(java_default_home)
allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux')
allow(Facter.fact(:java_default_home)).to receive(:value).and_return(java_default_home)
end
context 'when libjvm exists' do
it do
allow(Dir).to receive(:glob).with("#{java_default_home}/**/lib/**/libjvm.so").and_return(['/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so'])
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'
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([])
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

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java_major_version' do
@@ -16,7 +18,7 @@ describe 'java_major_version' do
context 'when java not present, returns nil' do
before :each do
allow(Facter.fact(:java_version)).to receive(:value).and_return('nil')
allow(Facter.fact(:java_version)).to receive(:value).and_return(nil)
end
it do
expect(Facter.fact(:java_major_version).value).to be_nil

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'java_patch_level' do

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper'
openjdk_7_output = "Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true\n"\
@@ -30,9 +32,9 @@ describe 'java_version' do
end
context 'when on Darwin' do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
allow(Facter.fact(:kernel)).to receive(:value).and_return('Darwin')
end
let(:facts) { { operatingsystem: 'Darwin' } }
let(:facts) { { kernel: 'Darwin' } }
it do
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')
@@ -63,14 +65,15 @@ describe 'java_version' do
it do
allow(Facter::Util::Resolution).to receive(:exec) # Catch all other calls
allow(Facter::Util::Resolution).to receive(:which).and_return(nil)
expect(Facter.value(:java_version)).to be_nil
end
end
context 'when on Darwin' do
before(:each) do
allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Darwin')
allow(Facter.fact(:kernel)).to receive(:value).and_return('Darwin')
end
let(:facts) { { operatingsystem: 'Darwin' } }
let(:facts) { { kernel: 'Darwin' } }
it do
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)".')