Skip to content

(MODULES-11700) Add Puppet 9 support - #2638

Open
imaqsood wants to merge 2 commits into
mainfrom
MODULES-11700
Open

(MODULES-11700) Add Puppet 9 support#2638
imaqsood wants to merge 2 commits into
mainfrom
MODULES-11700

Conversation

@imaqsood

@imaqsood imaqsood commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds Puppet 9 support to puppetlabs-apache. Beyond raising the Puppet upper bound in metadata.json (< 9.0.0< 10.0.0), this wires the CI/lint tooling for the Puppet 9 lane, refreshes the supported-OS list, and fixes acceptance on the newer platforms.

Jira: MODULES-11700

What's included

  • Version-conditional lint tooling. The Puppet 9 lane runs on Ruby 3.4+, where puppet-lint 4.x crashes; the Puppet 7/8 lane runs on Ruby 3.1, where voxpupuli-puppet-lint-plugins ~> 7.0 won't resolve (needs Ruby ≥ 3.2). The Gemfile gates voxpupuli-puppet-lint-plugins ~> 7.0 + a puppetlabs_spec_helper branch behind the Puppet 9 stream, keeping released tooling on 7/8.
  • strict_indent disabled. puppet-lint-strict_indent-check demands opposite indentation between the 3.x (7/8) and 5.x (9) plugin versions, so no single manifest layout passes both lanes. Disabled in the Rakefile; trailing commas + an Optional[Variant[...]] type fix satisfy the remaining checks.
  • Puppet 9 gem source. The 8.99.x prerelease is fetched via PUPPET_GEM_SOURCE (internal Artifactory), reachable over Twingate in CI.
  • Supported-OS refresh. Dropped EOL platforms (EL7 family, CentOS 8, Debian 10, SLES 12, Ubuntu 18.04) that Puppet 8/9 don't ship agents for.
  • ubuntu-20.04 gated to Puppet 8. Focal has no Puppet 9 agent, but is valid on Puppet 8 — dropped from the Puppet 9 acceptance lane only, via a new --collection-platform-exclude matrix flag.
  • Debian 13 & SLES 15 acceptance fixes. Debian 13: ensure /run/lock exists (systemd/container timing) and assert php8.4.conf. SLES 15: verify_command uses start_apache2 -t (SUSE ships no apache2ctl), and install apache2-utils for gensslcert.

Dependencies

This PR temporarily pins two companion branches; both revert to released refs once merged:

  • puppet_litmus #627 — adds --collection-platform-exclude to matrix_from_metadata_v3 (the Gemfile pins the branch).
  • cat-github-actions #182 — passes PUPPET_GEM_SOURCE + Twingate for the Puppet 9 spec lane (ci.yml Spec pins the branch).

Testing

  • Lint clean on both lanes (bundle exec rake lint on Ruby 3.1 + plugins 5.0 and Ruby 3.4 + plugins 7.0).
  • Unit specs green on Puppet 8 (Ruby 3.2) and Puppet 9 (Ruby 4).
  • Acceptance green across the Puppet 8/9 matrix, including Debian 13 and SLES 15.

- Version-conditional lint tooling: puppet-lint 5.x on the Puppet 9 lane
  (Ruby 3.4+), released tooling on Puppet 7/8; disable strict_indent (its
  rules differ incompatibly across the two lanes)
- Source the Puppet 9 (8.99.x) prerelease via PUPPET_GEM_SOURCE
- Refresh supported OS list to Puppet 8/9 platforms; drop ubuntu-20.04 from
  the Puppet 9 acceptance lane only (no focal agent on Puppet 9)
- Fix Debian 13 and SLES 15 acceptance

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@imaqsood
imaqsood force-pushed the MODULES-11700 branch 4 times, most recently from 2c20b14 to 2572003 Compare August 5, 2026 05:48
2) updated exlude flags in acceptance test
3) removed conditional versioning in Gemfile
4) restored the metadata.json file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant