From dc8842a4e477da04a81ced0b79deced486ee0854 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sun, 26 Jul 2026 23:22:07 +1000 Subject: [PATCH] os/Fedora: add Fedora 44 support for the base role Fedora hosts can now run the base role by reusing the existing RedHat osfamily code paths (dnf/yum, crypto-policies, firewalld, openvox) with Fedora-specific data and repositories, all keyed off facts.os.release.major so a later Fedora release only needs its artifactapi local repos created. - add hieradata/os/Fedora/all_releases.yaml: dnf repos (fedora + updates proxied via artifactapi, plus artifactapi rpm-internal-f and rpm-vendor-f locals), crypto-policies DEFAULT, openvox agent, and Fedora package fixups (7zip for p7zip, iotop-c for iotop, drop dstat) - add profiles::fedora::base wired via hiera_include, ensuring NetworkManager is enabled; a minimal extension point for later workstation/laptop use - make profiles::puppet::agent select the OpenVox distribution path (fedora/ on Fedora, el/ elsewhere) Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv --- hieradata/os/Fedora/all_releases.yaml | 69 +++++++++++++++++++++++++ site/profiles/manifests/fedora/base.pp | 14 +++++ site/profiles/manifests/puppet/agent.pp | 9 +++- 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 hieradata/os/Fedora/all_releases.yaml create mode 100644 site/profiles/manifests/fedora/base.pp diff --git a/hieradata/os/Fedora/all_releases.yaml b/hieradata/os/Fedora/all_releases.yaml new file mode 100644 index 0000000..5e05288 --- /dev/null +++ b/hieradata/os/Fedora/all_releases.yaml @@ -0,0 +1,69 @@ +# hieradata/os/Fedora/all_releases.yaml +--- +# Fedora reuses the RedHat osfamily code paths (dnf/yum, crypto-policies, +# firewalld, openvox). Everything here keys off facts.os.release.major so a +# future Fedora release only needs its artifactapi local repos created, not new +# hieradata. + +# crypto-policies: use the distro default. Kept here (not per-release) so newer +# Fedora releases inherit it for free. +crypto_policies::policy: 'DEFAULT' + +# Puppet agent via OpenVox. RedHat-family builds for Fedora live under +# openvox7/fedora/ (see profiles::puppet::agent). +profiles::puppet::agent::openvox_enable: true + +lm-sensors::package: lm_sensors + +# Fedora-specific base setup (NetworkManager, future workstation/laptop hooks). +hiera_include: + - profiles::fedora::base + +# Base package set adjustments for Fedora: +# - p7zip was dropped from Fedora; the real 7-Zip ships as "7zip" +# - dstat was removed from Fedora with no drop-in successor in the base set +# - iotop is provided by the C rewrite package "iotop-c" +profiles::packages::exclude: + - p7zip + - dstat + - iotop +profiles::packages::include: + 7zip: {} + iotop-c: {} + crypto-policies-scripts: {} + lzo: {} + policycoreutils: {} + unar: {} + xz: {} + +profiles::yum::global::repos: + fedora: + name: fedora + descr: Fedora %{facts.os.release.major} - %{facts.os.architecture} + target: /etc/yum.repos.d/fedora.repo + baseurl: https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/releases/%{facts.os.release.major}/Everything/%{facts.os.architecture}/os/ + gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-%{facts.os.release.major}-%{facts.os.architecture} + metalink: absent + mirrorlist: absent + updates: + name: updates + descr: Fedora %{facts.os.release.major} - %{facts.os.architecture} - Updates + target: /etc/yum.repos.d/fedora-updates.repo + baseurl: https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/fedora/updates/%{facts.os.release.major}/Everything/%{facts.os.architecture}/ + gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-%{facts.os.release.major}-%{facts.os.architecture} + metalink: absent + mirrorlist: absent + rpm-internal: + name: rpm-internal-f%{facts.os.release.major} + descr: rpm-internal-f%{facts.os.release.major} repository + target: /etc/yum.repos.d/rpm-internal.repo + baseurl: https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-internal-f%{facts.os.release.major}/ + gpgcheck: false + mirrorlist: absent + rpm-vendor: + name: rpm-vendor-f%{facts.os.release.major} + descr: rpm-vendor-f%{facts.os.release.major} repository + target: /etc/yum.repos.d/rpm-vendor.repo + baseurl: https://artifactapi.k8s.syd1.au.unkin.net/api/v1/local/rpm-vendor-f%{facts.os.release.major}/ + gpgcheck: false + mirrorlist: absent diff --git a/site/profiles/manifests/fedora/base.pp b/site/profiles/manifests/fedora/base.pp new file mode 100644 index 0000000..914ace9 --- /dev/null +++ b/site/profiles/manifests/fedora/base.pp @@ -0,0 +1,14 @@ +# base fedora settings +# +# Fedora hosts share the RedHat-family base profiles (yum/dnf, crypto-policies, +# firewalld); this class carries the handful of Fedora-specific bits. Kept +# deliberately small so it can grow into workstation/laptop (e.g. sway) support +# later without disturbing servers. +class profiles::fedora::base { + # Fedora manages interfaces through NetworkManager. Ensure it is enabled and + # running (some minimal and cloud images ship it disabled). + service { 'NetworkManager': + ensure => running, + enable => true, + } +} diff --git a/site/profiles/manifests/puppet/agent.pp b/site/profiles/manifests/puppet/agent.pp index 5ba0247..b8847c2 100644 --- a/site/profiles/manifests/puppet/agent.pp +++ b/site/profiles/manifests/puppet/agent.pp @@ -16,11 +16,18 @@ class profiles::puppet::agent ( $use_service = 'puppet' } + # OpenVox publishes RedHat-family builds per distribution: enterprise-linux + # under el/, Fedora under fedora/. + $openvox_dist = $facts['os']['name'] ? { + 'Fedora' => 'fedora', + default => 'el', + } + # manage the yumrepo for the given package if $openvox_enable and $facts['os']['family'] == 'RedHat' { yumrepo { 'openvox': ensure => 'present', - baseurl => "https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/openvox/openvox7/el/${facts['os']['release']['major']}/${facts['os']['architecture']}/", + baseurl => "https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/openvox/openvox7/${openvox_dist}/${facts['os']['release']['major']}/${facts['os']['architecture']}/", descr => 'openvox repository', gpgkey => 'https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/openvox/GPG-KEY-openvox.pub', notify => Exec['dnf_makecache'],