TrustRadius: an HG Insights company

Perforce Puppet

Score8.5 out of 10

58 Reviews and Ratings

What is Perforce Puppet?

Puppet Enteprise is an IT automation and configuration management solution that enables users to manage and automate infrastructure and complex workflows. The vendor states Puppet Enterprise combines both model‑based and task-based capabilities in a way that enables organizations to scale their multi-cloud infrastructure as their automation footprint grows, with more flexibility from both agent-based and agentless capabilities.

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

Is Puppet the right tool for the jump?

Pros

  • Maintain configurations
  • Create a more organized look at what it takes to run a particular application
  • Automate deployments

Cons

  • Coming from Chef, I was much more used to everything being executed from the top down, Puppet executes actions at random and so if you need something like a directory to be created before a file is placed you will need to explicitly declare the order of execution.
  • Coming from Chef I also learned to love the knife command, this allows you a few things, but a very valuable action allowed by the knife command is the ability to list nodes that are currently running Chef.
  • The ability to use commands across multiple host in parallel(once again, a knife command).

Return on Investment

  • Cut deployment times down to around 1 hour from 4-5 hours.
  • Allows us to get a fully running system up from scratch in around 30 minutes.
  • Allows for a more clear view of what is required to get a host running.

Alternatives Considered

Chef and SaltStack

Other Software Used

Kubernetes, Chef, SaltStack

Puppet: No strings to hold me down, to make me fret, or make me frown

Pros

  • Provides a reliable mechanism for deploying infrastructure-as-code, especially when integrated with source control (such as Git).
  • Manages system configuration drift to provide greater stability and system up-time; the same configuration-as-code can be pushed out over and over.
  • A strong asset when moving teams towards DevOps by providing development a way to take control of their own assets.

Cons

  • A bit of a steep learning curve but something that can be easily understood once a few basics are grasped and use of Puppet is put into practice.
  • Does not fit well with existing infrastructure but that is not necessarily a failing with Puppet but can require a radical shift in thinking and procedures to reliably implement.

Return on Investment

  • Allows our infrastructure teams to focus on other tasks besides system maintenance and constant configuration drift.
  • Gives our development teams a way of reliably knowing that each development environment is similar.

Alternatives Considered

Chef and Ansible

Other Software Used

XL Deploy, XL Release, JIRA Software, Atlassian Confluence

The most robust, battle tested, and affordable automation software available!

Pros

  • Provides a clear map of how a system is configured
  • Eases the creation of a system in a specific cluster as it is scripted in code
  • Simplifies configuration changes to a cluster or to every system such as rolling out vhost configurations, updating ldap roles, NFS mounts, etc
  • The syntax is very easy to read and carries a lot of fluidity once the language is learned.

Cons

  • It is occasionally squirrelly such as if I want a tarball to decompress once, I have to do run a exec command and onlyif => 'test ! -d /directory_name'.
  • I cant for the life of me figure out how to execute it based on environment(production, development, staging) so I am still using puppet 3.7 that utilizes manifest nodes. I would like to utilize puppet 4 because it supports Lambdas and a very Ruby-like syntax for iterations but it requires the use of environments which we do not need. It would be nice to allow for both methods(manifest nodes AND environments) like 3.7 supported.
  • It would be nice if the language still supported inline ruby. The new generation language is great for basic tasks but being able to do things like pulling data from a MariaDB database and utilizing that data in a manifest is very nice when operating at scale. We personally do not need it but I can see that being something very useful for those who code their own front ends for larger organizations.

Return on Investment

  • We utilize Puppet Community Edition and coded in some enterprise features our self so we certainly haven't lost any money at all by utilizing it and the time saved in provisioning has been invaluable.

Other Software Used

Red Hat Ceph Storage, Nutanix Acropolis, Elasticsearch, Nutanix, VMware ESXi

The Power of Puppet

Pros

  • Create a specific role based server from a vanilla provisioning template and maintain configuration state via Puppet automated catalog runs.
  • Add new functionality, services or configuration data to all servers or a subset of servers without ever needing to log into them.
  • Integrates seamlessly into other server life cycle technologies such as The Foreman and Mcollective for even greater management and automation.

Cons

  • Steep learning curve for first time users.
  • The complexity can get a little overwhelming in a more collaborative deployment methodology across multiple platforms and data centers.
  • Some external changes to Puppet like the new Puppet 4 architecture can cause considerable time consuming migration efforts especially if you have a lot of legacy classes and configuration that do not conform readily to the new design.

Return on Investment

  • Less time spent doing simple repetitive server maintenance tasks.
  • Server to Admin ratio is dramatically increased when using Puppet automation.
  • Initial setup and implementation can be time consuming if you need/want a "zero impact" integration.