Puppet: its pros and consEzeelive Technologies
What is Puppet?
Puppet is a software configuration management tool that is used mainly by system administrators and cloud administrators today. It helps an administrator declare the system configuration and apply it across one or many systems.
It is useful in growing complexity of IT infrastructure management and the increasing number of mundane, routine tasks that are involved in almost any setup. Puppet is an open source tool under the Apache License 2.0 license.
Traditionally, system administrators configured computers in a network separately, by carrying out the setup steps on each system locally. As the server-client architecture boomed, it was necessary to configure servers remotely and quickly.
It was still simple enough to be done by a human and by that time people started using some scripts to automate small chunks of tasks.
As the number of servers grew and the list of tasks to do a configuration grew with it, bigger teams were employed to administrate those servers. But there were too many tasks that now which were mundane but important for a successful configuration.
These problems were set to grow to bigger volumes with the advent of cloud computing. Also, servers started becoming more disparate with different platforms and operating systems coming into the picture.
Puppet solves these problems by helping an administrator ‘declare’ what configuration they want to apply. Puppet applies those configurations quickly and sends a report on the actions it took.
Puppet also has an ‘abstraction’ layer which helps a user to specify commands in one language that are translated to the specific operating system and platform. It is very useful to manage modern architectures with the cloud in the picture as well.
How it works
Puppet has a configuration language, which is simpler than a traditional programming language. It is more like a markup language such as XML.
A user uses this language to declare the items to be configured and the actions to be taken. This collection of instructions is saved as a ‘manifest’ file.
While the user is doing this, they do not need to worry about the actual underlying platform. This is due to the resource abstraction feature of Puppet.
To execute the configuration, Puppet picks the instructions while maintaining a graphical representation of the resources it has to act on (with their interdependencies). The configuration to be achieved (called the desired state) is achieved and the result of it is sent across to the server.
Advantages of puppet
Puppet is one the most popular configuration management tools around and has plenty of advantages.
1. Puppet is open source
It is important for a technology to be open source and hence be extendable. Puppet can be extended to build custom libraries and modules to suit the needs individual project.
2. Puppet allows resource abstraction
It is possible for a configuration task today to be needed across a range of servers that all have different operating systems and other platform specific identities.
Hoping that a system administrator actually remembers the commands and syntax of the individual platforms and reproducing that error-free is hoping for a lot.
Puppet doesn’t need one to do that since it derives the system specific data using a utility called Factor. Factor helps Puppet know the system details like operating system, IP address etc. that helps Puppet achieve abstraction.
3. Puppet does a transaction only if needed
When the number of servers is as large as some systems have today, it is possible to encounter some form of redundancy. It is possible to have an instruction that doesn’t bring about any change in the system.
Puppet has the feature of ‘idempotency’ which means it applies the changes asked for only when the changes would actually change something in the system. If the changes asked for are already done, Puppet doesn’t do anything. This is useful for achieving efficiency.
4. Puppet boosts manageability and productivity
Puppet achieves significant improvements to the productivity of the system administrators. They are freed up from their mundane tasks and can actually concentrate on more advanced tasks that require human intervention. It also helps the server become more manageable with lesser effort and time.
5. Puppet is cross-platform
Puppet works on Fedora, RHEL, Debian, Gentoo, Solaris, OS X, and Windows. It helps the user to cover a wider range of platforms which makes more servers come into the configuration fold.
6. Puppet’s language is clean and easily learnable
Puppet’s declarative language is quite easy like writing an XML file. A person with limited programming knowledge can easily pick it up.
7. Puppet has cron-like support
Puppet can also help schedule specific maintenance actions on a periodic basis. This helps the administrators carry out some cron jobs in the maintenance cycle.
8. Puppet has override mechanism
The language supports a mechanism to override an instruction with a specific one for a different scenario. This is useful when exceptions are to be made while applying the configuration.
9. Puppet has an active community
Puppet being popular has an active community with plenty of active discussion boards, forums and experts willing to help out.
Disadvantages of Puppet
For all its advantages, Puppet has a few drawback as well.
- Ruby can be complex to understand
- If one wants to extend Puppet, one has to work with Ruby (which Puppet is written in) and it may not be easy as Ruby is not hugely popular.
- Rapid releases and evolution
- Puppet releases new versions quite fast and it can be quite a task to keep up with the new features and breaking changes (if any).
- Puppet doesn’t have comprehensive reporting features
- It is not possible to look at comprehensive reports on the transactions that Puppet carries out. Those features are still upcoming and not very mature.
- Puppet may not be suitable for smaller setups and businesses
- Smaller setups have seen more success with Chef and Ansible and do not prefer Puppet to avoid complexity.
- Puppet can be difficult for those new to programming
- This is not exactly a con but people who do system administration may not be versed with programming. They can find puppet a bit daunting to start with.
Puppet is a powerful configuration management tool that is automating the tasks of server management both on the premise and on the cloud. Puppet is a great tool to have on the stack to also ensure continuous (and quicker) delivery.