That said, Puppet shifted traditional infrastructure management more towards software development because we are developing Config as Code, even if it’s declarative.
This shift brings new challenges. A Puppet codebase can become too big, complex, and monolithic. We have to test our code, but how should we do it, and when?
We’ve seen many cases where there is no Unit test (Rspec) for puppet modules and manually executed Catalog compilation tests that could take hours or even days, depending on the size of the codebase.
At first sight, CI/CD might not be relevant for Puppet code development because we’re not per se ‘building’ artifacts. Also, Puppet is about run-time configuration management, not build-time.
But if you look closer and apply the principles of CI/CD to Puppet code development, then there are a lot of benefits we can enjoy.
The main advantage is testing, or even better, automated testing! For both Puppet modules and Puppet Control repositories, we can use a pipeline that does all kinds of testing before the code is released for deployment.