From 9e773fd1bcef747903e505f17b049d9e52eb876f Mon Sep 17 00:00:00 2001 From: Nick Anderson Date: Tue, 3 Feb 2026 10:43:50 -0600 Subject: [PATCH 1/2] Added documentation for dnf package module (cherry picked from commit 57e692b77efa7ca8635d05f7d433a9966782a43c) --- reference/promise-types/packages.markdown | 75 ++++++++++++++++++++++- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/reference/promise-types/packages.markdown b/reference/promise-types/packages.markdown index 1514d7fc3..3ebe88e1c 100644 --- a/reference/promise-types/packages.markdown +++ b/reference/promise-types/packages.markdown @@ -374,7 +374,7 @@ packages: Enable a specific repository for a specific promise. -```cf3 +```cf3 {skip TODO} bundle agent example { packages: @@ -394,7 +394,7 @@ bundle agent example "httpd" policy => "present", version => "latest", - options => { "disablerepo=* enablerepo=UPDATES" }; + options => { "disablerepo=*", "enablerepo=UPDATES" }; } ``` @@ -446,6 +446,77 @@ bundle agent example * Added in CFEngine 3.7.0 * `enablerepo` and `disablerepo` option support added in 3.7.8, 3.10.4, 3.12.0 +### dnf + +Manage packages using `dnf`. This is the [default package module][lib/packages.cf#package_module_knowledge] for modern Red Hat, CentOS, Fedora, and Amazon Linux systems. + +**Examples:** + +File based package source. + +```cf3 {skip TODO} +packages: + redhat|centos|amazon_linux:: + "/mnt/nfs/packages/httpd-2.4.37-65.module+el8.10.0+40053+5a18018e.7.x86_64.rpm" + policy => "present"; +``` + +Repository based package source with a specific version of the package. + +```cf3 {skip TODO} +packages: + (redhat|centos|amazon_linux).workstation:: + "emacs" + policy => "present", + version => "26.1-13"; +``` + +Enable a specific repository for a specific promise. + +```cf3 +bundle agent example +{ + packages: + + rocky_8:: + # Enable the EPEL repo when making sure etc-keeper is installed + # and up to date. + + "etckeeper-dnf" + policy => "present", + version => "latest", + options => { "enablerepo=powertools" }; + + # Only consider updates from the main repositories for + # httpd and disable all other repositories + + "httpd" + policy => "present", + version => "latest", + options => { "disablerepo=*", "enablerepo=UPDATES" }; +} +``` + +**Notes:** + +- Supports file path and repository sourced packages. + +- Requires Python 3 to be installed on the host (leverages cfengine-selected-python). + +- Package downgrades default to the system configuration (typically disabled). To explicitly allow the module to downgrade a package for a specific promise, set `options => { "allow_downgrade=true" }`. + + ```cf3 {skip TODO} + packages: + "httpd" + policy => "present", + version => "2.4.37-64", # Older version + options => { "allow_downgrade=true" }; + ``` + +**History:** + +- Added in CFEngine 3.27.1, 3.24.4 + ### apt_get Manage packages using ```apt-get```. From d3f8310db85daa6f9cf521e40030009e26a9ec2e Mon Sep 17 00:00:00 2001 From: Nick Anderson Date: Thu, 5 Feb 2026 01:35:16 -0600 Subject: [PATCH 2/2] Added missing introduction version in dnf module history (cherry picked from commit 60fd2e7f06a3373996b61cd291de0a236e04163a) --- reference/promise-types/packages.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/promise-types/packages.markdown b/reference/promise-types/packages.markdown index 3ebe88e1c..f3a52d63e 100644 --- a/reference/promise-types/packages.markdown +++ b/reference/promise-types/packages.markdown @@ -515,7 +515,7 @@ bundle agent example **History:** -- Added in CFEngine 3.27.1, 3.24.4 +- Added in CFEngine 3.28.0, 3.27.1, 3.24.4 ### apt_get