DEV Community

Robert Waffen for betadots

Posted on

🧩 Puppet Module Update Process

🔍 1. Identify and Analyze the Module

  • Extract a module name from the Puppetfile.
  • Search for the module on Puppet Forge.
  • Compare available versions and identify the latest one.

📝 2. Review Changes in the Module

  • Follow the Project URL on the Forge page to the GitHub repository.
  • Check recent changes under Releases or in the Changelog.

Example:

⚠️ 3. Watch for Breaking Changes

  • Possible breaking changes:
    • Removal of support for EOL software
    • API changes
    • Renamed parameters or variables
  • Note: Not every breaking change will affect your setup.
    • Example: Dropping EL6 support likely doesn’t concern you.

🔍 4. Evaluate Other Changes

  • Linked pull requests (PRs) may offer additional insights.
  • Check whether changes are understandable and whether breaking changes apply to your environment.

🌱 5. Integrate into Development Branches

  • If the module is considered ready for update:
    • Integrate into a feature or development branch.

🌲 6. Control Repo Branch Structure

Typically present:

  • development
  • production
  • Optionally: staging before production
  • Additionally: 0–n feature branches

🧪 7. Testing in Development Environment

  • Test the updated module in a suitable environment (VM, container).
  • Observe how it interacts with other modules.

Possible findings:

  • Dependencies on specific module versions
  • New facts writing additional data to PuppetDB
  • New or modified parameters requiring Hiera data

🔄 8. Forward the Change

  • Once all adjustments are complete:
    • Pass the change to the next branch for further testing or rollout preparation.

🤖 9. Automation with Renovate Bot

  • This process is quite detailed and time-consuming.
  • With Renovate Bot, collecting and reviewing relevant updates becomes much easier.
  • Renovate can be integrated into GitLab or GitHub.
  • It works similarly to GitHub’s built-in Dependabot, but is more flexible and configurable.

🧰 10. Automation with VoxBox

  • You can also try using the Vox Pupuli VoxBox to list all dependencies for the entire control repo.
    • This doesn't work with every setup.
    • If there are private modules in the Puppetfile, the person running the command must have access to them.
    • Example command:
    • podman run -it --rm -v $PWD:/repo:Z ghcr.io/voxpupuli/voxbox:latest r10k:dependencies
  • More useful information can be found in the Vox Pupuli VoxBox documentation

Top comments (0)