diff --git a/.editorconfig b/.editorconfig
index d77700e..ecb10a8 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,6 +1,7 @@
# editorconfig.org
-# MANAGED BY MODULESYNC
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
root = true
diff --git a/.fixtures.yml b/.fixtures.yml
index 4d4db48..1841595 100644
--- a/.fixtures.yml
+++ b/.fixtures.yml
@@ -2,7 +2,6 @@ fixtures:
repositories:
apt: "https://github.com/puppetlabs/puppetlabs-apt.git"
stdlib: "https://github.com/puppetlabs/puppetlabs-stdlib.git"
- yum: "https://github.com/voxpupuli/puppet-yum.git"
yumrepo_core:
repo: "https://github.com/puppetlabs/puppetlabs-yumrepo_core.git"
puppet_version: ">= 6.0.0"
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index f1f88cc..daceb64 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -25,7 +25,7 @@ By participating in this project you agree to abide by its terms.
* Fork the repo.
* Create a separate branch for your change.
-* We only take pull requests with passing tests, and documentation. [travis-ci](http://travis-ci.org) runs the tests for us. You can also execute them locally. This is explained [in a later section](#the-test-matrix).
+* We only take pull requests with passing tests, and documentation. [GitHub Actions](https://docs.github.com/en/actions) run the tests for us. You can also execute them locally. This is explained [in a later section](#the-test-matrix).
* Checkout [our docs](https://voxpupuli.org/docs/reviewing_pr/) we use to review a module and the [official styleguide](https://puppet.com/docs/puppet/6.0/style_guide.html). They provide some guidance for new code that might help you before you submit a pull request.
* Add a test for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, please add a test.
* Squash your commits down into logical components. Make sure to rebase against our current master.
@@ -124,26 +124,36 @@ If you have Ruby 2.x or want a specific version of Puppet,
you must set an environment variable such as:
```sh
-export PUPPET_VERSION="~> 5.5.6"
+export PUPPET_GEM_VERSION="~> 6.1.0"
```
You can install all needed gems for spec tests into the modules directory by
running:
```sh
-bundle install --path .vendor/ --without development system_tests release --jobs "$(nproc)"
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development system_tests release'
+bundle install --jobs "$(nproc)"
```
If you also want to run acceptance tests:
```sh
-bundle install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development release'
+bundle config set --local with 'system_tests'
+bundle install --jobs "$(nproc)"
```
Our all in one solution if you don't know if you need to install or update gems:
```sh
-bundle install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"; bundle update; bundle clean
+bundle config set --local path '.vendor/'
+bundle config set --local without 'development release'
+bundle config set --local with 'system_tests'
+bundle install --jobs "$(nproc)"
+bundle update
+bundle clean
```
As an alternative to the `--jobs "$(nproc)` parameter, you can set an
@@ -232,51 +242,31 @@ simple tests against it after applying the module. You can run this
with:
```sh
-bundle exec rake beaker
+BEAKER_PUPPET_COLLECTION=puppet7 BEAKER_setfile=debian11-64 bundle exec rake beaker
```
-This will run the tests on the module's default nodeset. You can override the
-nodeset used, e.g.,
+or
```sh
-BEAKER_set=centos-7-x64 bundle exec rake beaker
+BEAKER_PUPPET_COLLECTION=none BEAKER_setfile=archlinux-64 bundle exec rake beaker
```
-There are default rake tasks for the various acceptance test modules, e.g.,
+This latter example will use the distribution's own version of Puppet.
-```sh
-bundle exec rake beaker:centos-7-x64
-bundle exec rake beaker:ssh:centos-7-x64
-```
-
-If you don't want to have to recreate the virtual machine every time you can
-use `BEAKER_destroy=no` and `BEAKER_provision=no`. On the first run you will at
-least need `BEAKER_provision` set to yes (the default). The Vagrantfile for the
-created virtual machines will be in `.vagrant/beaker_vagrant_files`.
-
-Beaker also supports docker containers. We also use that in our automated CI
-pipeline at [travis-ci](http://travis-ci.org). To use that instead of Vagrant:
-
-```sh
-PUPPET_INSTALL_TYPE=agent BEAKER_IS_PE=no BEAKER_PUPPET_COLLECTION=puppet6 BEAKER_debug=true BEAKER_setfile=debian10-64{hypervisor=docker} BEAKER_destroy=yes bundle exec rake beaker
-```
-
-You can replace the string `debian10` with any common operating system.
+You can replace the string `debian11` with any common operating system.
The following strings are known to work:
-* ubuntu1604
-* ubuntu1804
* ubuntu2004
-* debian9
-* debian10
-* centos7
-* centos8
+* ubuntu2204
+* debian11
+* debian12
+* centos9
+* archlinux
+* almalinux8
+* almalinux9
+* fedora36
-The easiest way to debug in a docker container is to open a shell:
-
-```sh
-docker exec -it -u root ${container_id_or_name} bash
-```
+For more information and tips & tricks, see [voxpupuli-acceptance's documentation](https://github.com/voxpupuli/voxpupuli-acceptance#running-tests).
The source of this file is in our [modulesync_config](https://github.com/voxpupuli/modulesync_config/blob/master/moduleroot/.github/CONTRIBUTING.md.erb)
repository.
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
deleted file mode 100644
index cacadf2..0000000
--- a/.github/SECURITY.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Vox Pupuli Security Policy
-
-Our vulnerabilities reporting process is at https://voxpupuli.org/security/
diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 0000000..f2d08d6
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,6 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+skip-changelog:
+ - head-branch: ['^release-*', 'release']
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000..f5b5d7a
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,42 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
+
+changelog:
+ exclude:
+ labels:
+ - duplicate
+ - invalid
+ - modulesync
+ - question
+ - skip-changelog
+ - wont-fix
+ - wontfix
+
+ categories:
+ - title: Breaking Changes đ
+ labels:
+ - backwards-incompatible
+
+ - title: New Features đ
+ labels:
+ - enhancement
+
+ - title: Bug Fixes đ
+ labels:
+ - bug
+
+ - title: Documentation Updates đ
+ labels:
+ - documentation
+ - docs
+
+ - title: Dependency Updates âŹď¸
+ labels:
+ - dependencies
+
+ - title: Other Changes
+ labels:
+ - "*"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b4f47e8..8c32acf 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,75 +1,22 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
name: CI
-on: pull_request
+# yamllint disable-line rule:truthy
+on:
+ pull_request: {}
+ push:
+ branches:
+ - main
+ - master
+
+concurrency:
+ group: ${{ github.ref_name }}
+ cancel-in-progress: true
jobs:
- setup_matrix:
- name: 'Setup Test Matrix'
- runs-on: ubuntu-latest
- outputs:
- beaker_setfiles: ${{ steps.get-outputs.outputs.beaker_setfiles }}
- puppet_major_versions: ${{ steps.get-outputs.outputs.puppet_major_versions }}
- puppet_unit_test_matrix: ${{ steps.get-outputs.outputs.puppet_unit_test_matrix }}
- env:
- BUNDLE_WITHOUT: development:test:release
- steps:
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '2.7'
- bundler-cache: true
- - name: Run rake validate
- run: bundle exec rake validate
- - name: Setup Test Matrix
- id: get-outputs
- run: bundle exec metadata2gha --use-fqdn --pidfile-workaround false
-
- unit:
- needs: setup_matrix
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- include: ${{fromJson(needs.setup_matrix.outputs.puppet_unit_test_matrix)}}
- env:
- BUNDLE_WITHOUT: development:system_tests:release
- PUPPET_VERSION: "~> ${{ matrix.puppet }}.0"
- name: Puppet ${{ matrix.puppet }} (Ruby ${{ matrix.ruby }})
- steps:
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: ${{ matrix.ruby }}
- bundler-cache: true
- - name: Run tests
- run: bundle exec rake
-
- acceptance:
- needs: setup_matrix
- runs-on: ubuntu-latest
- env:
- BUNDLE_WITHOUT: development:test:release
- strategy:
- fail-fast: false
- matrix:
- setfile: ${{fromJson(needs.setup_matrix.outputs.beaker_setfiles)}}
- puppet: ${{fromJson(needs.setup_matrix.outputs.puppet_major_versions)}}
- name: ${{ matrix.puppet.name }} - ${{ matrix.setfile.name }}
- steps:
- - name: Enable IPv6 on docker
- run: |
- echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json
- sudo service docker restart
- - uses: actions/checkout@v2
- - name: Setup ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '2.7'
- bundler-cache: true
- - name: Run tests
- run: bundle exec rake beaker
- env:
- BEAKER_PUPPET_COLLECTION: ${{ matrix.puppet.collection }}
- BEAKER_setfile: ${{ matrix.setfile.value }}
+ puppet:
+ name: Puppet
+ uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v3
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
new file mode 100644
index 0000000..73be88d
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,18 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+name: "Pull Request Labeler"
+
+# yamllint disable-line rule:truthy
+on:
+ pull_request_target: {}
+
+jobs:
+ labeler:
+ permissions:
+ contents: read
+ pull-requests: write
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/labeler@v5
diff --git a/.github/workflows/prepare_release.yml b/.github/workflows/prepare_release.yml
new file mode 100644
index 0000000..01efa1a
--- /dev/null
+++ b/.github/workflows/prepare_release.yml
@@ -0,0 +1,23 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+name: 'Prepare Release'
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Module version to be released. Must be a valid semver string without leading v. (1.2.3)'
+ required: false
+
+jobs:
+ release_prep:
+ uses: 'voxpupuli/gha-puppet/.github/workflows/prepare_release.yml@v3'
+ with:
+ version: ${{ github.event.inputs.version }}
+ allowed_owner: 'voxpupuli'
+ secrets:
+ # Configure secrets here:
+ # https://docs.github.com/en/actions/security-guides/encrypted-secrets
+ github_pat: '${{ secrets.PCCI_PAT_RELEASE_PREP }}'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 68b8528..3db60fb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,29 +1,23 @@
+---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
name: Release
+# yamllint disable-line rule:truthy
on:
push:
tags:
- '*'
-env:
- BUNDLE_WITHOUT: development:test:system_tests
-
jobs:
- deploy:
- name: 'deploy to forge'
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
- - name: Setup Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: '2.7'
- bundler-cache: true
- - name: Build and Deploy
- env:
- # Configure secrets here:
- # https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets
- BLACKSMITH_FORGE_USERNAME: '${{ secrets.PUPPET_FORGE_USERNAME }}'
- BLACKSMITH_FORGE_API_KEY: '${{ secrets.PUPPET_FORGE_API_KEY }}'
- run: bundle exec rake module:push
+ release:
+ name: Release
+ uses: voxpupuli/gha-puppet/.github/workflows/release.yml@v3
+ with:
+ allowed_owner: 'voxpupuli'
+ secrets:
+ # Configure secrets here:
+ # https://docs.github.com/en/actions/security-guides/encrypted-secrets
+ username: ${{ secrets.PUPPET_FORGE_USERNAME }}
+ api_key: ${{ secrets.PUPPET_FORGE_API_KEY }}
diff --git a/.gitignore b/.gitignore
index e9b3cf4..adea1b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,20 +1,25 @@
-pkg/
-Gemfile.lock
-Gemfile.local
-vendor/
-.vendor/
-spec/fixtures/manifests/
-spec/fixtures/modules/
-.vagrant/
-.bundle/
-.ruby-version
-coverage/
-log/
-.idea/
-.dependencies/
-.librarian/
-Puppetfile.lock
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+/pkg/
+/Gemfile.lock
+/Gemfile.local
+/vendor/
+/.vendor/
+/spec/fixtures/manifests/
+/spec/fixtures/modules/
+/.vagrant/
+/.bundle/
+/.ruby-version
+/coverage/
+/log/
+/.idea/
+/.dependencies/
+/.librarian/
+/Puppetfile.lock
*.iml
.*.sw?
-.yardoc/
-Guardfile
+/.yardoc/
+/Guardfile
+bolt-debug.log
+.rerun.json
diff --git a/.msync.yml b/.msync.yml
index a0770a8..32df814 100644
--- a/.msync.yml
+++ b/.msync.yml
@@ -1,2 +1,5 @@
---
-modulesync_config_version: '4.0.0'
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+modulesync_config_version: '9.5.0'
diff --git a/.overcommit.yml b/.overcommit.yml
index 0af0fdc..4ed994c 100644
--- a/.overcommit.yml
+++ b/.overcommit.yml
@@ -1,4 +1,5 @@
-# Managed by https://github.com/voxpupuli/modulesync_configs
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
#
# Hooks are only enabled if you take action.
#
@@ -42,10 +43,12 @@ PreCommit:
enabled: true
description: 'Runs rubocop on modified files only'
command: ['bundle', 'exec', 'rubocop']
- PuppetLint:
+ RakeTarget:
enabled: true
- description: 'Runs puppet-lint on modified files only'
- command: ['bundle', 'exec', 'puppet-lint']
+ description: 'Runs lint on modified files only'
+ targets:
+ - 'lint'
+ command: ['bundle', 'exec', 'rake']
YamlSyntax:
enabled: true
JsonSyntax:
diff --git a/.pmtignore b/.pmtignore
index 33a8c65..a9d37aa 100644
--- a/.pmtignore
+++ b/.pmtignore
@@ -1,34 +1,39 @@
-docs/
-pkg/
-Gemfile
-Gemfile.lock
-Gemfile.local
-vendor/
-.vendor/
-spec/
-Rakefile
-.vagrant/
-.bundle/
-.ruby-version
-coverage/
-log/
-.idea/
-.dependencies/
-.github/
-.librarian/
-Puppetfile.lock
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+/docs/
+/pkg/
+/Gemfile
+/Gemfile.lock
+/Gemfile.local
+/vendor/
+/.vendor/
+/spec/
+/Rakefile
+/.vagrant/
+/.bundle/
+/.ruby-version
+/coverage/
+/log/
+/.idea/
+/.dependencies/
+/.github/
+/.librarian/
+/Puppetfile.lock
+/Puppetfile
*.iml
-.editorconfig
-.fixtures.yml
-.gitignore
-.msync.yml
-.overcommit.yml
-.pmtignore
-.rspec
-.rspec_parallel
-.rubocop.yml
-.sync.yml
+/.editorconfig
+/.fixtures.yml
+/.gitignore
+/.msync.yml
+/.overcommit.yml
+/.pmtignore
+/.rspec
+/.rspec_parallel
+/.rubocop.yml
+/.sync.yml
.*.sw?
-.yardoc/
-.yardopts
-Dockerfile
+/.yardoc/
+/.yardopts
+/Dockerfile
+/HISTORY.md
diff --git a/.puppet-lint.rc b/.puppet-lint.rc
new file mode 100644
index 0000000..37817b6
--- /dev/null
+++ b/.puppet-lint.rc
@@ -0,0 +1,4 @@
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+--fail-on-warnings
diff --git a/.rspec b/.rspec
deleted file mode 100644
index 8c18f1a..0000000
--- a/.rspec
+++ /dev/null
@@ -1,2 +0,0 @@
---format documentation
---color
diff --git a/.rspec_parallel b/.rspec_parallel
deleted file mode 100644
index e4d136b..0000000
--- a/.rspec_parallel
+++ /dev/null
@@ -1 +0,0 @@
---format progress
diff --git a/.rubocop.yml b/.rubocop.yml
index 198a359..53ac189 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,3 +1,6 @@
---
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
inherit_gem:
voxpupuli-test: rubocop.yml
diff --git a/.sync.yml b/.sync.yml
new file mode 100644
index 0000000..130aaeb
--- /dev/null
+++ b/.sync.yml
@@ -0,0 +1,5 @@
+---
+.puppet-lint.rc:
+ enabled_lint_checks:
+ - parameter_documentation
+ - parameter_types
diff --git a/.yardopts b/.yardopts
deleted file mode 100644
index 3687f51..0000000
--- a/.yardopts
+++ /dev/null
@@ -1,2 +0,0 @@
---markup markdown
---output-dir docs/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 599befd..05414e3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,14 +4,102 @@ All notable changes to this project will be documented in this file.
Each new release typically also includes the latest modulesync defaults.
These should not affect the functionality of the module.
-## [v1.0.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v1.0.0) (2021-01-16)
+## [v3.3.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v3.3.0) (2025-02-11)
-[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/d9ceffd75b1f222e1145d58cceaf3a9bcb41b360...v1.0.0)
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v3.2.0...v3.3.0)
**Merged pull requests:**
+- Add Ubuntu 24.04 support [\#47](https://github.com/voxpupuli/puppet-hashi_stack/pull/47) ([bastelfreak](https://github.com/bastelfreak))
+- puppetlabs/apt: Allow 10.x [\#45](https://github.com/voxpupuli/puppet-hashi_stack/pull/45) ([bastelfreak](https://github.com/bastelfreak))
+
+## [v3.2.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v3.2.0) (2024-03-24)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v3.1.0...v3.2.0)
+
+**Implemented enhancements:**
+
+- Add support for AArch64/ARM64 binaries [\#36](https://github.com/voxpupuli/puppet-hashi_stack/pull/36) ([rgrizzell](https://github.com/rgrizzell))
+
+## [v3.1.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v3.1.0) (2023-11-19)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v3.0.0...v3.1.0)
+
+**Implemented enhancements:**
+
+- Add Debian 12 support [\#34](https://github.com/voxpupuli/puppet-hashi_stack/pull/34) ([bastelfreak](https://github.com/bastelfreak))
+
+## [v3.0.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v3.0.0) (2023-08-19)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v2.2.0...v3.0.0)
+
+**Breaking changes:**
+
+- Drop Puppet 6 support [\#28](https://github.com/voxpupuli/puppet-hashi_stack/pull/28) ([bastelfreak](https://github.com/bastelfreak))
+
+**Implemented enhancements:**
+
+- Add Ubuntu 22.04 support [\#32](https://github.com/voxpupuli/puppet-hashi_stack/pull/32) ([bastelfreak](https://github.com/bastelfreak))
+- Add Debian 11 support [\#31](https://github.com/voxpupuli/puppet-hashi_stack/pull/31) ([bastelfreak](https://github.com/bastelfreak))
+- Add EL9 support [\#30](https://github.com/voxpupuli/puppet-hashi_stack/pull/30) ([bastelfreak](https://github.com/bastelfreak))
+- Add AlmaLinux/Rocky/OracleLinux support [\#29](https://github.com/voxpupuli/puppet-hashi_stack/pull/29) ([bastelfreak](https://github.com/bastelfreak))
+- Add Puppet 8 support [\#27](https://github.com/voxpupuli/puppet-hashi_stack/pull/27) ([bastelfreak](https://github.com/bastelfreak))
+- puppetlabs/stdlib: Allow 9.x [\#26](https://github.com/voxpupuli/puppet-hashi_stack/pull/26) ([bastelfreak](https://github.com/bastelfreak))
+
+## [v2.2.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v2.2.0) (2023-01-27)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v2.1.0...v2.2.0)
+
+**Implemented enhancements:**
+
+- add toggle for enabling yum repo [\#21](https://github.com/voxpupuli/puppet-hashi_stack/pull/21) ([wimkorevaar](https://github.com/wimkorevaar))
+
+**Merged pull requests:**
+
+- use new gpg key [\#22](https://github.com/voxpupuli/puppet-hashi_stack/pull/22) ([BDelacour](https://github.com/BDelacour))
+
+## [v2.1.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v2.1.0) (2022-08-28)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v2.0.1...v2.1.0)
+
+**Implemented enhancements:**
+
+- Add support for repo\_gpgcheck to the hashicorp yum repo [\#15](https://github.com/voxpupuli/puppet-hashi_stack/pull/15) ([hammondr](https://github.com/hammondr))
+
+**Merged pull requests:**
+
+- puppetlabs/apt: Allow 9.x [\#17](https://github.com/voxpupuli/puppet-hashi_stack/pull/17) ([bastelfreak](https://github.com/bastelfreak))
+- Fix Ubuntu18/puppet6 CI job [\#16](https://github.com/voxpupuli/puppet-hashi_stack/pull/16) ([bastelfreak](https://github.com/bastelfreak))
+
+## [v2.0.1](https://github.com/voxpupuli/puppet-hashi_stack/tree/v2.0.1) (2021-08-27)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v2.0.0...v2.0.1)
+
+**Merged pull requests:**
+
+- Release 2.0.1 [\#10](https://github.com/voxpupuli/puppet-hashi_stack/pull/10) ([smortex](https://github.com/smortex))
+- Allow stdlib 8.0.0 [\#8](https://github.com/voxpupuli/puppet-hashi_stack/pull/8) ([smortex](https://github.com/smortex))
+
+## [v2.0.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v2.0.0) (2021-05-11)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/v1.0.0...v2.0.0)
+
+**Breaking changes:**
+
+- Drop EoL Debian, adjust deps for Puppet 6 & 7 [\#6](https://github.com/voxpupuli/puppet-hashi_stack/pull/6) ([genebean](https://github.com/genebean))
+
+**Implemented enhancements:**
+
+- Allow customising the base URL of the Yum repository [\#5](https://github.com/voxpupuli/puppet-hashi_stack/pull/5) ([nbarrientos](https://github.com/nbarrientos))
+- Enable Puppet 7 support/testing [\#4](https://github.com/voxpupuli/puppet-hashi_stack/pull/4) ([bastelfreak](https://github.com/bastelfreak))
+
+## [v1.0.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v1.0.0) (2021-01-17)
+
+[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/d9ceffd75b1f222e1145d58cceaf3a9bcb41b360...v1.0.0)
+
+**Implemented enhancements:**
+
- moving parameters into appropriate place, adding meaning unit test, f⌠[\#2](https://github.com/voxpupuli/puppet-hashi_stack/pull/2) ([attachmentgenie](https://github.com/attachmentgenie))
-- modulesync 4.0.0-10-g1c946c3 [\#1](https://github.com/voxpupuli/puppet-hashi_stack/pull/1) ([attachmentgenie](https://github.com/attachmentgenie))
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 6fd6342..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-FROM ruby:2.5.3
-
-WORKDIR /opt/puppet
-
-# https://github.com/puppetlabs/puppet/blob/06ad255754a38f22fb3a22c7c4f1e2ce453d01cb/lib/puppet/provider/service/runit.rb#L39
-RUN mkdir -p /etc/sv
-
-ARG PUPPET_VERSION="~> 6.0"
-ARG PARALLEL_TEST_PROCESSORS=4
-
-# Cache gems
-COPY Gemfile .
-RUN bundle install --without system_tests development release --path=${BUNDLE_PATH:-vendor/bundle}
-
-COPY . .
-
-RUN bundle install
-RUN bundle exec rake release_checks
-
-# Container should not saved
-RUN exit 1
diff --git a/Gemfile b/Gemfile
index 0d0a9fb..ea079b0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,9 +1,13 @@
-source ENV['GEM_SOURCE'] || "https://rubygems.org"
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+source ENV['GEM_SOURCE'] || 'https://rubygems.org'
group :test do
- gem 'voxpupuli-test', '~> 2.1', :require => false
- gem 'coveralls', :require => false
- gem 'simplecov-console', :require => false
+ gem 'voxpupuli-test', '~> 9.0', :require => false
+ gem 'coveralls', :require => false
+ gem 'simplecov-console', :require => false
+ gem 'puppet_metadata', '~> 5.0', :require => false
end
group :development do
@@ -12,22 +16,17 @@ group :development do
end
group :system_tests do
- gem 'puppet_metadata', '~> 0.3.0', :require => false
- gem 'voxpupuli-acceptance', :require => false
+ gem 'voxpupuli-acceptance', '~> 3.5', :require => false
end
group :release do
- gem 'github_changelog_generator', :require => false, :git => 'https://github.com/voxpupuli/github-changelog-generator', :branch => 'voxpupuli_essential_fixes'
- gem 'puppet-blacksmith', :require => false
- gem 'voxpupuli-release', :require => false
- gem 'puppet-strings', '>= 2.2', :require => false
+ gem 'voxpupuli-release', '~> 3.0', :require => false
end
-gem 'puppetlabs_spec_helper', '~> 2.0', :require => false
gem 'rake', :require => false
gem 'facter', ENV['FACTER_GEM_VERSION'], :require => false, :groups => [:test]
-puppetversion = ENV['PUPPET_VERSION'] || '~> 6.0'
+puppetversion = ENV['PUPPET_GEM_VERSION'] || [">= 7.24", "< 9"]
gem 'puppet', puppetversion, :require => false, :groups => [:test]
# vim: syntax=ruby
diff --git a/REFERENCE.md b/REFERENCE.md
index abfbe26..a61d1a8 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -6,11 +6,11 @@
### Classes
-* [`hashi_stack::repo`](#hashi_stackrepo): Set up the package repository for the HashiCorp Stack components
+* [`hashi_stack::repo`](#hashi_stack--repo): Set up the package repository for the HashiCorp Stack components
## Classes
-### `hashi_stack::repo`
+### `hashi_stack::repo`
This class installs the hashicorp repository
@@ -34,17 +34,26 @@ package { 'packer':
#### Parameters
-The following parameters are available in the `hashi_stack::repo` class.
+The following parameters are available in the `hashi_stack::repo` class:
-##### `priority`
+* [`priority`](#-hashi_stack--repo--priority)
+* [`proxy`](#-hashi_stack--repo--proxy)
+* [`key_id`](#-hashi_stack--repo--key_id)
+* [`key_source`](#-hashi_stack--repo--key_source)
+* [`description`](#-hashi_stack--repo--description)
+* [`rpm_base`](#-hashi_stack--repo--rpm_base)
+* [`repo_gpgcheck`](#-hashi_stack--repo--repo_gpgcheck)
+* [`repo_enabled`](#-hashi_stack--repo--repo_enabled)
+
+##### `priority`
Data type: `Optional[Integer]`
A numeric priority for the repo, passed to the package management system
-Default value: ``undef``
+Default value: `undef`
-##### `proxy`
+##### `proxy`
Data type: `String`
@@ -52,15 +61,15 @@ The URL of a HTTP proxy to use for package downloads (YUM only)
Default value: `'absent'`
-##### `key_id`
+##### `key_id`
Data type: `String`
GPG key to authenticate Apt package signatures.
-Default value: `'E8A032E094D8EB4EA189D270DA418C88A3219F7B'`
+Default value: `'798AEC654E5C15428C8E42EEAA16FCBCA621E701'`
-##### `key_source`
+##### `key_source`
Data type: `Stdlib::HTTPSUrl`
@@ -68,7 +77,7 @@ The location of an existing GPG key file to copy.
Default value: `'https://apt.releases.hashicorp.com/gpg'`
-##### `description`
+##### `description`
Data type: `String`
@@ -76,3 +85,27 @@ Repository description
Default value: `'HashiCorp package repository.'`
+##### `rpm_base`
+
+Data type: `String`
+
+Base URL for the Yum repository
+
+Default value: `'https://rpm.releases.hashicorp.com'`
+
+##### `repo_gpgcheck`
+
+Data type: `Integer[0,1]`
+
+enables gpg validation of packages from the repo
+
+Default value: `0`
+
+##### `repo_enabled`
+
+Data type: `Integer[0,1]`
+
+enables/disables the repository
+
+Default value: `1`
+
diff --git a/Rakefile b/Rakefile
index d1bf749..c897f4b 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,9 +1,22 @@
-# Attempt to load voxupuli-test (which pulls in puppetlabs_spec_helper),
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
+
+# Attempt to load voxpupuli-test (which pulls in puppetlabs_spec_helper),
# otherwise attempt to load it directly.
begin
require 'voxpupuli/test/rake'
rescue LoadError
- require 'puppetlabs_spec_helper/rake_tasks'
+ begin
+ require 'puppetlabs_spec_helper/rake_tasks'
+ rescue LoadError
+ end
+end
+
+# load optional tasks for acceptance
+# only available if gem group releases is installed
+begin
+ require 'voxpupuli/acceptance/rake'
+rescue LoadError
end
# load optional tasks for releases
@@ -11,6 +24,10 @@ end
begin
require 'voxpupuli/release/rake_tasks'
rescue LoadError
+ # voxpupuli-release not present
+else
+ GCGConfig.user = 'voxpupuli'
+ GCGConfig.project = 'puppet-hashi_stack'
end
desc "Run main 'test' task and report merged results to coveralls"
@@ -24,38 +41,4 @@ task test_with_coveralls: [:test] do
end
end
-desc 'Generate REFERENCE.md'
-task :reference, [:debug, :backtrace] do |t, args|
- patterns = ''
- Rake::Task['strings:generate:reference'].invoke(patterns, args[:debug], args[:backtrace])
-end
-
-begin
- require 'github_changelog_generator/task'
- require 'puppet_blacksmith'
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
- version = (Blacksmith::Modulefile.new).version
- config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/
- config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module."
- config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog}
- config.user = 'voxpupuli'
- metadata_json = File.join(File.dirname(__FILE__), 'metadata.json')
- metadata = JSON.load(File.read(metadata_json))
- config.project = metadata['name']
- end
-
- # Workaround for https://github.com/github-changelog-generator/github-changelog-generator/issues/715
- require 'rbconfig'
- if RbConfig::CONFIG['host_os'] =~ /linux/
- task :changelog do
- puts 'Fixing line endings...'
- changelog_file = File.join(__dir__, 'CHANGELOG.md')
- changelog_txt = File.read(changelog_file)
- new_contents = changelog_txt.gsub(%r{\r\n}, "\n")
- File.open(changelog_file, "w") {|file| file.puts new_contents }
- end
- end
-
-rescue LoadError
-end
# vim: syntax=ruby
diff --git a/manifests/repo.pp b/manifests/repo.pp
index 8b4d3f2..58c6a92 100644
--- a/manifests/repo.pp
+++ b/manifests/repo.pp
@@ -17,20 +17,32 @@
# @param key_id GPG key to authenticate Apt package signatures.
# @param key_source The location of an existing GPG key file to copy.
# @param description Repository description
+# @param rpm_base Base URL for the Yum repository
+# @param repo_gpgcheck enables gpg validation of packages from the repo
+# @param repo_enabled enables/disables the repository
+#
class hashi_stack::repo (
Optional[Integer] $priority = undef,
String $proxy = 'absent',
- String $key_id = 'E8A032E094D8EB4EA189D270DA418C88A3219F7B',
+ String $key_id = '798AEC654E5C15428C8E42EEAA16FCBCA621E701',
Stdlib::HTTPSUrl $key_source = 'https://apt.releases.hashicorp.com/gpg',
String $description = 'HashiCorp package repository.',
+ String $rpm_base = 'https://rpm.releases.hashicorp.com',
+ Integer[0,1] $repo_gpgcheck = 0,
+ Integer[0,1] $repo_enabled = 1,
) {
+ $arch = $facts['os']['architecture'] ? {
+ 'aarch64' => 'arm64', # 'aarch64' is official, but Hashicorp uses 'arm64'
+ default => $facts['os']['architecture'],
+ }
+
case $facts['os']['family'] {
'Debian': {
include apt
apt::source { 'HashiCorp':
ensure => 'present',
- architecture => 'amd64',
+ architecture => $arch,
comment => $description,
location => 'https://apt.releases.hashicorp.com',
repos => 'main',
@@ -47,13 +59,14 @@ class hashi_stack::repo (
}
'RedHat': {
yumrepo { 'HashiCorp':
- descr => $description,
- baseurl => 'https://rpm.releases.hashicorp.com/RHEL/$releasever/$basearch/stable',
- gpgcheck => 1,
- gpgkey => $key_source,
- enabled => 1,
- proxy => $proxy,
- priority => $priority,
+ descr => $description,
+ baseurl => "${rpm_base}/RHEL/\$releasever/\$basearch/stable",
+ gpgcheck => 1,
+ gpgkey => $key_source,
+ repo_gpgcheck => $repo_gpgcheck,
+ enabled => $repo_enabled,
+ proxy => $proxy,
+ priority => $priority,
}
}
default: {
diff --git a/metadata.json b/metadata.json
index 248c728..6b66a0a 100644
--- a/metadata.json
+++ b/metadata.json
@@ -1,29 +1,20 @@
{
"name": "puppet-hashi_stack",
- "version": "1.0.0",
+ "version": "3.3.1-rc0",
"author": "Vox Pupuli",
"summary": "This module contains shared code for various HashiCorp modules",
"license": "AGPL-3.0",
"source": "https://github.com/voxpupuli/puppet-hashi_stack",
"project_page": "https://github.com/voxpupuli/puppet-hashi_stack",
"issues_url": "https://github.com/voxpupuli/puppet-hashi_stack/issues",
- "description": "This module contains shared code for various HashiCorp modules",
"dependencies": [
{
"name": "puppetlabs-stdlib",
- "version_requirement": ">= 4.13.1 < 7.0.0"
+ "version_requirement": ">= 5.1.0 < 10.0.0"
},
{
"name": "puppetlabs/apt",
- "version_requirement": ">= 2.0.0 < 8.0.0"
- },
- {
- "name": "puppet/yum",
- "version_requirement": ">= 0.9.6 < 5.0.0"
- },
- {
- "name": "puppetlabs/yumrepo_core",
- "version_requirement": ">= 1.0.0 < 2.0.0"
+ "version_requirement": ">= 6.1.0 < 11.0.0"
}
],
"operatingsystem_support": [
@@ -31,35 +22,65 @@
"operatingsystem": "RedHat",
"operatingsystemrelease": [
"7",
- "8"
+ "8",
+ "9"
+ ]
+ },
+ {
+ "operatingsystem": "OracleLinux",
+ "operatingsystemrelease": [
+ "8",
+ "9"
+ ]
+ },
+ {
+ "operatingsystem": "AlmaLinux",
+ "operatingsystemrelease": [
+ "8",
+ "9"
+ ]
+ },
+ {
+ "operatingsystem": "Rocky",
+ "operatingsystemrelease": [
+ "8",
+ "9"
]
},
{
"operatingsystem": "CentOS",
"operatingsystemrelease": [
"7",
- "8"
+ "8",
+ "9"
]
},
{
"operatingsystem": "Debian",
"operatingsystemrelease": [
- "9",
- "10"
+ "10",
+ "11",
+ "12"
]
},
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
"18.04",
- "20.04"
+ "20.04",
+ "22.04",
+ "24.04"
]
}
],
"requirements": [
{
"name": "puppet",
- "version_requirement": ">= 6.1.0 < 7.0.0"
+ "version_requirement": ">= 7.0.0 < 9.0.0"
+ },
+ {
+ "name": "openvox",
+ "version_requirement": ">= 7.0.0 < 9.0.0"
}
]
}
diff --git a/spec/acceptance/standard_spec.rb b/spec/acceptance/standard_spec.rb
index a21679d..c2f5690 100644
--- a/spec/acceptance/standard_spec.rb
+++ b/spec/acceptance/standard_spec.rb
@@ -1,10 +1,11 @@
+# frozen_string_literal: true
+
require 'spec_helper_acceptance'
describe 'hashi_stack::repo class' do
-
context 'default parameters' do
# Using puppet_apply as a helper
- it 'should work with no errors based on the example' do
+ it 'works with no errors based on the example' do
pp = <<-EOS
include hashi_stack::repo
package { 'packer':
diff --git a/spec/classes/repo_spec.rb b/spec/classes/repo_spec.rb
index ebcd550..8646a4a 100644
--- a/spec/classes/repo_spec.rb
+++ b/spec/classes/repo_spec.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
require 'spec_helper'
describe 'hashi_stack::repo' do
@@ -5,11 +7,31 @@ describe 'hashi_stack::repo' do
context "on #{os}" do
let(:facts) { os_facts }
+ it { is_expected.to compile.with_all_deps }
+
case os_facts[:os]['family']
when 'Debian'
it { is_expected.to contain_apt__source('HashiCorp') }
when 'RedHat'
- it { is_expected.to contain_yumrepo('HashiCorp') }
+ it {
+ expect(subject).to contain_yumrepo('HashiCorp').with(
+ baseurl: 'https://rpm.releases.hashicorp.com/RHEL/$releasever/$basearch/stable'
+ )
+ }
+
+ context 'with custom Yum base url' do
+ let(:params) do
+ {
+ rpm_base: 'https://somewhere.else'
+ }
+ end
+
+ it {
+ expect(subject).to contain_yumrepo('HashiCorp').with(
+ baseurl: 'https://somewhere.else/RHEL/$releasever/$basearch/stable'
+ )
+ }
+ end
end
end
end
diff --git a/spec/setup_acceptance_node.pp b/spec/setup_acceptance_node.pp
new file mode 100644
index 0000000..9a67d7d
--- /dev/null
+++ b/spec/setup_acceptance_node.pp
@@ -0,0 +1,6 @@
+# Needed for os.distro.codebase fact on ubuntu 18 on puppet 6
+if $facts['os']['name'] == 'Ubuntu' and $facts['os']['release']['full'] == '18.04' and versioncmp($facts['puppetversion'], '7') <= 0 {
+ package{'lsb-release':
+ ensure => present,
+ }
+}
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index d266f6b..58c9b66 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,18 +1,24 @@
-# This file is managed via modulesync
-# https://github.com/voxpupuli/modulesync
-# https://github.com/voxpupuli/modulesync_config
+# frozen_string_literal: true
+
+# Managed by modulesync - DO NOT EDIT
+# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
# puppetlabs_spec_helper will set up coverage if the env variable is set.
# We want to do this if lib exists and it hasn't been explicitly set.
-ENV['COVERAGE'] ||= 'yes' if Dir.exist?(File.expand_path('../../lib', __FILE__))
+ENV['COVERAGE'] ||= 'yes' if Dir.exist?(File.expand_path('../lib', __dir__))
require 'voxpupuli/test/spec_helper'
+RSpec.configure do |c|
+ c.facterdb_string_keys = false
+end
+
+add_mocked_facts!
+
if File.exist?(File.join(__dir__, 'default_module_facts.yml'))
facts = YAML.safe_load(File.read(File.join(__dir__, 'default_module_facts.yml')))
- if facts
- facts.each do |name, value|
- add_custom_fact name.to_sym, value
- end
+ facts&.each do |name, value|
+ add_custom_fact name.to_sym, value
end
end
+Dir['./spec/support/spec/**/*.rb'].sort.each { |f| require f }
diff --git a/spec/spec_helper_acceptance.rb b/spec/spec_helper_acceptance.rb
index bec34fd..f3021fa 100644
--- a/spec/spec_helper_acceptance.rb
+++ b/spec/spec_helper_acceptance.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# This file is completely managed via modulesync
require 'voxpupuli/acceptance/spec_helper_acceptance'