From 97bb52fa9342926a537ec002d125fc1dcca3649c Mon Sep 17 00:00:00 2001 From: Michael Harp Date: Fri, 14 Aug 2026 13:14:46 -0400 Subject: [PATCH 1/2] Drop profiles::certbot requires that duplicate Package[certbot] 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 #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 Signed-off-by: Michael Harp --- site/profiles/manifests/grafana.pp | 3 ++- site/profiles/manifests/postfix.pp | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site/profiles/manifests/grafana.pp b/site/profiles/manifests/grafana.pp index 2c813107..0dc736de 100644 --- a/site/profiles/manifests/grafana.pp +++ b/site/profiles/manifests/grafana.pp @@ -17,8 +17,9 @@ ) { require profiles::base $domain = "grafana.${facts['networking']['fqdn']}" + # certbot comes with the letsencrypt class that profiles::nginx pulls + # in; requiring profiles::certbot too duplicates Package[certbot] require profiles::nginx - require profiles::certbot require profiles::postgresql require profiles::postfix package { 'toml': diff --git a/site/profiles/manifests/postfix.pp b/site/profiles/manifests/postfix.pp index 26be8174..4cef1922 100644 --- a/site/profiles/manifests/postfix.pp +++ b/site/profiles/manifests/postfix.pp @@ -4,7 +4,6 @@ class profiles::postfix { # provides /etc/ssl/certs/ca-certificates.crt for smtpd_tls_CAfile ini_setting require profiles::base - require profiles::certbot # todo: use puppet/postfix package { 'postfix': ensure => 'installed', From a44868832b5968ecfe321f28683654ccee79f3b5 Mon Sep 17 00:00:00 2001 From: Michael Harp Date: Fri, 14 Aug 2026 13:27:06 -0400 Subject: [PATCH 2/2] Gemfile: add rexml for the libvirt provider 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 Signed-off-by: Michael Harp --- site/profiles/Gemfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/site/profiles/Gemfile b/site/profiles/Gemfile index a2be0c8a..54852cc6 100644 --- a/site/profiles/Gemfile +++ b/site/profiles/Gemfile @@ -21,4 +21,7 @@ puppetversion = ENV['PUPPET_GEM_VERSION'] || '>= 8.19' gem 'metadata_json_deps', require: false gem 'openvox', puppetversion, require: false, groups: [:test] gem 'syslog' +# rexml left the Ruby stdlib like syslog did; the libvirt module's +# virsh provider requires it, so specs need it in the bundle +gem 'rexml' # vim: syntax=ruby