To configure Code Manager, first enable Code Manager in Puppet Enterprise (PE), then set up authentication, and test the communication between the control repository and Code Manager.
Complete the following steps to enable and configure Code Manager.
Upgrade from r10k to Code Manager
To upgrade from r10k to Code Manager, you must disable the previous r10k installation.
You must complete the following pre-requisites when you upgrade from r10k to Code Manager:
If you used any previous versions of r10k:
When you use Code Manager, it runs r10k in the background. You cannot directly interact with
r10k or use the
Enable Code Manager
Enable Code Manager to connect your primary server to your Git repository.
In the console, in the PE Master node group, set
parameters for the
code_manager_auto_configure- Specify true to enable Code Manager.
r10k_remote- Enter a string that is a valid SSH URL for your Git control repository. For example: "git@<YOUR.GIT.SERVER.COM>:puppet/control.git".Note: Some Git providers, such as Bitbucket, may have additional requirements for enabling SSH access. See your provider's documentation for information.
"/etc/puppetlabs/puppetserver/ssh/id-control_repo.rsa". This is the path to the private key that permits the
pe-puppetuser access to your Git repositories.
Run Puppet on your primary server and all
If you run Puppet for your primary server and all compilers at the same time, such as with Run Puppet in the console, the following errors might display in your compilers' logs:
2015-11-20 08:14:38,308 ERROR [clojure-agent-send-off-pool-0] [p.e.s.f.file-sync-client-core] File sync failure: Unable to get latest-commits from server (https://primary.example.com:8140/file-sync/v1/latest-commits). java.net.ConnectException: Connection refused
Ignore these errors while the primary is starting. These errors display when Puppet Server restarts as the compilers poll for new code. These errors should stop when the Puppet Server on the primary server finishes restarting.
Set up authentication for Code Manager
To securely deploy environments, Code Manager needs an authentication token for both authentication and authorization.
To generate a token for Code Manager:
- Assign a user to the deployment role.
In the console, create a deployment user.
Tip: Create a dedicated deployment user for Code Manager use.
Add the deployment user to the Code Deployers
Note: This role is automatically created on install, with default permissions for code deployment and token lifetime management.
- Create a password by clicking Generate Password.
- Request an authentication token for deployments
Request an authentication token for deployments
To enable secure deployment of your code, request an authentication token for the deployment user.
By default, authentication tokens have a one-hour lifetime. With the
expiry permission set, you can change the lifetime of the token to a
duration better suited for a long-running, automated process.
From the command line on the primary server, run
puppet-access login --lifetime 180d. This command both requests the token and sets the token lifetime to 180 days.
- Enter the user name and password of the deployment user when prompted.
The generated token is stored in a file for later use. The default location for storing the token
~/.puppetlabs/token. To view the token, run
Test the connection to the control repository
Verify if Code Manager connects to the control repository.
puppet-code deploy --dry-run.
When the control repository is set up correctly, the command fetches and displays the number of environments in the control repository.
Environments whose names contain invalid characters are excluded from the number of environments in the control repository. Only environments set up correctly are counted. Check the Puppet Server log for details about the errors.
Test Code Manager
Test Code Manager by deploying a single test environment.
puppet-code deploy my_test_environment --wait
This deploys the test environment, and then returns deployment results with the SHA (a checksum for the content stored) for the control repository commit.
If the environment deploys and returns the deployment results, Code Manager is correctly configured.
If the deployment does not work, review the configuration steps, or refer to troubleshooting.ditamap for help.
After Code Manager is fully enabled and configured, you can trigger Code Manager to deploy your environments.
There are several ways to trigger deployments, depending on your needs.
Code Manager settings
After Code Manager is configured, you can adjust its
settings in the PE Master node group, in the
These options are required for Code Manager to work, unless otherwise noted.
- Specifies whether to autoconfigure Code Manager and file sync.
- The location, as a valid URL, for your Git control repository.
- The path to the file containing the private key used to access all Git repositories. Required when using the SSH protocol; optional in all other cases.
- Optional proxy used by r10k when accessing the Forge. If empty, no proxy settings are used.
- Optional setting that specifies whether code is updated in versioned code directories instead of blocking requests and overwriting the live code directory.
falseNote: For more information, see Deploying Code without blocking requests to Puppet Server
- Specifies whether and how long environments are cached, which can
significantly reduce CPU usage of your Puppet Server. You can specify any of these values:
0– no caching
unlimited– all environments are cached forever
- a length of time for environments to be cached, for example
- Default when Code Manager is enabled:
- Default when Code Manager is not
- Indicates whether a length of time specified by the
environment_timeoutbegins when the environment is created (
from_created) or when it's last used (
To further customize your Code Manager configuration with Hiera, see Customize Code Manager configuration in Hiera.