Ora

How Do I Update Puppet Enterprise (PE) Version?

Published in Puppet Enterprise Upgrade 5 mins read

Keeping your Puppet Enterprise (PE) installation up-to-date is crucial for maintaining a secure, efficient, and feature-rich infrastructure. Updating your PE version involves a systematic approach, ensuring data integrity and minimal downtime.

Why Update Puppet Enterprise?

Regular updates to Puppet Enterprise bring a host of benefits, including:

  • Security Enhancements: Patches for newly discovered vulnerabilities, protecting your infrastructure from potential threats.
  • New Features and Improvements: Access to the latest functionality, better performance, and advanced automation capabilities.
  • Bug Fixes: Resolution of existing issues, leading to a more stable and reliable system.
  • Compatibility: Ensures compatibility with newer operating systems, databases, and third-party tools.

Essential Pre-Update Steps

Before initiating any major upgrade, thorough preparation is key to a successful transition.

1. Plan Your Upgrade Path

Puppet Enterprise upgrades often require specific paths (e.g., you might need to upgrade from 2019.x to 2021.x before going to 2023.x). Always consult the official Puppet Enterprise upgrade paths documentation for your specific version.

2. Backup Everything

A comprehensive backup strategy is your safety net. Ensure you back up:

  • Puppet Enterprise Database: Typically PostgreSQL.
  • /etc/puppetlabs/ directory: Contains all PE configurations.
  • /opt/puppetlabs/server/data/ directory: Critical data, including PuppetDB.
  • Control Repository: Your Puppet code, modules, and Hiera data.

3. Review Release Notes and System Requirements

Each new PE version comes with its own set of release notes. Read them carefully for:

  • Breaking Changes: Important modifications that might affect your existing Puppet code or configurations.
  • Deprecated Features: Functionality that will be removed in future versions.
  • New System Requirements: Ensure your primary server, compilers, and agents meet the minimum specifications for the target PE version (OS, RAM, CPU).

4. Clean Up PuppetDB Reports

To ensure a smooth upgrade and avoid potential issues with large datasets, it's a good practice to clean up old PuppetDB reports. This can be done on your primary server:

  • Delete Reports: On your primary server, run the following command to delete old reports from PuppetDB:
    /opt/puppetlabs/bin/puppetdb delete-reports
  • Restart PuppetDB Service: After cleaning up reports, it's advisable to restart the PuppetDB service to ensure it's in a clean state:
    puppet resource service pe-puppetdb ensure=running

5. Test in a Staging Environment

Whenever possible, perform the upgrade in a non-production staging environment that mirrors your production setup. This allows you to identify and resolve potential issues without impacting your live services.

The Puppet Enterprise Upgrade Process

Once preparatory steps are complete, you can proceed with the actual upgrade.

1. Download the Puppet Enterprise Installer

Download the installer tarball for the target PE version from the Puppet website. Choose the correct installer for your operating system.

2. Extract the Installer

Transfer the tarball to your primary server and extract its contents:

tar -xf puppet-enterprise-<VERSION>-<OS>.tar.gz
cd puppet-enterprise-<VERSION>-<OS>

3. Run the Upgrade Script

Execute the upgrade script from within the extracted installer directory. The installer will guide you through the process, performing checks and applying updates.

sudo ./puppet-enterprise-installer
  • Follow Prompts: The installer will prompt you for information, such as confirming the upgrade and accepting the license agreement.
  • Automated Updates: For most standard installations, the installer automates the upgrade of Puppet Server, PuppetDB, and the PE Console components.
  • Agent Updates: The installer does not automatically update Puppet agents. You will need to upgrade your agents separately after the primary server upgrade. You can do this by running puppet agent -t on your agents, or by using a Puppet task to push updates.

Verifying the Upgrade

After the upgrade process completes, it's crucial to verify that all components are functioning correctly.

  • Check Services: Ensure all PE services are running.
    /opt/puppetlabs/bin/puppet infrastructure status
  • Access PE Console: Log in to the Puppet Enterprise Console and check for any errors or warnings.
  • Run Puppet Agent: Execute puppet agent -t on a few representative nodes to confirm they can compile catalogs and apply configurations successfully.
  • Review Logs: Check PE service logs (/var/log/puppetlabs/) for any errors or unexpected behavior.

Best Practices for a Smooth Upgrade

To further enhance your upgrade experience:

  • Schedule a Maintenance Window: Plan the upgrade during a period of low activity to minimize impact.
  • Communicate: Inform your team and stakeholders about the scheduled upgrade and potential service interruptions.
  • Document: Keep a record of the steps taken, any issues encountered, and their resolutions.
  • Rollback Plan: Have a clear plan in place to revert to the previous state if the upgrade fails catastrophically.
Pre-Upgrade Checklist Description Status
Backup Everything Critical configurations, databases, and code. ✅ Confirmed
Review Release Notes Understand changes and compatibility. ✅ Completed
Clean PuppetDB Reports Run /opt/puppetlabs/bin/puppetdb delete-reports. ✅ Executed
Restart PuppetDB puppet resource service pe-puppetdb ensure=running. ✅ Verified
Test Environment Validate upgrade process in staging. ✅ Recommended
Download Installer Get the correct version for your OS. ✅ Ready

By following these structured steps and best practices, you can confidently update your Puppet Enterprise environment, harnessing the latest features and security enhancements.