Forge Home


A package provider for DNF groups


6,559 latest version

4.1 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.2.1 (latest)
  • 0.2.0
  • 0.1.0
released Feb 19th 2018

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'esm-dnfgroup', '0.2.1'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add esm-dnfgroup
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install esm-dnfgroup --version 0.2.1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



esm/dnfgroup — version 0.2.1 Feb 19th 2018

Build Status

dnfgroup adds a package provider to puppet so you can manage DNF groups in a familar way:

package {
        ensure   => 'installed',
        provider => 'dnfgroup';

On Fedora, that will ensure that the "Fedora Workstation" environment group (group ID "workstation-product-environment") is installed, which will install any subgroups and individual packages.

This provider doesn't make any distinctions between different types of groups (groups, environment groups, language groups), as there appear to be no technical reasons to differentiate at the puppet level.

You can accomplish something very similar to what this provider does with the default dnf provider by using the group-id, prefixed by @, as the package name. However, the dnf provider won't register the group as installed, because it doesn't know about that particular magic syntax, so it will attempt to reinstall it with every run (even if that doesn't sound too bad, if you ensure => 'absent' a package that happens to be in that group, it will get installed and then immediately removed every run). This provider also allows you to refer to groups by their longer name (which are added as aliases), rather than by ID.

This is an unusual package provider, in that it doesn't support versions (since there's no versioning of DNF groups), and as a result, there's no support for upgrading (via ensure => 'latest'), because there's no easy way to determine if an upgrade is needed without actually testing the transaction, which is a very expensive check for something of fairly low utility (assuming you have an out-of-band mechanism for handling package upgrades).