Upgrading

New versions of Continuous Delivery for Puppet Enterprise (PE) are released regularly. Upgrading to the current version ensures you're always taking advantage of the latest features, fixes, and improvements.

Continuous Delivery for PE runs inside a Docker container, and new versions are released to Docker Hub. Upgrading to the latest version of Continuous Delivery for PE requires destroying the current Docker container and building a new container in its place that includes the latest version of the software. The puppetlabs-cd4pe module includes a docker-cd4pe service that manages this process for you; once the module is installed on your system, when you stop and restart the docker-cd4pe service, the container rebuild process is completed automatically.

Upgrading to the latest version of Continuous Delivery for PE

If you used the puppetlabs-cd4pe module to install Continuous Delivery for PE, stop and restart the docker-cd4pe service with either systemctl or Puppet.

With systemctl:

  • Stop the service: systemctl stop docker-cd4pe
  • Restart the service: systemctl start docker-cd4pe
With Puppet:
  • Stop the service: puppet resource service docker-cd4pe ensure=stopped
  • Restart the service: puppet resource service docker-cd4pe ensure=running

If you installed Continuous Delivery for PE from the PE console, install the puppetlabs-cd4pe module to automate upgrades. Then, stop and restart the docker-cd4pe service with either systemctl or Puppet.

With systemctl:

  • Stop the service: systemctl stop docker-cd4pe
  • Restart the service: systemctl start docker-cd4pe
With Puppet:
  • Stop the service: puppet resource service docker-cd4pe ensure=stopped
  • Restart the service: puppet resource service docker-cd4pe ensure=running
Note: Make sure that the value of the cd4pe_version parameter in Class:cd4pe is set to 3.x and not pinned to a specific version.

Automate upgrades of Continuous Delivery for PE

Install the puppetlabs-cd4pe module, then create and classify a node group to automate management of your Continuous Delivery for PE installation's version.

  1. Add the module and its dependencies to your Puppetfiles.
    The puppetlabs-cd4pe module must be used with seven dependent modules, plus a module to manage job hardware. The modules and their required versions are as follows:
    Module Required version
    puppetlabs-cd4pe 1.1.0 or later in the 1.x or 2.x series

    The Nodes page requires version 2.0.1 or later

    puppetlabs-stdlib 4.19.0 or later
    puppetlabs-puppet_authorization 0.5.0 or later
    puppetlabs-hocon 0.9.3 or later
    puppetlabs-concat 2.1.0 or later
    puppetlabs-docker 3.3.0 or later
    puppetlabs-apt 4.4.1 or later
    puppetlabs-translate 1.1.0 or later
    puppetlabs-cd4pe_jobs
    Note: This module manages job hardware running a Puppet agent. Install this module with Continuous Delivery for PE version 3.4.0 or newer.
    1.0.0 or later
    puppetlabs-pipelines
    Note: This module manages job hardware running the deprecated Continuous Delivery agent. Install this module only if you are installing Continuous Delivery for PE version 3.3.0 or older.
    1.0.1
  2. Add the 10 modules listed above to the Puppetfile for each environment against which your compilers compile catalogs.
    A sample Puppetfile entry:
    mod 'puppetlabs-cd4pe', '2.0.2'
    # Requirements for cd4pe
    mod 'puppetlabs-stdlib', '8.1.0'
    mod 'puppetlabs-puppet_authorization', '0.5.1'
    mod 'puppetlabs-hocon', '1.1.0'
    mod 'puppetlabs-concat', '7.1.1'
    mod 'puppetlabs-docker', '4.1.2'
    mod 'puppetlabs-apt', '8.3.0'
    mod 'puppetlabs-translate', '2.2.0'
    mod 'puppetlabs-cd4pe_jobs', '1.5.0'
    # Required only if using Continuous Delivery agents for job hardware
    mod 'puppetlabs-pipelines', '1.0.1'
  3. Deploy the modules to the production environment by running puppet code deploy production.
  4. In the PE console, click Classification. Click Add group and create a new node group with the following specifications.
    • Parent name: PE Infrastructure

    • Group name: Continuous Delivery for PE

    • Environment: production

    • Environment group: Do not select this option

  5. Open the newly created Continuous Delivery for PE node group. Add your Continuous Delivery for PE host server to the node group by either creating a rule or pinning the node.
  6. Click Configuration. In the Add new class field, select the cd4pe class and click Add class.
    Note: If the cd4pe class isn't available, click Refresh to update the available class definitions.
  7. To automate upgrades of Continuous Delivery for PE to the latest available version in the 3.x series, set the cd4pe_version parameter to 3.x. Add the parameter and commit your change.
Results
After the classification change is applied on the next Puppet run, your Continuous Delivery for PE installation automatically upgrades itself whenever a new version is available and you restart the docker-cd4pe service managed by the module.

Upgrade to the 3.x series

Upgrades from the Continuous Delivery for Puppet Enterprise (PE) 2.x series to the 3.x series are not automatic. Instead, you must upgrade your version of the software by updating your puppetlabs-cd4pe module classification.

If you installed Continuous Delivery for PE from the PE console or by using the puppetlabs-cd4pe module, follow these instructions to upgrade to the 3.x series.
  1. In the PE console, click Classification.
  2. Expand the PE Infrastructure group, and select the Continuous Delivery for PE node group.
  3. Click Configuration.
  4. Under Class:cd4pe, in the Parameter field, select cd4pe_version. In the Value field, enter 3.x. Click Add parameter and commit your changes.
  5. To apply the new version, run Puppet on the node group. At the top of the page, click the Run selector and choose Puppet. On the Run Puppet page that opens, make any necessary adjustments and click Run Job.
Results
When the Puppet run is complete, your Continuous Delivery for PE instance will be running the 3.x series. You'll now automatically upgrade to new 3.x series versions as they are released whenever you stop and restart the docker-cd4pe service managed by the module.