A review from a user who maintains a lot of servers.
Use Cases and Deployment Scope
We host and manage 'a lot' of servers. Many years back without automation we used to run scripts to spin up servers and before that, we used to spend hours doing everything manually on bare metal servers. Once automation came in we initially started playing with Ansible to test the waters but what really grabbed our attention was the pull ability of the Puppet compared to the push ability of ansible that really got us into a Puppet. For example, when we were still new we had to push configs to each server, and if there is a change on the box we have to push it manually again to all the boxes. So this was not really scalable for us. That's where we started using Puppets. With puppets agents, all we had to do was maintain a code repo and Puppet will pull the configs from the repo. That was the one feature that we were looking for at that time.
Pros
- Puppet manages all our server's "state" so if there is an unauthorized change on the server then in a set interval puppet will run and reset the "state" of the server back to a good working condition. this helps us avoid unauthorized change and also maintains a healthy server.
- Puppet helps us keep a centralized repo of all the configs that we need to push to the endpoints. Spinning up new servers in AWS/VMWARE/AZURE is a breeze with Puppet.
- Puppet servers check into our central repo for changes on the code and if it finds any change it will immediately apply the change to the servers. So as admins we don't need to log in to any of the servers manually to make any changes.
Cons
- The setup of Puppet is a nightmare compared to ansible. Anyone watching a youtube video can easily set up ansible with minimal IT knowledge. All one needs is the source IP addresses and we are good to go. Setting up Puppet is a more hands-on task and pushing the puppet agents to all the boxes is another issue. If the installation and setup were simplified like ansible that would attract a lot of people to this platform
- The syntax of the code for Puppet is not as easy as ansible. Ansible simply follows a YAML format and it's like typing in normal English. Even complicated tasks can be written by just understanding YAML syntax. Perhaps Puppet needs to revisit the lanugage used and try to come up with a much simpler lanugage for writing code. This will make day-to-day usage easier.
Most Important Features
- The most important feature that puppet offers is its client agents. These tiny programs are the workers that help us maintain our infrastructure. They keep polling the centralized server and maintaining our servers.
- Puppet helps us audit all changes that are being done to the server. The reason is once the Puppet agent is installed if there is a change in state, Puppet will automatically revert the change back to the previous state. So the only way to make changes is through the Puppet centralized repo which can even be hosted in Github and sent via Jenkins.
- Puppet makes spinning up servers and services very easy. For examply you can write a code to spin up a server once and then you can use the same code a hundred times to spin up the same server. You dont need to do anything via console or through the UI.
Return on Investment
- With all the DevOps and automation that we have going on, we save a ton of time on the configuration of the server. It's safe to say that configuring servers via console or via UI is a thing of the past.
- We try to get all the things done by using a centralized repo (GitHub). Puppet is one tool that actually gets the actual work done.
- The small amount that we spent on purchasing premium Puppet is completely justified because of the time and effort that this tool actually helps us save.
Alternatives Considered
Red Hat Ansible Automation Platform
Other Software Used
Red Hat Ansible Automation Platform, Ubuntu Linux, Red Hat OpenShift



