Compare commits

..

88 Commits

Author SHA1 Message Date
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
47 changed files with 2250 additions and 770 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",
}

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

@@ -0,0 +1,81 @@
name: "Auto release"
on:
schedule:
- cron: '0 3 * * 6'
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/pdk:nightly
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 }}"
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'

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

@@ -0,0 +1,197 @@
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 ===
sed -e 's/password: .*/password: "[redacted]"/' < inventory.yaml || 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 ]; 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'

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

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

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.0.0:oSzfTkDf6Cmc1jOjgW33VA==

View File

@@ -32,6 +32,7 @@
/.gitignore /.gitignore
/.gitlab-ci.yml /.gitlab-ci.yml
/.pdkignore /.pdkignore
/.puppet-lint.rc
/Rakefile /Rakefile
/rakelib/ /rakelib/
/.rspec /.rspec
@@ -40,3 +41,4 @@
/.yardopts /.yardopts
/spec/ /spec/
/.vscode/ /.vscode/
/.sync.yml

View File

@@ -1,12 +1,12 @@
--- ---
require: require:
- rubocop-performance
- rubocop-rspec - rubocop-rspec
- rubocop-i18n
AllCops: AllCops:
DisplayCopNames: true DisplayCopNames: true
TargetRubyVersion: '2.1' TargetRubyVersion: '2.4'
Include: Include:
- "./**/*.rb" - "**/*.rb"
Exclude: Exclude:
- bin/* - bin/*
- ".vendor/**/*" - ".vendor/**/*"
@@ -18,16 +18,9 @@ AllCops:
- "**/Puppetfile" - "**/Puppetfile"
- "**/Vagrantfile" - "**/Vagrantfile"
- "**/Guardfile" - "**/Guardfile"
Metrics/LineLength: Layout/LineLength:
Description: People have wide screens, use them. Description: People have wide screens, use them.
Max: 200 Max: 200
GetText:
Enabled: false
GetText/DecorateString:
Description: We don't want to decorate test output.
Exclude:
- spec/**/*
Enabled: false
RSpec/BeforeAfterAll: RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests. Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing. A necessary evil in acceptance testing.
@@ -36,6 +29,9 @@ RSpec/BeforeAfterAll:
RSpec/HookArgument: RSpec/HookArgument:
Description: Prefer explicit :each argument, matching existing module's style Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each EnforcedStyle: each
RSpec/DescribeSymbol:
Exclude:
- spec/unit/facter/**/*.rb
Style/BlockDelimiters: Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then. be consistent then.
@@ -68,7 +64,7 @@ Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer. diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma EnforcedStyleForMultiline: comma
Style/TrailingCommaInLiteral: Style/TrailingCommaInArrayLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs, Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer. and re-ordering nicer.
EnforcedStyleForMultiline: comma EnforcedStyleForMultiline: comma
@@ -83,26 +79,170 @@ Style/Documentation:
- spec/**/* - spec/**/*
Style/WordArray: Style/WordArray:
EnforcedStyle: brackets 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: Style/CollectionMethods:
Enabled: true Enabled: true
Style/MethodCalledOnDoEndBlock: Style/MethodCalledOnDoEndBlock:
Enabled: true Enabled: true
Style/StringMethods: Style/StringMethods:
Enabled: true Enabled: true
GetText/DecorateFunctionMessage: Bundler/InsecureProtocolSource:
Enabled: false Enabled: false
GetText/DecorateStringFormattingUsingInterpolation: Gemspec/DuplicatedAssignment:
Enabled: false 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 Enabled: false
Layout/EndOfLine: Layout/EndOfLine:
Enabled: false 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 Enabled: false
Metrics/AbcSize: Metrics/AbcSize:
Enabled: false Enabled: false
Metrics/BlockLength: Metrics/BlockLength:
Enabled: false Enabled: false
Metrics/BlockNesting:
Enabled: false
Metrics/ClassLength: Metrics/ClassLength:
Enabled: false Enabled: false
Metrics/CyclomaticComplexity: Metrics/CyclomaticComplexity:
@@ -115,19 +255,265 @@ Metrics/ParameterLists:
Enabled: false Enabled: false
Metrics/PerceivedComplexity: Metrics/PerceivedComplexity:
Enabled: false 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: RSpec/DescribeClass:
Enabled: false Enabled: false
RSpec/EmptyHook:
Enabled: false
RSpec/EmptyLineAfterExample:
Enabled: false
RSpec/EmptyLineAfterExampleGroup:
Enabled: false
RSpec/EmptyLineAfterHook:
Enabled: false
RSpec/ExampleLength: RSpec/ExampleLength:
Enabled: false 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 Enabled: false
RSpec/MultipleExpectations: RSpec/MultipleExpectations:
Enabled: false Enabled: false
RSpec/MultipleMemoizedHelpers:
Enabled: false
RSpec/MultipleSubjects:
Enabled: false
RSpec/NestedGroups: RSpec/NestedGroups:
Enabled: false 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: Style/AsciiComments:
Enabled: false 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: Style/IfUnlessModifier:
Enabled: false 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: Style/SymbolProc:
Enabled: false 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

View File

@@ -2,7 +2,7 @@
".gitlab-ci.yml": ".gitlab-ci.yml":
delete: true delete: true
".travis.yml": ".travis.yml":
global_env: global_env:
- HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests" - HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
deploy_to_forge: deploy_to_forge:
enabled: false enabled: false
@@ -11,11 +11,16 @@
use_litmus: true use_litmus: true
litmus: litmus:
provision_list: provision_list:
- travis_deb - ---travis_el
- travis_ub - travis_deb
- travis_el6 - travis_el7
- travis_el7 - travis_el8
- ---travis_el complex:
- collection:
puppet_collection:
- puppet6
provision_list:
- travis_ub_6
simplecov: true simplecov: true
notifications: notifications:
slack: slack:
@@ -26,9 +31,16 @@ Gemfile:
optional: optional:
":development": ":development":
- gem: github_changelog_generator - 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: spec/spec_helper.rb:
mock_with: ":rspec" mock_with: ":rspec"
coverage_report: true 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

View File

@@ -16,7 +16,7 @@ script:
- 'SIMPLECOV=yes bundle exec rake $CHECK' - 'SIMPLECOV=yes bundle exec rake $CHECK'
bundler_args: --without system_tests bundler_args: --without system_tests
rvm: rvm:
- 2.5.3 - 2.5.7
env: env:
global: global:
- HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests" - HONEYCOMB_WRITEKEY="7f3c63a70eecc61d635917de46bea4e6",HONEYCOMB_DATASET="litmus tests"
@@ -27,116 +27,60 @@ stages:
jobs: jobs:
fast_finish: true fast_finish: true
include: include:
- - before_script:
before_script: - "bundle exec rake 'litmus:provision_list[travis_ub_6]'"
- "bundle exec rake 'litmus:provision_list[travis_deb]'" - "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module" - "bundle exec rake litmus:install_module"
bundler_args: env:
dist: trusty PLATFORMS: travis_ub_6_puppet6
env: PLATFORMS=travis_deb_puppet5 BUNDLE_WITH: system_tests
rvm: 2.5.3 rvm: 2.5.7
script: ["bundle exec rake litmus:acceptance:parallel"] script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker services: docker
stage: acceptance stage: acceptance
- - before_script:
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_ub_puppet5
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el6_puppet5
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet5]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el7_puppet5
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_deb]'" - "bundle exec rake 'litmus:provision_list[travis_deb]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'" - "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module" - "bundle exec rake litmus:install_module"
bundler_args: env:
dist: trusty PLATFORMS: travis_deb_puppet6
env: PLATFORMS=travis_deb_puppet6 BUNDLE_WITH: system_tests
rvm: 2.5.3 rvm: 2.5.7
script: ["bundle exec rake litmus:acceptance:parallel"] script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker services: docker
stage: acceptance stage: acceptance
- - before_script:
before_script:
- "bundle exec rake 'litmus:provision_list[travis_ub]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_ub_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el6]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
bundler_args:
dist: trusty
env: PLATFORMS=travis_el6_puppet6
rvm: 2.5.3
script: ["bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
-
before_script:
- "bundle exec rake 'litmus:provision_list[travis_el7]'" - "bundle exec rake 'litmus:provision_list[travis_el7]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'" - "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module" - "bundle exec rake litmus:install_module"
bundler_args: env:
dist: trusty PLATFORMS: travis_el7_puppet6
env: PLATFORMS=travis_el7_puppet6 BUNDLE_WITH: system_tests
rvm: 2.5.3 rvm: 2.5.7
script: ["bundle exec rake litmus:acceptance:parallel"] script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker
stage: acceptance
- before_script:
- "bundle exec rake 'litmus:provision_list[travis_el8]'"
- "bundle exec rake 'litmus:install_agent[puppet6]'"
- "bundle exec rake litmus:install_module"
env:
PLATFORMS: travis_el8_puppet6
BUNDLE_WITH: system_tests
rvm: 2.5.7
script: ["travis_wait 45 bundle exec rake litmus:acceptance:parallel"]
services: docker services: docker
stage: acceptance stage: acceptance
- -
env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint" env: CHECK="check:symlinks check:git_ignore check:dot_underscore check:test_file rubocop syntax lint metadata_lint"
stage: static 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 env: PUPPET_GEM_VERSION="~> 6.0" CHECK=parallel_spec
rvm: 2.5.3 rvm: 2.5.7
stage: spec stage: spec
branches: branches:
only: only:
- master - main
- /^v\d/ - /^v\d/
- release - release
notifications: notifications:

View File

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

View File

@@ -2,6 +2,48 @@
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org). All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).
## [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) ## [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) [Full Changelog](https://github.com/puppetlabs/puppetlabs-java/compare/v6.1.0...v6.2.0)
@@ -48,6 +90,7 @@ All notable changes to this project will be documented in this file. The format
- \(FM-8223\) converted to use litmus [\#376](https://github.com/puppetlabs/puppetlabs-java/pull/376) ([tphoney](https://github.com/tphoney)) - \(FM-8223\) converted to use litmus [\#376](https://github.com/puppetlabs/puppetlabs-java/pull/376) ([tphoney](https://github.com/tphoney))
- Add buster support, default to 11 [\#369](https://github.com/puppetlabs/puppetlabs-java/pull/369) ([mhjacks](https://github.com/mhjacks)) - Add buster support, default to 11 [\#369](https://github.com/puppetlabs/puppetlabs-java/pull/369) ([mhjacks](https://github.com/mhjacks))
- Add support for debian buster [\#364](https://github.com/puppetlabs/puppetlabs-java/pull/364) ([TomRitserveldt](https://github.com/TomRitserveldt))
### Fixed ### Fixed
@@ -72,7 +115,6 @@ All notable changes to this project will be documented in this file. The format
### Added ### Added
- Add support for debian buster [\#364](https://github.com/puppetlabs/puppetlabs-java/pull/364) ([TomRitserveldt](https://github.com/TomRitserveldt))
- \(FM-7921\) - Implement Puppet Strings [\#353](https://github.com/puppetlabs/puppetlabs-java/pull/353) ([david22swan](https://github.com/david22swan)) - \(FM-7921\) - Implement Puppet Strings [\#353](https://github.com/puppetlabs/puppetlabs-java/pull/353) ([david22swan](https://github.com/david22swan))
- Update default version & java 8 version from 8u192 to 8u201 [\#347](https://github.com/puppetlabs/puppetlabs-java/pull/347) ([valentinsavenko](https://github.com/valentinsavenko)) - Update default version & java 8 version from 8u192 to 8u201 [\#347](https://github.com/puppetlabs/puppetlabs-java/pull/347) ([valentinsavenko](https://github.com/valentinsavenko))
- Add ability to override basedir and package type for oracle java [\#345](https://github.com/puppetlabs/puppetlabs-java/pull/345) ([fraenki](https://github.com/fraenki)) - Add ability to override basedir and package type for oracle java [\#345](https://github.com/puppetlabs/puppetlabs-java/pull/345) ([fraenki](https://github.com/fraenki))
@@ -433,4 +475,4 @@ Jeff McCune <jeff@puppetlabs.com>
[2.2.0]:https://github.com/puppetlabs/puppetlabs-java/compare/2.1.1...2.2.0 [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

@@ -108,7 +108,7 @@ process as easy as possible.
To submit your changes via a GitHub pull request, we _highly_ To submit your changes via a GitHub pull request, we _highly_
recommend that you have them on a topic branch, instead of recommend that you have them on a topic branch, instead of
directly on "master". directly on "main".
It makes things much easier to keep track of, especially if It makes things much easier to keep track of, especially if
you decide to work on another thing before your first change you decide to work on another thing before your first change
is merged in. is merged in.

20
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('.') minor_version = ruby_version_segments[0..1].join('.')
group :development do group :development do
gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "fast_gettext", 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.0.4', require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup)) gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw] 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}", '~> 0.4', require: false, platforms: [:ruby] gem "puppet-module-posix-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", '~> 0.4', 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}", '~> 0.4', require: false, platforms: [:mswin, :mingw, :x64_mingw] 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}", '~> 0.4', 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, git: 'https://github.com/skywinder/github-changelog-generator', ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2') 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 end
puppet_version = ENV['PUPPET_GEM_VERSION'] puppet_version = ENV['PUPPET_GEM_VERSION']

View File

@@ -55,6 +55,8 @@ 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). The defined type `java::adopt` installs one or more versions of AdoptOpenJDK Java. `java::adopt` depends on [puppet/archive](https://github.com/voxpupuli/puppet-archive).
```puppet ```puppet
@@ -70,7 +72,7 @@ java::adopt { 'jdk11' :
java => 'jdk', java => 'jdk',
} }
``` ```
#TODO
To install a specific release of a AdoptOpenJDK Java version, e.g. 8u202-b08, provide both parameters `version_major` and `version_minor` as follows: 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 ```puppet
@@ -105,9 +107,61 @@ java::adopt { 'jdk8' :
} }
``` ```
## 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 ## 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 ### Facts
@@ -123,7 +177,7 @@ The java module includes a few facts to describe the version of Java installed o
## Limitations ## 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. This module cannot guarantee installation of Java versions that are not available on platform repositories.
@@ -140,7 +194,7 @@ OpenJDK is supported on:
* Oracle Linux 6, 7 * Oracle Linux 6, 7
* Scientific Linux 6 * Scientific Linux 6
* Debian 8, 9 * Debian 8, 9
* Ubuntu 14.04, 16.04, 18.04 * Ubuntu 14.04, 16.04, 18.04, 20.04
* Solaris 11 * Solaris 11
* SLES 11, 12 * SLES 11, 12
@@ -161,6 +215,17 @@ AdoptOpenJDK Java is supported on:
* Amazon Linux * Amazon Linux
* Debian * 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 ### Known issues
Where Oracle change the format of the URLs to different installer packages, the curl to fetch the package may fail with a HTTP/404 error. In this case, passing a full known good URL using the `url` parameter will allow the module to still be able to install specific versions of the JRE/JDK. Note the `version_major` and `version_minor` parameters must be passed and must match the version downloaded using the known URL in the `url` parameter. Where Oracle change the format of the URLs to different installer packages, the curl to fetch the package may fail with a HTTP/404 error. In this case, passing a full known good URL using the `url` parameter will allow the module to still be able to install specific versions of the JRE/JDK. Note the `version_major` and `version_minor` parameters must be passed and must match the version downloaded using the known URL in the `url` parameter.

View File

@@ -1,37 +1,47 @@
# Reference # Reference
<!-- DO NOT EDIT: This document was generated by Puppet Strings --> <!-- DO NOT EDIT: This document was generated by Puppet Strings -->
## Table of Contents ## Table of Contents
**Classes** ### Classes
_Public Classes_ #### Public Classes
* [`java`](#java): This module manages the Java runtime package * [`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) * `java::params`: This class builds a hash of JDK/JRE packages and (for Debian)
alternatives. For wheezy/precise, we provide Oracle JDK/JRE alternatives. For wheezy/precise, we provide Oracle JDK/JRE
options, even though those are not in the package repositories. options, even though those are not in the package repositories.
**Defined types** ### Defined types
* [`java::adopt`](#javaadopt): Defined Type java::adopt Description Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM. Install one or more versions of Ad * [`java::adopt`](#javaadopt): Install one or more versions of AdoptOpenJDK Java.
* [`java::download`](#javadownload): Installs Java from a url location. * [`java::download`](#javadownload): Installs Java from a url location.
* [`java::sap`](#javasap): Install one or more versions of SAPJVM or Sapmachine
## Classes ## Classes
### java ### <a name="java"></a>`java`
This module manages the Java runtime package This module manages the Java runtime package
#### Parameters #### 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` Data type: `String`
@@ -39,36 +49,36 @@ The java distribution to install. Can be one of "jdk" or "jre",
or other platform-specific options where there are multiple or other platform-specific options where there are multiple
implementations available (eg: OpenJDK vs Oracle JDK). implementations available (eg: OpenJDK vs Oracle JDK).
Default value: 'jdk' Default value: `'jdk'`
##### `version` ##### <a name="version"></a>`version`
Data type: `Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/]` Data type: `Pattern[/present|installed|latest|^[.+_0-9a-zA-Z:~-]+$/]`
The version of java to install. By default, this module simply ensures The version of java to install. By default, this module simply ensures
that java is present, and does not require a specific version. that java is present, and does not require a specific version.
Default value: 'present' Default value: `'present'`
##### `package` ##### <a name="package"></a>`package`
Data type: `Optional[String]` Data type: `Optional[String]`
The name of the java package. This is configurable in case a non-standard The name of the java package. This is configurable in case a non-standard
java package is desired. java package is desired.
Default value: `undef` Default value: ``undef``
##### `package_options` ##### <a name="package_options"></a>`package_options`
Data type: `Optional[Array]` Data type: `Optional[Array]`
Array of strings to pass installation options to the 'package' Puppet resource. Array of strings to pass installation options to the 'package' Puppet resource.
Options available depend on the 'package' provider for the target OS. Options available depend on the 'package' provider for the target OS.
Default value: `undef` Default value: ``undef``
##### `java_alternative` ##### <a name="java_alternative"></a>`java_alternative`
Data type: `Optional[String]` Data type: `Optional[String]`
@@ -78,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 want to specify which java_alternative to choose. If you set
this, you also need to set the path below. this, you also need to set the path below.
Default value: `undef` Default value: ``undef``
##### `java_alternative_path` ##### <a name="java_alternative_path"></a>`java_alternative_path`
Data type: `Optional[String]` Data type: `Optional[String]`
@@ -89,326 +99,115 @@ alternatives system makes it difficult to verify which
alternative is actually enabled, this is required to ensure the alternative is actually enabled, this is required to ensure the
correct JVM is enabled. correct JVM is enabled.
Default value: `undef` Default value: ``undef``
##### `java_home` ##### <a name="java_home"></a>`java_home`
Data type: `Optional[String]` Data type: `Optional[String]`
The path to where the JRE is installed. This will be set as an The path to where the JRE is installed. This will be set as an
environment variable. environment variable.
Default value: `undef` Default value: ``undef``
## Defined types ## Defined types
### java::adopt ### <a name="javaadopt"></a>`java::adopt`
Defined Type java::adopt Defined Type java::adopt
Description
Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM.
Install one or more versions of AdoptOpenJDK Java.
Currently only Linux RedHat, Amazon and Debian are supported.
Parameters
[*version*]
Version of Java to install, e.g. '8' or '9'. Default values for major and minor
versions will be used.
[*version_major*]
Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with
version_minor.
[*version_minor*]
Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8').
Must be used together with version_major.
[*java_edition*]
Type of Java Edition to install, jdk or jre.
[*ensure*]
Install or remove the package.
[*proxy_server*]
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
[*proxy_type*]
Proxy server type (none|http|https|ftp). (passed to archive)
[*basedir*]
Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat.
[*manage_basedir*]
Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
[*package_type*]
Type of installation package for specified version of java. java 6 comes
in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz
Variables
[*release_major*]
Major version release number for java. Used to construct download URL.
[*release_minor*]
Minor version release number for java. Used to construct download URL.
[*install_path*]
Base install path for specified version of java. Used to determine if java
has already been installed.
[*os*]
java OS type.
[*destination*]
Destination directory to save java installer to. Usually /tmp on Linux and
C:\TEMP on Windows.
[*creates_path*]
Fully qualified path to java after it is installed. Used to determine if
java is already installed.
[*arch*]
java architecture type.
[*package_name*]
Name of the java installation package to download from github.
[*install_command*]
Installation command used to install java. Installation commands
differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
types have the rpms extracted and then forcibly installed. 'rpm' types are
forcibly installed.
[*spacer*]
Spacer to be used in github download url. In major version 8 this is a simple dash
in later versions they use a crazy plus sign, which needs to be used in urlencoded
format
[*download_folder_prefix*]
Download folder name begins differently depending on the release. After major release
8, they have given it a dash. Be aware that even if you want to have a JRE, the folder
still begins with "jdk"
[*release_minor_url*]
filled depending on major release. Until major release 8 the minor part needs to be given
with a 'b' for build, in later versions it is a underscore or a plus sign, which needs
to be stripped for the download url and is replaced with the given spaces (see above)
[*_package_type*]
Helper variable which gets filled depending on parameter package_type
[*_basedir*]
Helper variable which gets filled depending on parameter basedir
[*_version*]
Helper variable which gets filled depending on parameter version
[*_version_int*]
Helper variable which gets the value of $_version converted to integer
[*_append_jre*]
Helper variable which gets filled with the string "-jre" if jre was selected to build the correct install path
[*_release_minor_package_name*]
Helper variable which gets filled with the right minor string depending on the major version
#### Parameters #### Parameters
The following parameters are available in the `java::adopt` 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)
* [`basedir`](#basedir)
* [`manage_basedir`](#manage_basedir)
* [`package_type`](#package_type)
* [`manage_symlink`](#manage_symlink)
* [`symlink_name`](#symlink_name)
Data type: `Any` ##### <a name="ensure"></a>`ensure`
Default value: 'present'
##### `version`
Data type: `Any`
Default value: '8'
##### `version_major`
Data type: `Any`
Default value: `undef`
##### `version_minor`
Data type: `Any`
Default value: `undef`
##### `java`
Data type: `Any`
Default value: 'jdk'
##### `proxy_server`
Data type: `Any`
Default value: `undef`
##### `proxy_type`
Data type: `Any`
Default value: `undef`
##### `basedir`
Data type: `Any`
Default value: `undef`
##### `manage_basedir`
Data type: `Any`
Default value: `true`
##### `package_type`
Data type: `Any`
Default value: `undef`
### java::download
Defined Type java::download
#### Parameters
The following parameters are available in the `java::download` defined type.
##### `ensure`
Data type: `Any` Data type: `Any`
Install or remove the package. Install or remove the package.
Default value: 'present' Default value: `'present'`
##### `version` ##### <a name="version"></a>`version`
Data type: `Any` 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` 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` 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` Data type: `Any`
Type of Java Standard Edition to install, jdk or jre. 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` Data type: `Any`
Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive) 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` Data type: `Any`
Proxy server type (none|http|https|ftp). (passed to archive) Proxy server type (none|http|https|ftp). (passed to archive)
Default value: `undef` Default value: ``undef``
##### `url` ##### <a name="basedir"></a>`basedir`
Data type: `Any`
Full URL
Default value: `undef`
##### `jce`
Data type: `Any`
Install Oracles Java Cryptographic Extensions into the JRE or JDK
Default value: `false`
##### `jce_url`
Data type: `Any`
Full URL to the jce zip file
Default value: `undef`
##### `basedir`
Data type: `Any` Data type: `Any`
Directory under which the installation will occur. If not set, defaults to Directory under which the installation will occur. If not set, defaults to
/usr/lib/jvm for Debian and /usr/java for RedHat. /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` Data type: `Any`
Whether to manage the basedir directory. Defaults to false. Whether to manage the basedir directory. Defaults to false.
Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter. 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` Data type: `Any`
@@ -416,21 +215,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. in a few installation package flavors and we need to account for them.
Optional forced package types: rpm, rpmbin, tar.gz 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` Data type: `Any`
Whether to manage a symlink that points to the installation directory. Defaults to false. 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` Data type: `Any`
The name for the optional symlink in the installation directory. 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,5 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require 'bundler'
require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any? require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
require 'puppetlabs_spec_helper/rake_tasks' require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax' require 'puppet-syntax/tasks/puppet-syntax'
@@ -52,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.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.add_pr_wo_labels = true
config.issues = false config.issues = false
config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM" config.merge_prefix = "### UNCATEGORIZED PRS; LABEL THEM ON GITHUB"
config.configure_sections = { config.configure_sections = {
"Changed" => { "Changed" => {
"prefix" => "### Changed", "prefix" => "### Changed",
@@ -60,11 +61,11 @@ if Bundler.rubygems.find_name('github_changelog_generator').any?
}, },
"Added" => { "Added" => {
"prefix" => "### Added", "prefix" => "### Added",
"labels" => ["feature", "enhancement"], "labels" => ["enhancement", "feature"],
}, },
"Fixed" => { "Fixed" => {
"prefix" => "### Fixed", "prefix" => "### Fixed",
"labels" => ["bugfix"], "labels" => ["bug", "documentation", "bugfix"],
}, },
} }
end end
@@ -72,16 +73,15 @@ else
desc 'Generate a Changelog from GitHub' desc 'Generate a Changelog from GitHub'
task :changelog do task :changelog do
raise <<EOM 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`: Please manually add it to your .sync.yml for now, and run `pdk update`:
--- ---
Gemfile: Gemfile:
optional: optional:
':development': ':development':
- gem: 'github_changelog_generator' - gem: 'github_changelog_generator'
git: 'https://github.com/skywinder/github-changelog-generator' version: '~> 1.15'
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018' condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.3.0')"
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
EOM EOM
end end
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: .

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 # Fact: java_default_home
# #
# Purpose: get absolute path of java system home # Purpose: get absolute path of java system home
@@ -19,7 +21,7 @@ Facter.add(:java_default_home) do
nil nil
else else
java_path = File.realpath(java_bin) 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))) File.dirname(File.dirname(File.dirname(java_path)))
else else
File.dirname(File.dirname(java_path)) File.dirname(File.dirname(java_path))

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_libjvm_path # Fact: java_libjvm_path
# #
# Purpose: get path to libjvm.so # Purpose: get path to libjvm.so

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_major_version # Fact: java_major_version
# #
# Purpose: get Java's major version # Purpose: get Java's major version

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
# Fact: java_patch_level # Fact: java_patch_level
# #
# Purpose: get Java's patch level # Purpose: get Java's patch level

View File

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

View File

@@ -1,116 +1,47 @@
# Defined Type java::adopt # Defined Type java::adopt
# #
# Description # @summary
# Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM. # Install one or more versions of AdoptOpenJDK Java.
# #
# Install one or more versions of AdoptOpenJDK Java. # @param ensure
# Install or remove the package.
# #
# Currently only Linux RedHat, Amazon and Debian are supported. # @param version
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
# #
# Parameters # @param version_major
# [*version*] # Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor
# versions will be used.
# #
# [*version_major*] # @param version_minor
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with # Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). Must be used together with version_major.
# version_minor.
# #
# [*version_minor*] # @param java
# Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). # Type of Java Standard Edition to install, jdk or jre.
# Must be used together with version_major.
# #
# [*java_edition*] # @param proxy_server
# Type of Java Edition to install, jdk or jre. # Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
# #
# [*ensure*] # @param proxy_type
# Install or remove the package. # Proxy server type (none|http|https|ftp). (passed to archive)
# #
# [*proxy_server*] # @param basedir
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive) # Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
# #
# [*proxy_type*] # @param manage_basedir
# Proxy server type (none|http|https|ftp). (passed to archive) # Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
# #
# [*basedir*] # @param package_type
# Directory under which the installation will occur. If not set, defaults to # Type of installation package for specified version of java_se. java_se 6 comes
# /usr/lib/jvm for Debian and /usr/java for RedHat. # in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
# #
# [*manage_basedir*] # @param manage_symlink
# Whether to manage the basedir directory. Defaults to false. # Whether to manage a symlink that points to the installation directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
# #
# [*package_type*] # @param symlink_name
# Type of installation package for specified version of java. java 6 comes # The name for the optional symlink in the installation directory.
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# Variables
# [*release_major*]
# Major version release number for java. Used to construct download URL.
#
# [*release_minor*]
# Minor version release number for java. Used to construct download URL.
#
# [*install_path*]
# Base install path for specified version of java. Used to determine if java
# has already been installed.
#
# [*os*]
# java OS type.
#
# [*destination*]
# Destination directory to save java installer to. Usually /tmp on Linux and
# C:\TEMP on Windows.
#
# [*creates_path*]
# Fully qualified path to java after it is installed. Used to determine if
# java is already installed.
#
# [*arch*]
# java architecture type.
#
# [*package_name*]
# Name of the java installation package to download from github.
#
# [*install_command*]
# Installation command used to install java. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*spacer*]
# Spacer to be used in github download url. In major version 8 this is a simple dash
# in later versions they use a crazy plus sign, which needs to be used in urlencoded
# format
#
# [*download_folder_prefix*]
# Download folder name begins differently depending on the release. After major release
# 8, they have given it a dash. Be aware that even if you want to have a JRE, the folder
# still begins with "jdk"
#
# [*release_minor_url*]
# filled depending on major release. Until major release 8 the minor part needs to be given
# with a 'b' for build, in later versions it is a underscore or a plus sign, which needs
# to be stripped for the download url and is replaced with the given spaces (see above)
#
# [*_package_type*]
# Helper variable which gets filled depending on parameter package_type
#
# [*_basedir*]
# Helper variable which gets filled depending on parameter basedir
#
# [*_version*]
# Helper variable which gets filled depending on parameter version
#
# [*_version_int*]
# Helper variable which gets the value of $_version converted to integer
#
# [*_append_jre*]
# Helper variable which gets filled with the string "-jre" if jre was selected to build the correct install path
#
# [*_release_minor_package_name*]
# Helper variable which gets filled with the right minor string depending on the major version
# #
define java::adopt ( define java::adopt (
$ensure = 'present', $ensure = 'present',
@@ -123,6 +54,8 @@ define java::adopt (
$basedir = undef, $basedir = undef,
$manage_basedir = true, $manage_basedir = true,
$package_type = undef, $package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) { ) {
# archive module is used to download the java package # archive module is used to download the java package
@@ -357,6 +290,14 @@ define java::adopt (
require => $install_requires 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 : { default : {
fail ("unsupported platform ${$facts['kernel']}") fail ("unsupported platform ${$facts['kernel']}")

View File

@@ -142,7 +142,7 @@ class java::params {
}, },
} }
} }
'10', '18.04', '18.10', '19.04', '19.10': { '10', '18.04', '18.10', '19.04', '19.10', '20.04': {
$java = { $java = {
'jdk' => { 'jdk' => {
'package' => 'openjdk-11-jdk', 'package' => 'openjdk-11-jdk',

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", "name": "puppetlabs-java",
"version": "6.2.0", "version": "7.0.0",
"author": "puppetlabs", "author": "puppetlabs",
"summary": "Installs the correct Java package on various platforms.", "summary": "Installs the correct Java package on various platforms.",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -10,7 +10,7 @@
"dependencies": [ "dependencies": [
{ {
"name": "puppetlabs/stdlib", "name": "puppetlabs/stdlib",
"version_requirement": ">= 4.13.1 < 7.0.0" "version_requirement": ">= 4.13.1 < 8.0.0"
}, },
{ {
"name": "puppet/archive", "name": "puppet/archive",
@@ -21,7 +21,6 @@
{ {
"operatingsystem": "RedHat", "operatingsystem": "RedHat",
"operatingsystemrelease": [ "operatingsystemrelease": [
"5",
"6", "6",
"7", "7",
"8" "8"
@@ -30,7 +29,6 @@
{ {
"operatingsystem": "CentOS", "operatingsystem": "CentOS",
"operatingsystemrelease": [ "operatingsystemrelease": [
"5",
"6", "6",
"7", "7",
"8" "8"
@@ -62,13 +60,13 @@
"operatingsystemrelease": [ "operatingsystemrelease": [
"14.04", "14.04",
"16.04", "16.04",
"18.04" "18.04",
"20.04"
] ]
}, },
{ {
"operatingsystem": "SLES", "operatingsystem": "SLES",
"operatingsystemrelease": [ "operatingsystemrelease": [
"11",
"12", "12",
"15" "15"
] ]
@@ -77,10 +75,10 @@
"requirements": [ "requirements": [
{ {
"name": "puppet", "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-url": "https://github.com/puppetlabs/pdk-templates.git#main",
"template-ref": "heads/master-0-g88c96ab", "template-ref": "heads/main-0-g2bf2de6",
"pdk-version": "1.16.0" "pdk-version": "1.18.1"
} }

View File

@@ -1,22 +1,69 @@
--- ---
default: default:
provisioner: docker provisioner: docker
images: ['waffleimage/debian8'] images:
- litmusimage/debian:8
vagrant: vagrant:
provisioner: vagrant provisioner: vagrant
images: ['centos/7', 'generic/ubuntu1804'] images:
- centos/7
- generic/ubuntu1804
travis_deb: travis_deb:
provisioner: docker provisioner: docker
images: ['waffleimage/debian8', 'waffleimage/debian9', 'waffleimage/debian10'] images:
travis_ub: - litmusimage/debian:8
- litmusimage/debian:9
- litmusimage/debian:10
travis_ub_6:
provisioner: docker provisioner: docker
images: ['waffleimage/ubuntu14.04', 'waffleimage/ubuntu16.04', 'waffleimage/ubuntu18.04'] images:
travis_el6: - litmusimage/ubuntu:14.04
provisioner: docker - litmusimage/ubuntu:16.04
images: ['waffleimage/centos6', 'waffleimage/oraclelinux6', 'waffleimage/scientificlinux6'] - litmusimage/ubuntu:18.04
- litmusimage/ubuntu:20.04
travis_el7: travis_el7:
provisioner: docker provisioner: docker
images: ['waffleimage/centos7', 'waffleimage/oraclelinux7', 'waffleimage/scientificlinux7'] images:
release_checks: - litmusimage/centos:7
provisioner: vmpooler - litmusimage/oraclelinux:7
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'] - 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,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper_acceptance' require 'spec_helper_acceptance'
require 'pry' require 'pry'
@@ -138,84 +140,145 @@ install_adopt_jdk_jre = <<EOL
} }
EOL EOL
context 'installing java jre', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do sap_enabled = true
it 'installs jre' do sap_version7 = '7'
idempotent_apply(java_class_jre) sap_version7_full = '7.1.072'
end sap_version8 = '8'
end sap_version8_full = '8.1.065'
sap_version11 = '11'
sap_version11_full = '11.0.7'
sap_version14 = '14'
sap_version14_full = '14.0.1'
context 'installing java jdk', unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do install_sap_jdk_jre = <<EOL
it 'installs jdk' do java::sap {
idempotent_apply(java_class) 'test_sap_jdk_version7':
end version => '#{sap_version7}',
end 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
context 'with failure cases' do describe 'installing' do
it 'fails to install java with a blank version' do context 'installing java jre' do
apply_manifest(blank_version, expect_failures: true) it 'installs jre' do
idempotent_apply(java_class_jre)
end
end end
it 'fails to install java with an incorrect distribution' do context 'installing java jdk' do
apply_manifest(incorrect_distro, expect_failures: true) it 'installs jdk' do
idempotent_apply(java_class)
end
end end
it 'fails to install java with a blank distribution' do context 'with failure cases' do
apply_manifest(blank_distro, expect_failures: true) it 'fails to install java with a blank version' do
apply_manifest(blank_version, expect_failures: true)
end
it 'fails to install java with an incorrect distribution' do
apply_manifest(incorrect_distro, expect_failures: true)
end
it 'fails to install java with a blank distribution' do
apply_manifest(blank_distro, expect_failures: true)
end
it 'fails to install java with an incorrect package' do
apply_manifest(incorrect_package, expect_failures: true)
end
it 'fails on debian or RHEL when passed fake java_alternative and path' do
if os[:family] == 'sles'
apply_manifest(bogus_alternative, catch_failures: true)
else
apply_manifest(bogus_alternative, expect_failures: true)
end
end
end end
it 'fails to install java with an incorrect package' do context 'java::oracle', if: oracle_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
apply_manifest(incorrect_package, expect_failures: true) 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 end
it 'fails on debian or RHEL when passed fake java_alternative and path' do context 'java::adopt', if: adopt_enabled, unless: UNSUPPORTED_PLATFORMS.include?(os[:family]) do
if os[:family] == 'sles' let(:install_path) do
apply_manifest(bogus_alternative, catch_failures: true) (os[:family] == 'redhat') ? '/usr/java' : '/usr/lib/jvm'
else end
apply_manifest(bogus_alternative, expect_failures: true)
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 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

View File

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

View File

@@ -1,9 +1,34 @@
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe 'java::adopt', type: :define do describe 'java::adopt', type: :define do
context 'with CentOS 64-bit' do context 'with CentOS 64-bit' do
let(:facts) { { kernel: 'Linux', os: { family: 'RedHat', architecture: 'x86_64', name: 'CentOS', release: { full: '6.0' } } } } 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 context 'when AdoptOpenJDK Java 8 JDK' do
let(:params) { { ensure: 'present', version: '8', java: 'jdk' } } let(:params) { { ensure: 'present', version: '8', java: 'jdk' } }
let(:title) { 'jdk8' } let(:title) { 'jdk8' }

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe 'java::download', type: :define do 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') } it { is_expected.to contain_file('/usr/java/java_home') }
end 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 end
context 'with Ubuntu 64-bit' do 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

@@ -42,6 +42,7 @@ RSpec.configure do |c|
# set to strictest setting for testing # set to strictest setting for testing
# by default Puppet runs at warning level # by default Puppet runs at warning level
Puppet.settings[:strict] = :warning Puppet.settings[:strict] = :warning
Puppet.settings[:strict_variables] = true
end end
c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT'] c.filter_run_excluding(bolt: true) unless ENV['GEM_BOLT']
c.after(:suite) do c.after(:suite) do

View File

@@ -1,82 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require 'serverspec'
require 'puppet_litmus' require 'puppet_litmus'
require 'spec_helper_acceptance_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_acceptance_local.rb')) 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' PuppetLitmus.configure!
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

View File

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

View File

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

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
java_7_path = '/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java' 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' require 'spec_helper'
describe 'java_libjvm_path' do describe 'java_libjvm_path' do

View File

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

View File

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

View File

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