The puppet agent is a collection of software that is required for puppet and its dependencies to run. This includes puppet, facter, and other Puppet software, but also vendored dependencies like ruby, curl, openssl, and more.
This repository contains configuration to build puppet-agent and the facter gem for all of Puppet's supported platforms using vanagon, a packaging utility.
The full list of software components built into the puppet agent and the facter gem can be found in their project definitions, and each of the components has its own configuration in the components directory.
Components that are not developed by Puppet (like ruby, curl, or openssl) are built separately into a tarball and consumed here in the puppet-runtime component. See the puppet-runtime project for more information and a full list of the vendored dependencies it provides.
pxp-agent is built separately into a tarball and consumed here in the pxp-agent component. See the pxp-agent-vanagon project for more information.
Ruby and bundler are required to build puppet-agent. The Gemfile specifies all of the necessary ruby libraries to build a puppet-agent package. Additionally, puppet-agent requires a VM to build within for each desired package.
The location of Vanagon in the Gemfile can be overridden with the environment variable VANAGON_LOCATION
. Can be set prior to bundle install
or updated with bundle update
.
0.3.14
- Specific tag from the Vanagon git repohttps://github.com/puppetlabs/vanagon#version
- Remote git location and version (can be a ref, branch or tag)file:///workspace/vanagon
- Absolute file pathfile://../vanagon
- File path relative to the project directoryBy default, headers and other files that aren't needed in the final puppet-agent package will be removed as part of the cleanup component. If you'd like to keep these files in the finished package, set the DEV_BUILD
environment variable to some non-empty value. Note that this will increase the size of the package considerably.
If you wish to build puppet-agent yourself:
bundle install
to install required ruby dependencies.location
and version
in the puppet-runtime
component json file as follows:
location
should be a file URL to your local puppet-runtime output
directory, for example: file:///home/you/puppet-runtime/output
version
should be the version of puppet-runtime that you built; You
can find this value at the top level of the json metadata file produced by
the build in your puppet-runtime output directory.
NO_PXP_AGENT
ENV variable.
If you want to build an agent package that also contains pxp-agent you need to
update the location
and version
in the pxp-agent
component json file as follows:location
should be a file URL to your local pxp-agent- output
directory, for example: file:///home/you/pxp-agent-vanagon/output
version
should be the version of pxp-agent that you built; You
can find this value at the top level of the json metadata file produced by
the build in your pxp-agent output directory.Now use vanagon to build the puppet-agent. Run the following:
bundle exec build <project-name> <platform> <vm-hostname>
Where:
puppet-agent
),el-7-x86_64
), andTracking branch (main + stable):
Guidelines on Merging Between Branches
Generally, no PR is needed for routine merges from stable to main, but a PR is advised for other merges. Use your judgment of course, and put up a PR if you want review.
Note that for all merges from main or stable, the merge should pick up:
But never:
Here's a sample snippet used for a stable -> main merge:
git merge --no-commit --no-ff stable
for i in {hiera,facter,puppet,pxp-agent,cpp-pcp-client}; do git checkout main -- configs/components/$i.json;done
git commit -m "(maint) Restore promoted components refs after merge from stable"
File issues in the Puppet Agent (PA) project on the Puppet Labs Jira site. Issues with individual components should be filed in their respective projects.
Puppet agent is licensed under the Apache-2.0 license.
See CODEOWNERS