Skip to content

Drop profiles::certbot requires that duplicate Package[certbot] - #204

Open
miharp wants to merge 2 commits into
voxpupuli:productionfrom
miharp:grafana-certbot-fix
Open

Drop profiles::certbot requires that duplicate Package[certbot]#204
miharp wants to merge 2 commits into
voxpupuli:productionfrom
miharp:grafana-certbot-fix

Conversation

@miharp

@miharp miharp commented Aug 14, 2026

Copy link
Copy Markdown

Fixes #203. Two deleted requires: profiles::grafana and profiles::postfix both pulled in profiles::certbot, whose Package[certbot] collides with the letsencrypt class that profiles::nginx has included since 26d19db. Every catalog containing either profile has failed to compile since March, including the real voxpupu.li node.

Full diagnosis in #203. Lab-verified on a fresh Ubuntu 24.04 VM under the real hostname running roles::voxpupuli masterless: catalog compiles and applies, certbot arrives via the letsencrypt class, distro timer covers renewal (console log).

Worked on this with Claude (Claude Code) per the AI usage policy; commit carries the trailer.

Second commit: with the certbot wall gone, CI surfaced one more pre-existing failure, profiles::libvirt specs missing rexml (a bundled gem since Ruby 3, previously reachable only through the excluded system_tests group). Added to the Gemfile the same way the existing syslog entry handles that gem class. With it, this PR should be the first green CI run in the retained history of this repo.

miharp and others added 2 commits August 14, 2026 13:14
profiles::nginx pulls in the letsencrypt class since 26d19db, and its
install class declares Package['letsencrypt'] with name certbot. Any
catalog that also reaches profiles::certbot fails to compile on the
duplicate, which is every catalog containing profiles::grafana or
profiles::postfix: roles::voxpupuli, so the voxpupu.li node, broken
since March. Fixes voxpupuli#203.

Verified in a Vagrant lab on a fresh Ubuntu 24.04 VM under the real
hostname: the role compiles and applies with this change, certbot
arrives via the letsencrypt class, and the distro package's own
systemd timer covers renewal.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
rexml is a bundled gem since Ruby 3, so under Bundler it only loads
if the Gemfile names it (same story as the syslog entry). The unit
test job excludes the system_tests group whose beaker dependency
was the only other path to it, so profiles::libvirt specs fail with
'cannot load such file -- rexml/document'.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp

miharp commented Aug 14, 2026

Copy link
Copy Markdown
Author

Deployment note for whoever merges: the fix itself is low risk (certbot stays installed, now owned by the letsencrypt class; the distro certbot.timer keeps running; the orphaned verbose.conf dropin just goes unmanaged). The thing to plan for is that merging turns Puppet back on for voxpupu.li after five months, so the first agent run applies the accumulated delta in one go.

Most of that delta (systemd v10, stdlib v10, foreman_proxy v31, choria bumps) has been applying to the rest of the fleet all along. Unique to this node: puppet-nginx v8 re-renders its vhosts (the lab run rendered exactly these profiles under v8 without config errors), and puppet-grafana v15 may upgrade grafana-server and run its DB migrations, which is the one stateful change worth watching.

Suggested first run: puppet agent -t --noop on voxpupu.li, read the change list (expect nginx config rewrites, possibly a grafana upgrade, a certbot version bump), then run enforcing. For reference, a fresh Ubuntu 24.04 VM applied this whole catalog from zero and came up with services running: https://github.com/miharp/controlrepo-lab/blob/main/evidence/vox01-certbot-fix-2026-08-14.log

@miharp

miharp commented Aug 18, 2026

Copy link
Copy Markdown
Author

@bastelfreak ready for review/merge

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.

CI has never been green; current blocker is a duplicate Package[certbot] in profiles::grafana catalogs

2 participants