Tools
Tools: ConfDroid Puppet Modules - confdroid_resources
2026-02-12
0 views
admin
confdroid_resources – Puppet Module ## Why this module exists ## How it works ## Typical usage pattern ## Features ## Planned additions ## Getting started ## Related posts confdroid_resources is a small, focused Puppet module that automates the installation and configuration of common YUM / DNF repositories on Rocky Linux (and other Enterprise Linux 9 family systems).
Its primary purpose is to make sure essential third-party repositories — especially EPEL — are reliably present on every managed node without causing duplicate resource conflicts. Rocky Linux (and other RHEL derivatives) rely on YUM/DNF repositories to provide software packages.
Many useful packages — debugging tools, monitoring agents, additional utilities, and more — live outside the base OS repositories and are only available through EPEL (Extra Packages for Enterprise Linux). In Puppet, repository definitions are singletons: you can only declare a yumrepo resource once per module & catalog. Attempting to declare the same repository multiple times (for example, in different modules that depend on EPEL) causes a duplicate resource conflict and catalog compilation failure. The cleanest solution is to: That central place is confdroid_resources. The module declares the most commonly needed repositories (starting with EPEL) in a controlled, idempotent way.
Because these repositories are declared only once and included globally, downstream modules can safely install packages that depend on them without worrying about duplication errors.
You can also enable or disable individual repositories via class parameters or Hiera/Foreman data — without touching the rest of your codebase. This way, the module is applied on all hosts, since likely all will need the repos. In case any hosts should not have it enabled, the parameter $rs_enable_epel should be set to 0. Or better yet, simply include the requirement in your module: This simply ensures that the confdroid_resource module is applied first.
No need to declare yumrepo { 'epel': … } again — it's already there. Add the module to your environment (via the ConfDroid Forge or by cloning the repo), then simply include it in your base profile or node classification. That's it — EPEL (and any future shared repos) will be available everywhere, without duplication headaches.
Happy automating! 🚀
Questions, feedback, or feature requests → https://feedback.confdroid.com Did you find this post helpful? You can support me. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse CODE_BLOCK:
include confdroid_resources Enter fullscreen mode Exit fullscreen mode CODE_BLOCK:
include confdroid_resources CODE_BLOCK:
include confdroid_resources COMMAND_BLOCK:
package { 'htop': ensure => installed, require => Class['confdroid_resources'],
} Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK:
package { 'htop': ensure => installed, require => Class['confdroid_resources'],
} COMMAND_BLOCK:
package { 'htop': ensure => installed, require => Class['confdroid_resources'],
} CODE_BLOCK:
require confdroid_resources Enter fullscreen mode Exit fullscreen mode CODE_BLOCK:
require confdroid_resources CODE_BLOCK:
require confdroid_resources COMMAND_BLOCK:
# Example in a base profile class
class profile::base { include confdroid_resources
} Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK:
# Example in a base profile class
class profile::base { include confdroid_resources
} COMMAND_BLOCK:
# Example in a base profile class
class profile::base { include confdroid_resources
} - Define important shared repositories once, in a central place
- Include that central definition in every node's catalog
- Let other modules simply assume the repository is already present - Include confdroid_resources in every node's catalog (usually via a base profile, site.pp, or Foreman host group / global classes) (recommended). - Any other module can now safely install packages from EPEL (or other managed repos): - Installs and configures EPEL by default
- Supports enabling/disabling repositories via parameters
- Idempotent and conflict-free design
- Clean separation of concerns: shared repos live in one place
- Works on Rocky Linux 9 / AlmaLinux 9 / RHEL 9 derivatives - Support for additional popular repositories (PowerTools/CRB, RPM Fusion, etc.)
- GPG key management
- More granular enable/disable controls per repo - Confdroid Puppet Modules - Pilot
- Confdroid Puppet Modules - Puppet
how-totutorialguidedev.toailinuxnode