A review from a user who maintains a lot of servers.
Use Cases and Deployment Scope
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.



