Calling a software company that was founded in 2005 an “oldie but goodie” might sound a little ludicrous. After all, AppDynamics, founded in 2008, was not far behind. But technology advances at a dizzying pace, and it’s not unusual for “older” tech of a decade or so to feel antiquated, even quaint.
So does Puppet, one of the earliest infrastructure configuration management tools, still matter in 2018? The answer is a resounding “yes.” Puppet remains highly popular, and you don’t need an extensive programming background to use it. Its module/model approach doesn’t require significant expertise in the system that Puppet is automating.
When referring to infrastructure-as-code, I see Puppet as an eponym. “Puppet Manifest” for automation is like “Kleenex” for a tissue or “Coke” for a soda—a.k.a. an eponym in the DevOps community.
Puppet, the DevOps Master
Some of the best DevOps-centric studies are Puppet’s annual State of DevOps surveys, which chart DevOps trends and practices across the globe. When you compare these reports from the past few years, the phenomenal rise of the DevOps movement becomes clear. For instance, the 2017 study found the gap between high-performing teams and “low performers” is shrinking fast:
Between 2016 to 2017, the gap for frequency of code deployments narrowed: High performers are still shipping code as the business demands, while low performers went from shipping between once per month and once every six months in 2016, to shipping between once per week and once per month in 2017. Low performers in 2017 have also reduced their lead time for changes: from between one month and six months in 2016 to between one week and one month. This change does not mean that high performers are no longer performing as well. It simply means that low performers are doing better with throughput than they were, on average, and we applaud them for this improvement.
Tech moves fast. And the infrastructure-as-code movement is a key pillar of DevOps because of its ability to be consistent and repeatable across environments.
In addition to maintaining a healthy ecosystem of products, Puppet backs several open source projects and recently received additional funding from a Cisco-led investment group. The Puppet platform on top of IaC automation has the ability to chart topology, manage tasks, be a container registry, and automate application deployments. Puppet also maintains Puppet Forge, a repository/gallery for modules.
There are many great tutorials and articles on how to get your first Puppet deployment up and running. If you’re new to Puppet, here are a few terms and links to make you dangerous.
Puppet has a master-agent architecture. A centrally located Puppet Master will manage the Puppet Agents.
Puppet Enterprise brings additional features and support for security, orchestration and node management.
First Puppet Tasks
Once you’ve installed Puppet, check out this fantastic example from Digital Ocean on how to configure a LAMP stack on Ubuntu. (TL;DR—you can create manifests and/or modules to complete these tasks.) The Digital Ocean tutorial provides some Puppet code basics and strategy (e.g. multi-manifest/module).
Puppet and AppD Together: The Art of the Possible
Puppet is a great platform for automating the deployment of AppDynamics Agents. As enterprise topologies become ever more complex, the metrics that AppD provides can help you administer an infrastructure deployment/reprovisioning orchestrated by Puppet.
In addition to providing a wealth of information on the health of an application, AppDynamics can validate that SLAs/SLOs are being met.
Blue-Green Deployment Validation
My AppD colleague and fellow tech evangelist, Chase Aucion, conjured up this concept as the art of the possible—aiming for pragmatic solutions, not perfectionism. Discounting other platforms such as a PaaS, if you have to roll your own blue-green deployment, readying an identical production environment for the idle state (green) may take forever without infrastructure automation. The old paradigm—doubling your production infrastructure for a deployment/release, only to tear down one side once testing is complete—isn’t the answer. So how do you make sure the new release is meeting your SLAs/SLOs? With infrastructure laid down by Puppet and validated by AppDynamics, you’ll achieve the art of the possible.
Scale goes in both directions: Scaling up when load increases, and scaling down/reprovisioning when load doesn’t warrant the capacity. By delegating provisioning application infrastructure to the Puppet stack—with metrics provided by AppD—you can decide if additional infrastructure is needed to support SLAs/SLOs, or if certain infrastructure can be reprovisioned for other use.
Happy Puppet Master
As systems become critical in our pipeline, we must ensure they are performant. Having the Puppet Master (server) becoming a bottleneck would be problematic. The Puppet Master is written in C++, Clozure and Ruby. AppDynamics has the ability to monitor C++-based applications. It can validate the usage of number of Puppet Masters, as well as nodes in a high availability-based deployment.