Compare commits

..

No commits in common. "master" and "v1.0.0" have entirely different histories.

32 changed files with 316 additions and 509 deletions

View file

@ -1,7 +1,6 @@
# editorconfig.org
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
# MANAGED BY MODULESYNC
root = true

View file

@ -2,6 +2,7 @@ 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"

View file

@ -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. [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).
* 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).
* 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,36 +124,26 @@ If you have Ruby 2.x or want a specific version of Puppet,
you must set an environment variable such as:
```sh
export PUPPET_GEM_VERSION="~> 6.1.0"
export PUPPET_VERSION="~> 5.5.6"
```
You can install all needed gems for spec tests into the modules directory by
running:
```sh
bundle config set --local path '.vendor/'
bundle config set --local without 'development system_tests release'
bundle install --jobs "$(nproc)"
bundle install --path .vendor/ --without development system_tests release --jobs "$(nproc)"
```
If you also want to run acceptance tests:
```sh
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 install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"
```
Our all in one solution if you don't know if you need to install or update gems:
```sh
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
bundle install --path .vendor/ --with system_tests --without development release --jobs "$(nproc)"; bundle update; bundle clean
```
As an alternative to the `--jobs "$(nproc)` parameter, you can set an
@ -242,31 +232,51 @@ simple tests against it after applying the module. You can run this
with:
```sh
BEAKER_PUPPET_COLLECTION=puppet7 BEAKER_setfile=debian11-64 bundle exec rake beaker
bundle exec rake beaker
```
or
This will run the tests on the module's default nodeset. You can override the
nodeset used, e.g.,
```sh
BEAKER_PUPPET_COLLECTION=none BEAKER_setfile=archlinux-64 bundle exec rake beaker
BEAKER_set=centos-7-x64 bundle exec rake beaker
```
This latter example will use the distribution's own version of Puppet.
There are default rake tasks for the various acceptance test modules, e.g.,
You can replace the string `debian11` with any common operating system.
```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.
The following strings are known to work:
* ubuntu1604
* ubuntu1804
* ubuntu2004
* ubuntu2204
* debian11
* debian12
* centos9
* archlinux
* almalinux8
* almalinux9
* fedora36
* debian9
* debian10
* centos7
* centos8
For more information and tips & tricks, see [voxpupuli-acceptance's documentation](https://github.com/voxpupuli/voxpupuli-acceptance#running-tests).
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
```
The source of this file is in our [modulesync_config](https://github.com/voxpupuli/modulesync_config/blob/master/moduleroot/.github/CONTRIBUTING.md.erb)
repository.

3
.github/SECURITY.md vendored Normal file
View file

@ -0,0 +1,3 @@
# Vox Pupuli Security Policy
Our vulnerabilities reporting process is at https://voxpupuli.org/security/

6
.github/labeler.yml vendored
View file

@ -1,6 +0,0 @@
---
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
skip-changelog:
- head-branch: ['^release-*', 'release']

42
.github/release.yml vendored
View file

@ -1,42 +0,0 @@
---
# 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:
- "*"

View file

@ -1,22 +1,75 @@
---
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
name: CI
# yamllint disable-line rule:truthy
on:
pull_request: {}
push:
branches:
- main
- master
concurrency:
group: ${{ github.ref_name }}
cancel-in-progress: true
on: pull_request
jobs:
puppet:
name: Puppet
uses: voxpupuli/gha-puppet/.github/workflows/beaker.yml@v3
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 }}

View file

@ -1,18 +0,0 @@
---
# 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

View file

@ -1,23 +0,0 @@
---
# 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 }}'

View file

@ -1,23 +1,29 @@
---
# 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:
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 }}
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

41
.gitignore vendored
View file

@ -1,25 +1,20 @@
# 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
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
bolt-debug.log
.rerun.json
.yardoc/
Guardfile

View file

@ -1,5 +1,2 @@
---
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
modulesync_config_version: '9.5.0'
modulesync_config_version: '4.0.0'

View file

@ -1,5 +1,4 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
# Managed by https://github.com/voxpupuli/modulesync_configs
#
# Hooks are only enabled if you take action.
#
@ -43,12 +42,10 @@ PreCommit:
enabled: true
description: 'Runs rubocop on modified files only'
command: ['bundle', 'exec', 'rubocop']
RakeTarget:
PuppetLint:
enabled: true
description: 'Runs lint on modified files only'
targets:
- 'lint'
command: ['bundle', 'exec', 'rake']
description: 'Runs puppet-lint on modified files only'
command: ['bundle', 'exec', 'puppet-lint']
YamlSyntax:
enabled: true
JsonSyntax:

View file

@ -1,39 +1,34 @@
# 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
docs/
pkg/
Gemfile
Gemfile.lock
Gemfile.local
vendor/
.vendor/
spec/
Rakefile
.vagrant/
.bundle/
.ruby-version
coverage/
log/
.idea/
.dependencies/
.github/
.librarian/
Puppetfile.lock
*.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
/HISTORY.md
.yardoc/
.yardopts
Dockerfile

View file

@ -1,4 +0,0 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
--fail-on-warnings

2
.rspec Normal file
View file

@ -0,0 +1,2 @@
--format documentation
--color

1
.rspec_parallel Normal file
View file

@ -0,0 +1 @@
--format progress

View file

@ -1,6 +1,3 @@
---
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
inherit_gem:
voxpupuli-test: rubocop.yml

View file

@ -1,5 +0,0 @@
---
.puppet-lint.rc:
enabled_lint_checks:
- parameter_documentation
- parameter_types

2
.yardopts Normal file
View file

@ -0,0 +1,2 @@
--markup markdown
--output-dir docs/

View file

@ -4,102 +4,14 @@ 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.
## [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/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)
## [v1.0.0](https://github.com/voxpupuli/puppet-hashi_stack/tree/v1.0.0) (2021-01-16)
[Full Changelog](https://github.com/voxpupuli/puppet-hashi_stack/compare/d9ceffd75b1f222e1145d58cceaf3a9bcb41b360...v1.0.0)
**Implemented enhancements:**
**Merged pull requests:**
- 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))

21
Dockerfile Normal file
View file

@ -0,0 +1,21 @@
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

23
Gemfile
View file

@ -1,13 +1,9 @@
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
source ENV['GEM_SOURCE'] || "https://rubygems.org"
group :test do
gem 'voxpupuli-test', '~> 9.0', :require => false
gem 'coveralls', :require => false
gem 'simplecov-console', :require => false
gem 'puppet_metadata', '~> 5.0', :require => false
gem 'voxpupuli-test', '~> 2.1', :require => false
gem 'coveralls', :require => false
gem 'simplecov-console', :require => false
end
group :development do
@ -16,17 +12,22 @@ group :development do
end
group :system_tests do
gem 'voxpupuli-acceptance', '~> 3.5', :require => false
gem 'puppet_metadata', '~> 0.3.0', :require => false
gem 'voxpupuli-acceptance', :require => false
end
group :release do
gem 'voxpupuli-release', '~> 3.0', :require => false
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
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_GEM_VERSION'] || [">= 7.24", "< 9"]
puppetversion = ENV['PUPPET_VERSION'] || '~> 6.0'
gem 'puppet', puppetversion, :require => false, :groups => [:test]
# vim: syntax=ruby

View file

@ -6,11 +6,11 @@
### Classes
* [`hashi_stack::repo`](#hashi_stack--repo): Set up the package repository for the HashiCorp Stack components
* [`hashi_stack::repo`](#hashi_stackrepo): Set up the package repository for the HashiCorp Stack components
## Classes
### <a name="hashi_stack--repo"></a>`hashi_stack::repo`
### `hashi_stack::repo`
This class installs the hashicorp repository
@ -34,26 +34,17 @@ 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`](#-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)
##### <a name="-hashi_stack--repo--priority"></a>`priority`
##### `priority`
Data type: `Optional[Integer]`
A numeric priority for the repo, passed to the package management system
Default value: `undef`
Default value: ``undef``
##### <a name="-hashi_stack--repo--proxy"></a>`proxy`
##### `proxy`
Data type: `String`
@ -61,15 +52,15 @@ The URL of a HTTP proxy to use for package downloads (YUM only)
Default value: `'absent'`
##### <a name="-hashi_stack--repo--key_id"></a>`key_id`
##### `key_id`
Data type: `String`
GPG key to authenticate Apt package signatures.
Default value: `'798AEC654E5C15428C8E42EEAA16FCBCA621E701'`
Default value: `'E8A032E094D8EB4EA189D270DA418C88A3219F7B'`
##### <a name="-hashi_stack--repo--key_source"></a>`key_source`
##### `key_source`
Data type: `Stdlib::HTTPSUrl`
@ -77,7 +68,7 @@ The location of an existing GPG key file to copy.
Default value: `'https://apt.releases.hashicorp.com/gpg'`
##### <a name="-hashi_stack--repo--description"></a>`description`
##### `description`
Data type: `String`
@ -85,27 +76,3 @@ Repository description
Default value: `'HashiCorp package repository.'`
##### <a name="-hashi_stack--repo--rpm_base"></a>`rpm_base`
Data type: `String`
Base URL for the Yum repository
Default value: `'https://rpm.releases.hashicorp.com'`
##### <a name="-hashi_stack--repo--repo_gpgcheck"></a>`repo_gpgcheck`
Data type: `Integer[0,1]`
enables gpg validation of packages from the repo
Default value: `0`
##### <a name="-hashi_stack--repo--repo_enabled"></a>`repo_enabled`
Data type: `Integer[0,1]`
enables/disables the repository
Default value: `1`

View file

@ -1,22 +1,9 @@
# 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),
# Attempt to load voxupuli-test (which pulls in puppetlabs_spec_helper),
# otherwise attempt to load it directly.
begin
require 'voxpupuli/test/rake'
rescue LoadError
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
require 'puppetlabs_spec_helper/rake_tasks'
end
# load optional tasks for releases
@ -24,10 +11,6 @@ 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"
@ -41,4 +24,38 @@ 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

View file

@ -17,32 +17,20 @@
# @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 = '798AEC654E5C15428C8E42EEAA16FCBCA621E701',
String $key_id = 'E8A032E094D8EB4EA189D270DA418C88A3219F7B',
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 => $arch,
architecture => 'amd64',
comment => $description,
location => 'https://apt.releases.hashicorp.com',
repos => 'main',
@ -59,14 +47,13 @@ class hashi_stack::repo (
}
'RedHat': {
yumrepo { 'HashiCorp':
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,
descr => $description,
baseurl => 'https://rpm.releases.hashicorp.com/RHEL/$releasever/$basearch/stable',
gpgcheck => 1,
gpgkey => $key_source,
enabled => 1,
proxy => $proxy,
priority => $priority,
}
}
default: {

View file

@ -1,20 +1,29 @@
{
"name": "puppet-hashi_stack",
"version": "3.3.1-rc0",
"version": "1.0.0",
"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": ">= 5.1.0 < 10.0.0"
"version_requirement": ">= 4.13.1 < 7.0.0"
},
{
"name": "puppetlabs/apt",
"version_requirement": ">= 6.1.0 < 11.0.0"
"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"
}
],
"operatingsystem_support": [
@ -22,65 +31,35 @@
"operatingsystem": "RedHat",
"operatingsystemrelease": [
"7",
"8",
"9"
]
},
{
"operatingsystem": "OracleLinux",
"operatingsystemrelease": [
"8",
"9"
]
},
{
"operatingsystem": "AlmaLinux",
"operatingsystemrelease": [
"8",
"9"
]
},
{
"operatingsystem": "Rocky",
"operatingsystemrelease": [
"8",
"9"
"8"
]
},
{
"operatingsystem": "CentOS",
"operatingsystemrelease": [
"7",
"8",
"9"
"8"
]
},
{
"operatingsystem": "Debian",
"operatingsystemrelease": [
"10",
"11",
"12"
"9",
"10"
]
},
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
"18.04",
"20.04",
"22.04",
"24.04"
"20.04"
]
}
],
"requirements": [
{
"name": "puppet",
"version_requirement": ">= 7.0.0 < 9.0.0"
},
{
"name": "openvox",
"version_requirement": ">= 7.0.0 < 9.0.0"
"version_requirement": ">= 6.1.0 < 7.0.0"
}
]
}

View file

@ -1,11 +1,10 @@
# 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 'works with no errors based on the example' do
it 'should work with no errors based on the example' do
pp = <<-EOS
include hashi_stack::repo
package { 'packer':

View file

@ -1,5 +1,3 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'hashi_stack::repo' do
@ -7,31 +5,11 @@ 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 {
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
it { is_expected.to contain_yumrepo('HashiCorp') }
end
end
end

View file

@ -1,6 +0,0 @@
# 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,
}
}

View file

@ -1,24 +1,18 @@
# frozen_string_literal: true
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/
# This file is managed via modulesync
# https://github.com/voxpupuli/modulesync
# https://github.com/voxpupuli/modulesync_config
# 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', __dir__))
ENV['COVERAGE'] ||= 'yes' if Dir.exist?(File.expand_path('../../lib', __FILE__))
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')))
facts&.each do |name, value|
add_custom_fact name.to_sym, value
if facts
facts.each do |name, value|
add_custom_fact name.to_sym, value
end
end
end
Dir['./spec/support/spec/**/*.rb'].sort.each { |f| require f }

View file

@ -1,5 +1,3 @@
# frozen_string_literal: true
# This file is completely managed via modulesync
require 'voxpupuli/acceptance/spec_helper_acceptance'