These are intended to be more inspirational than prescriptive. If this list prompts a different idea, that's even better than snagging one of these. But do feel free to run with anything on this list. Before claiming one, you might consider asking around in #contributor-summit to see if you can join forces with someone already working on it.
-
Puppet 6 introduces Deferred functions, which are evaluated during catalog application time -- eg, agent-side functions. This provides functionality for all kinds of exciting things: secret management, data that must be looked up by the agent, registering with some service that responds with an authentication token, etc. What kind of exciting things could you think of?
- Suggested functions:
- Retrieve secrets from AWS secret manager
- Generic output of a
curl
command function
- Resources:
- Follow an example project at puppet-vault-demo
- Read a talk describing the appropriate use cases
- Chat with the Core Puppet team during their Office Hours
- Suggested functions:
-
Bolt recently added the functionality for dynamically generating the nodeset. This means that you can now choose targets for your task or plan based on logic evaluated at runtime. Do you want to run an action all all your EC2 nodes based on a certain tag and uptime? Do you want to write other logic to target certain k8s containers?
- Resources:
- See the pre-docs in the Bolt repository
- Chat with the Bolt team during their Office Hours
- Resources:
-
Types and Providers have long been a dark art. Recently though, we've released a new library to simplify the job. If there's always been that job you knew was suited for a type and provider, but didn't have the time to learn how -- now's the time. Build a new T&P or port an existing defined type to the Resource API.
- Resources:
- See the developer docs
- Chat in the #puppet-dev Slack channel
- Resources:
-
Fully automating the lifecycle of your Puppet module - it's the stuff dreams are made of. Ok, maybe that's only true for some of us! But if that sounds exciting to you, the Forge now has API endpoints for complete module management. What does that mean? You can now publish, delete, or deprecate any of your modules directly through the Forge API. Wouldn't it be fun to add that support to the forge-ruby gem too?
- Resources:
- Read the API docs
- Chat with the Forge developers in the #puppet-dev Slack channel
- Resources:
-
With the most recent release of Resource API Transports you can leverage the same code with Bolt and Puppet to integrate APIs and devices that can't (or shouldn't) run an agent into your configuration management. Do you have one of those systems or APIs that always get in your way because they don't integrate into Puppet and Bolt? Get it fixed!
- Resources:
- See the specs
- Simple example module
- Complex example module
- Chat in the #puppet-dev Slack channel
- Resources:
-
Puppet Server now comes with a new CA command line tool and gem. It's far more reliable and is fully API driven, which leads to all kinds of neat possibilities.
- Suggested projects:
- It might be nice to have an open source graphical/web certificate management interface.
- Are there any APIs that you think should be added or improved?
- Perhaps you could make it possible to store the CA on object storage and make the Puppet stack fully "cloud native" and stateless
- Resources:
- See the API docs
- Chat with the Puppet Core team during their Office Hours
- Chat in the #puppet-dev Slack channel
- Suggested projects:
-
Do you have a favorite open source project? How are its docs? What about that one project? You know, the one with the default
README.md
created by GitHub... Maybe your project for this month could be writing documentation and a user guide.- Resources:
- See the tutorial on writing a great README
- Chat with the Docs team during their Office Hours
- Resources:
-
We've been making a lot of advances in the Puppet Developer Experience with the PDK, the VSCode extension, and other tools. We'd love your help in creating an even better experience.
- Suggested projects:
- Help update
puppet-strings
to match all the great new Puppet language features. - Add documentation generation to the PDK using
puppet-strings
. - Build basic acceptance test generators using the smoke tests in the
examples
directory.
- Help update
- Resources:
- See the
puppet-strings
docs - See the PDK
CONTRIBUTING.md
guidelines - Chat with the PDE team during their Office Hours
- See the
- Suggested projects:
-
Creating a
Puppetfile
is sometimes a tedious exercise. It would be much better if dependencies were resolved for you automatically. For that matter, there are many places in the Puppet ecosystem which would benefit from a dependency resolver. Perhaps you could build this in such a way that r10k could use it, the PDK could use it, etc. Maybe you could even wire up an external library to do the hard work for you.- Resources:
- Chat in the #puppet-dev Slack channel
- Chat with the PDE team during their Office Hours
- Resources:
-
One of our SREs is creating a pipeline to make it easier for community members build the Puppet stack. One of the goals of the project is to make it easier to get Puppet and Bolt running on your Raspberry Pi devices. Would you like to get involved? The repository is pretty sparse now, but he's working on some content and contribution guidelines.
- Resources:
- See the repository
- Chat with Gene Liverman (genebean), on the project board or in Slack.
- Collaborate during Community Pipeline Project Office Hours
- Resources:
-
One thing that has historically made Hiera hard to use is that it's not always clear what information is possible to retrieve for any given nodes combination of facts. With the v5 redesign, it's now theoretically possible script a way for
puppet lookup
to retrieve all that information by retrieving class and parameter data from the information service and then resolve each value. No such tool exists yet... perhaps you could build it?- Resources:
- See the information service API docs
- Chat with Henrik during his Advanced Language Office Hours
- Resources:
-
PQL is awesome and powerful, and like many things powerful it can be difficult to use. It would be great to have a graphical PQL editor and/or explainer. You can see some neat examples of something similar at https://regexr.com or at http://buildregex.com.
- Resources:
- Chat in the #puppet-dev Slack channel
- Resources:
-
Port the
augeasproviders_core
library to the new Resource API to be used as an alternative base to build parsing providers.- Resources:
- Chat in the #puppet-dev Slack channel
- Resources:
-
The Puppet Server stack has been containerized, which opens us up to all sorts of nifty ideas. Perhaps you could create an auto-provisioned demo/training environment using Pupperware. What else can you imagine?
- Resources:
- See the Pupperware docs
- Chat in the #puppet-dev Slack channel
- Resources:
None of these pique your interest? Check around in Slack to see if you can join an existing project.