Continuous Delivery for PE architecture

Continuous Delivery for Puppet Enterprise (PE) communicates with your PE installation, your source control system, and the servers you've designated as job hardware, as well as with the various components of the software.

The following diagram shows the architecture and port requirements of a Continuous Delivery for PE installation of version 3.4.0 or newer, using Puppet agent for job hardware.

The second diagram shows the architecture and port requirements of a typical Continuous Delivery for PE installation of version 3.3.0 or older, using the Continuous Delivery agent for job hardware.
Important: ⛔ The Continuous Delivery agent is deprecated as of Continuous Delivery for PE version 3.4.0, and will be removed in a future release.
Important: Continuous Delivery for PE uses TCP (Transmission Control Protocol) connections.
Job hardware and web UI configuration Default port number
HTTP 8080
HTTPS 8443
External storage configuration Default port number
Artifactory using HTTP 80
Artifactory using HTTPS 443
Amazon S3 443

Continuous Delivery for PE uses a database to persist information. The puppetlabs-cd4pe module creates a new installation of PE-PostgreSQL on the node where you install Continuous Delivery for PE.

DEPRECATED: Support for external databases is deprecated, and will be removed in a future release.

Database configuration Default port number
PE-PostgreSQL (local) 5432
⛔ MySQL (external) 3306
Amazon DynamoDB (external) 443

Continuous Delivery for PE Docker container configuration

Continuous Delivery for PE is run as a container in Docker. When you install the software, a PE-PostgreSQL database is created for you.

Diagram showing the configuration of a CD4PE server. The software is run as a container in Docker, and communicates with the PE-PostgreSQL database over port 5432.

Use these environment variables to customize the Continuous Delivery for PE container:
Environment variable Explanation
ANALYTICS Optional. To opt out of analytics data collection, include -e ANALYTICS=false. To learn about what data we collect, see Analytics data collection.
DUMP_URI Required. How to address port 7000 of this container, which is the endpoint used by the Continuous Delivery for PE web UI to connect to the correct instance of the Continuous Delivery agent service. In a typical installation, this value is dump://localhost:7000.
DB_ENDPOINT Required if using an external database. The mysql:// or ddb:// endpoint used to connect to your database. For example, mysql://samplehost:3306/cdpe.
DB_USER and DB_PASS

Required if using an external database. Credentials for your database user.

For MySQL: Login credentials for your MySQL user. For security purposes, the database user you select should be able to connect to only this database.
For Amazon DynamoDB: Access and secret keys for your DynamoDB user.
Important: Make sure you generate credentials with full create, read, update, and delete permissions for DynamoDB resources.
For security purposes, select a database user you select who can connect to only this database.
DB_PREFIX Optional. When starting up, Continuous Delivery for PE creates tables in MySQL or DynamoDB. If you'd like the tables to share a prefix, such as cdpe-, enter it here.
Tip: If you wish to simulate a fresh installation of a given version of Continuous Delivery for PE, entering a new database table prefix causes all the database tables to regenerate.
PFI_SECRET_KEY Required. A 16-byte secret key used for AES encryption of secrets (such as PE access tokens) supplied to Continuous Delivery for PE.

If you're a *nix user, generate this key by running:

dd bs=1 if=/dev/urandom count=16 2>/dev/null | base64
If you're a Windows user, generate this key by running:
$randomBytes = New-Object Byte[](16)
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($randomBytes) 
$encodedBytes = [System.Convert]::ToBase64String($randomBytes)
The Continuous Delivery for PE container exposes these ports, which can be mapped to any ports of your choosing:
Port number Port use
8080 Web UI (non-SSL access)
8443 Web UI (SSL access)
8000 Backend services
7000 Continuous Delivery agent service